Operator requirement: the resume protocol's twin. A milestone closes only through an 8-step sweep that OPENS with a QA gate (acceptance criteria re-verified with evidence, test suites green — golden-set bars, injection fixtures, linter suites incl. seeded-wrong provenance FAILs, idempotency replay; catalog status flips backed by proving- protocol evidence; can't pass QA -> shed scope, don't close) and ENDS with doc-surface QA (link/anchor check, deprecation grep of the claims the milestone retired, fresh-reader smoke test by a context-free subagent). In between: STATUS flip, roadmap re-baseline (diamonds never move), no-tombstone truth-pass of leaves, AGENTS.md/SKILL.md/guidebook sweep, outward loop (ADRs, memories, second-brain REX). Reader's half: trust order live system > code > STATUS > leaves > memories; stale Last Updated = suspect. Summarized as a house rule in factory AGENTS.md, canonical checklist in the PRD STATUS. Co-Authored-By: Claude Fable 5 <[email protected]>
11 KiB
vibe > PRD > AI back-office > STATUS
STATUS — implementation tracker
Status: 🟢 Current — backlog decomposed into issues (2026-07-11) Last Updated: 2026-07-11 Up: AI back-office hub Related: POC plan · Roadmap (dated plan; actuals and slips land here)
Phase tracker
| Phase | Scope | State |
|---|---|---|
| 0 — Foundations | read skills, sandbox + promote, backups, snapshots, bank reco, email ingest, Telegram gateway MVP | ✅ shipped pre-PRD (ledger below) |
| 1 — Flagship pipeline | POC-1 + POC-5 | ⬜ decomposed → erp milestone P1 (erp#38–45, #47) |
| 2 — Urgent compliance | POC-6 — hard deadline 2026-09-01 | ⬜ decomposed → erp milestone P2 (erp#46) |
| 3 — Standing fleet | POC-2, queue, digest + approval cards | ⬜ decomposed → erp milestone P3 (erp#48–50) + gateway#1/#2 |
| Ledger compliance (cross-cutting) | Dolibarr verifications | ⬜ decomposed → erp milestone (erp#51) |
| 4 — Money loops | POC-3, dunning, cash report | ⬜ decomposed → erp milestone P4 (erp#52–53) |
| 5 — Fiscal autopilot | POC-4, compliance calendar | ⬜ decomposed → erp milestone P5 (erp#54–55) |
| 6 — Emission era | e-invoice emission + e-reporting — hard deadline 2027-09-01 | ⬜ not yet decomposed (starts 2027-05; requirements captured by erp#46 deliverable 4) |
Backlog map
Every phase is decomposed into self-contained issues (context, deliverables, acceptance criteria, dependencies, PRD links). How a future session resumes: pick the top unblocked issue of the earliest open milestone — nothing else is needed; the issue body carries everything. Cross-cutting decisions get their ADRs via factory#22.
| Repo | Issues |
|---|---|
| erp | P1: #38 fleet scaffold+AGENTS.md (D8) · #39 golden set+injection fixtures · #40 invoice-extract atom · #41 provenance checker · #42 compliance linter · #43 GED attach op · #44 idempotency keys · #45 POC-5 routing bench (D5) · #47 POC-1 exit gate — P2: #46 POC-6 Qonto-as-PA (D4) — P3: #48 watchdogs T13/T14 · #49 T17 second-brain hooks (D7) · #50 POC-2 Pi sentinel (D6) — Compliance: #51 Dolibarr verifications (FEC/BlockedLog) — P4: #52 POC-3 reco+payments · #53 T05 client invoice (D3, ⚠️ July manual ~07-23) — P5: #54 fiscal profile+calendar+T11 · #55 POC-4 TVA dry-runs — Ops: #56 known-patterns fix · #57 bucket C + document gaps |
| telegram-gateway | #1 Postgres durable queue (D1) · #2 daily digest + approval cards |
| factory | #22 ADRs as decisions close (D1/D2/D4/D6/D7) |
Closure protocol — per milestone
The resume protocol tells a session where to pick up work; this one keeps the doc surface currently true when work lands. Docs describe intent; this file + git describe reality. A Gitea milestone is closed only after the sweep — and the sweep starts with QA, because nothing gets documented as done before it is proven done:
- QA gate — verify before documenting. (a) Every closed issue's acceptance criteria re-verified with evidence linked (eval scores, run journals, exit-gate results — not memory of them); (b) the milestone's test suites green: golden-set regressions at their bars, injection fixtures quarantined, linter suites behaving (forbidden manifests rejected, seeded-wrong provenance fixtures FAIL), idempotency replay no-op, watchdog/heartbeat checks where the milestone ships standing loops (QA strategy); (c) any 🧪→✅ flip in the agent-catalog backed by its proving-protocol evidence. A milestone that can't pass its own QA doesn't close — it sheds scope back into open issues.
- Flip the phase row above (✅ + date + PR links) and prune the backlog map of closed issues.
- Re-baseline the roadmap at the boundary: mark the stream done, re-date downstream engineering bars if they slipped — regulatory diamonds never move; slips shed scope instead. Bump its Last Updated.
- Truth-pass the affected leaves (no-tombstone — rewrite as currently true, no "previously/now"): the task inventory
Today:/Target:lines the milestone changed; the agent-catalog matrix;not yet/candidate claims in architecture, model-fleet, compliance. Bump Last Updated only on files whose claims changed. - Sweep the orientation layer: repo
AGENTS.mdfiles (map rows, "not yet landed" pointers), touchedSKILL.mds, and any guidebook page mapping a changed component (house same-change rule). - Doc-surface QA — mechanical + fresh-reader. (a) Run the link/anchor/convention check over the PRD tree (the
prd_checkpattern: every relative link + heading anchor resolves, breadcrumbs, stamps) — zero broken; (b) deprecation grep: list the claims the milestone retired (read them off the closed issues — e.g.frequency=0, "not yet landed", "no fleet wiring") and grepvibe/+ the repos'AGENTS.md/SKILL.mdfor them — zero hits or fixed; (c) fresh-reader smoke test: a context-free subagent reads only STATUS + the repoAGENTS.mdand must answer "what shipped, what's next, what would you verify before trusting?" correctly — if it lands on a stale claim, real sessions will too. - Close the loop outward: ADRs for decisions the milestone settled (factory#22), agent memories updated or pruned, a REX note into the second brain (T17 once live).
- Only then close the Gitea milestone.
Between milestones, the continuous rule stands: a PR that makes any documented claim false updates that doc in the same PR — a change that leaves its docs stale is an incomplete change.
Reader's half — trust order. Any session, before acting on a versionable claim (a path exists, a flag's value, a status emoji): verify against live system > code/git log > this STATUS > PRD leaves > agent memories/plans. A page whose Last Updated predates the newest closed milestone in its area is suspect — verify before relying on it.
Foundation ledger (shipped pre-PRD)
The bricks this PRD builds on, in the erp, factory and tools repos:
| Brick | What it gives the fleet | Key PRs |
|---|---|---|
Read-only skill catalogue + bin/arcodange CLI |
invoices, payments, TVA (collectée/déductible/summary), thirdparty completeness, recurring templates, snapshots — the fleet's A3 read layer | erp (V1–V8 skill series) |
Multi-env: erp-sandbox live in-cluster |
the rehearsal environment (ADR 0002) | factory #15–#18, erp #11–#12, tools #2–#3 |
| Sandbox write skill (fiches, invoices, payments, avoirs) | the A2 write layer, host-guarded to the sandbox | erp #21, #22, #25 |
| Promote flow (manifests, business-key lookup, prod gate) | the ADR-0003 capstone: rehearse → review → human-gated prod apply (ADR 0003, factory #19) | erp #23, #24 |
| Deterministic payment↔bank linkage | transaction_id end-to-end: record with the feed id, reconcile by id (PASS 0) |
erp #26–#28 |
| Sandbox checkpoint lifecycle + CLI | iso-prod refresh, write-agent provisioning, .env relink |
erp #29, #30, #35 |
| Dedicated Dolibarr backup (daily CronJob, 10 y retention, tested restore) | the evidence/recovery floor | erp #31–#34, tools #5 |
| Bank reco + email ingest skills | Qonto/Wise feeds, Zoho books@/bureaux@ ingestion (read-only) |
erp (skill series) |
| telegram-gateway MVP | the human channel's transport (webhook echo proven; queue + async handlers roadmapped) | telegram-gateway repo |
| Second brain (Obsidian vault + automation) | the fleet's knowledge layer: PARA vault git-synced, sb.py jobs (digest / inbox triage / daily / Gitea-ingest) on the hermes cron ticker, local Ornith runtime, mcp-obsidian access |
SecondBrain repo |
PR log (this PRD)
| Date | PR | What shipped |
|---|---|---|
| 2026-07-11 | factory#21 | PRD authored: hub + task inventory + agent architecture + model fleet + challenges + POC plan + QA strategy. |