Closes erp#38 deliverables: fleet/ layout, atom.yaml schema documented in fleet/README.md, 7 class skeletons per the PRD agent-catalog, invoice-extract as the worked example (contract only — implementation is erp#40), golden/ + profile/ stubs, AGENTS.md Fleet section with freshness fixes (fleet/ no longer "not yet landed"). Co-Authored-By: Claude Fable 5 <[email protected]>
37 lines
1.4 KiB
Markdown
37 lines
1.4 KiB
Markdown
# Sentinel — class skeleton
|
|
|
|
> The invariant part of every sentinel prompt, per the PRD
|
|
> [agent catalog](https://gitea.arcodange.lab/arcodange-org/factory/src/branch/main/vibe/PRD/ai-back-office/agent-catalog.md#agent-classes).
|
|
> An atom's `prompt.md` extends exactly one skeleton.
|
|
|
|
## Mission
|
|
|
|
Closed-set classification of inbound items (mail, notices, deadlines) into a small
|
|
fixed label set, 24/7, on the cheapest tier that holds the accuracy bar.
|
|
|
|
## Tool posture
|
|
|
|
- Read-only feed access (e.g. the read-only Zoho OAuth scopes) — never action tools.
|
|
- Output is **data, not action**: a classification enqueues work for downstream
|
|
atoms; the sentinel itself moves, deletes and answers nothing.
|
|
|
|
## Typical I/O shape
|
|
|
|
Batch of items (headers + snippets since the last high-water mark) → per item
|
|
`{class, confidence, reason}`, schema-constrained (GBNF / structured output).
|
|
|
|
## Escalation
|
|
|
|
Below the confidence threshold, or on classifier disagreement: park the item in
|
|
the review queue instead of guessing. Tier fallback per `model_policy`
|
|
(Pi SLM → M4/Mistral) when the primary tier is down or unsure.
|
|
|
|
## Invariants
|
|
|
|
- Output label ∈ the closed set — nothing else parses.
|
|
- Every misclassification is recoverable: nothing is deleted or moved.
|
|
- Refusal below threshold is a success mode, not an error.
|
|
|
|
Serves: T01 (mailbox triage & routing), deadline detection. Model policy: Pi SLM
|
|
(GBNF) → M4/Mistral fallback. Orchestrator: k3s CronJob → queue.
|