[vibe](../../README.md) > [PRD](../README.md) > [AI back-office](README.md) > **STATUS** # STATUS β€” implementation tracker > **Status:** 🟒 Current β€” backlog decomposed into issues (2026-07-11); sharpened with per-issue Execution footers + splits #59/#60 (2026-07-12); **execution started β€” erp#38 shipped, D8 settled (2026-07-15)** > **Last Updated:** 2026-07-15 > **Up:** [AI back-office hub](README.md) > **Related:** [POC plan](poc-plan.md) Β· [Roadmap](roadmap.md) (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-plan.md#poc-1--supplier-invoice-end-to-end) + [POC-5](poc-plan.md#poc-5--model-routing-bench) | 🟑 in progress β†’ [erp milestone P1](https://gitea.arcodange.lab/arcodange-org/erp/milestone/1) (erp#38–45, #47 β€” due 2026-10-09) Β· **#38 βœ… 2026-07-15** ([PR erp#62](https://gitea.arcodange.lab/arcodange-org/erp/pulls/62)) | | 2 β€” Urgent compliance | [POC-6](poc-plan.md#poc-6--e-invoicing-readiness-spike) β€” **hard deadline 2026-09-01** | ⬜ decomposed β†’ [erp milestone P2](https://gitea.arcodange.lab/arcodange-org/erp/milestone/2) (erp#46 β€” due 2026-09-01) | | 3 β€” Standing fleet | [POC-2](poc-plan.md#poc-2--pi-sentinel), queue, digest + approval cards, harness portability | ⬜ decomposed β†’ [erp milestone P3](https://gitea.arcodange.lab/arcodange-org/erp/milestone/3) (erp#48–50, #59, #63 β€” due 2026-11-13) + [gateway#1](https://gitea.arcodange.lab/arcodange/telegram-gateway/issues/1)/[#2](https://gitea.arcodange.lab/arcodange/telegram-gateway/issues/2) | | Ledger compliance (cross-cutting) | [Dolibarr verifications](compliance.md#dolibarr-verifications-sandbox-first) | ⬜ decomposed β†’ [erp milestone](https://gitea.arcodange.lab/arcodange-org/erp/milestone/4) (erp#51 β€” due 2026-11-27) | | 4 β€” Money loops | [POC-3](poc-plan.md#poc-3--reconciliation--payment-recording), dunning, cash report | ⬜ decomposed β†’ [erp milestone P4](https://gitea.arcodange.lab/arcodange-org/erp/milestone/5) (erp#52–53 β€” due 2026-12-24) | | 5 β€” Fiscal autopilot | [POC-4](poc-plan.md#poc-4--tva-dry-run), compliance calendar | ⬜ decomposed β†’ [erp milestone P5](https://gitea.arcodange.lab/arcodange-org/erp/milestone/6) (erp#54–55, #60 β€” due 2027-05-04) | | 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); since 2026-07-12 each issue also carries an **Execution footer** β€” *Blocked by / Blocks / Human gates / Start (worktree + first command) / Done means (evidence comment β†’ PR with `Closes #N` β†’ doc sweep)*. How a future session resumes: **order open milestones by due date, pick the top issue whose "Blocked by" is clear β€” and skip issues whose only open step is a `[HUMAN]` gate** (surface those in the digest instead of stalling on them; e.g. erp#46 step 1 is operator-owned). Cold-start entry points as of 2026-07-15 (post-#38): **erp#39** (golden set β€” the eval half of the harness, now unblocked), **erp#51** (startable today), **erp#41/#42/#43/#44** (write-skill side, independent of the fleet tree). **Arbitration: one session = one lane** β€” take the entry issue; an orchestrator may fan the independent lanes out in parallel (#39 βˆ₯ #51 βˆ₯ #41–44 touch disjoint directories); everything else follows due-date order (dates in the phase tracker above). The issue body carries everything; on any doubt the trust order is live system > code > STATUS > leaves. Cross-cutting decisions get their ADRs via [factory#22](https://gitea.arcodange.lab/arcodange-org/factory/issues/22). | Repo | Issues | | --- | --- | | [erp](https://gitea.arcodange.lab/arcodange-org/erp/issues) | **P1:** #38 fleet scaffold βœ… 2026-07-15 (D8 settled, PR erp#62) Β· #39 golden set+injection fixtures (**entry issue**) Β· #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 (umbrella) β€” **P2:** #46 POC-6 Qonto-as-PA (D4; step 1 = [HUMAN] Qonto UI) β€” **P3:** #48 T13 drift watchdog Β· #59 T14 backup freshness+drill Β· #49 T17 second-brain hooks (D7; meeting lane D9 parked) Β· #50 POC-2 Pi sentinel (D6) Β· #63 harness portability β€” verifiers on Ornith/MLX+Mistral (D2) β€” **Compliance:** #51 Dolibarr verifications (FEC/BlockedLog, startable today) β€” **P4:** #52 POC-3 reco+payments Β· #53 T05 client invoice (D3, ⚠️ July manual ~07-23) β€” **P5:** #54 fiscal profile+calendar files+ADC register Β· #60 T11 reminder loop Β· #55 POC-4 TVA dry-runs β€” **Ops (post-replay):** #56 known-patterns fix Β· #57 bucket C + document gaps | | [telegram-gateway](https://gitea.arcodange.lab/arcodange/telegram-gateway/issues) | #1 Postgres durable queue (D1) Β· #2 daily digest + approval cards | | [factory](https://gitea.arcodange.lab/arcodange-org/factory/issues) | #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: 1. **QA gate β€” verify before documenting, and never by yourself.** The gate is run by an **independent verifier subagent**: context-free (no conversation inherited from the closer), prompted to *refute* β€” "find why this milestone is NOT actually done" β€” with the repo, the issues and the run journals as its only inputs ([no self-grading](qa-strategy.md#independent-verification--no-self-grading)). It checks: (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](qa-strategy.md)); (c) any πŸ§ͺβ†’βœ… flip in the [agent-catalog](agent-catalog.md) backed by its proving-protocol evidence. Its verdict is posted on the milestone before closure; a refutation the closer cannot resolve **with evidence** blocks. A milestone that can't pass its own QA doesn't close β€” it sheds scope back into open issues. 2. **Flip the phase row** above (βœ… + date + PR links) and prune the backlog map of closed issues. 3. **Re-baseline the [roadmap](roadmap.md)** 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. 4. **Truth-pass the affected leaves** (no-tombstone β€” rewrite as currently true, no "previously/now"): the [task inventory](task-inventory.md) `Today:`/`Target:` lines the milestone changed; the agent-catalog matrix; `not yet`/candidate claims in [architecture](agent-architecture.md), [model-fleet](model-fleet.md), [compliance](compliance.md). Bump Last Updated **only on files whose claims changed**. 5. **Sweep the orientation layer**: repo `AGENTS.md` files (map rows, "not yet landed" pointers), touched `SKILL.md`s, and any [guidebook](../../guidebooks/erp/README.md) page mapping a changed component (house same-change rule). 6. **Doc-surface QA β€” mechanical + fresh-reader.** (a) Run the link/anchor/convention check over the PRD tree (the `prd_check` pattern: 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 grep `vibe/` + the repos' `AGENTS.md`/`SKILL.md` for them β€” zero hits or fixed; (c) **fresh-reader smoke test**: a context-free subagent reads only STATUS + the repo `AGENTS.md` and 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. 7. **Close the loop outward**: ADRs for decisions the milestone settled ([factory#22](https://gitea.arcodange.lab/arcodange-org/factory/issues/22)), agent memories updated or pruned, a REX note into the second brain (T17 once live). 8. 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](https://gitea.arcodange.lab/arcodange-org/erp), [factory](https://gitea.arcodange.lab/arcodange-org/factory) and [tools](https://gitea.arcodange.lab/arcodange-org/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](../../ADR/0002-per-application-environments.md)) | factory [#15](https://gitea.arcodange.lab/arcodange-org/factory/pulls/15)–[#18](https://gitea.arcodange.lab/arcodange-org/factory/pulls/18), erp [#11](https://gitea.arcodange.lab/arcodange-org/erp/pulls/11)–[#12](https://gitea.arcodange.lab/arcodange-org/erp/pulls/12), tools [#2](https://gitea.arcodange.lab/arcodange-org/tools/pulls/2)–[#3](https://gitea.arcodange.lab/arcodange-org/tools/pulls/3) | | Sandbox write skill (fiches, invoices, payments, avoirs) | the A2 write layer, host-guarded to the sandbox | erp [#21](https://gitea.arcodange.lab/arcodange-org/erp/pulls/21), [#22](https://gitea.arcodange.lab/arcodange-org/erp/pulls/22), [#25](https://gitea.arcodange.lab/arcodange-org/erp/pulls/25) | | Promote flow (manifests, business-key lookup, prod gate) | the ADR-0003 capstone: rehearse β†’ review β†’ human-gated prod apply ([ADR 0003](../../ADR/0003-sandbox-state-lifecycle.md), factory [#19](https://gitea.arcodange.lab/arcodange-org/factory/pulls/19)) | erp [#23](https://gitea.arcodange.lab/arcodange-org/erp/pulls/23), [#24](https://gitea.arcodange.lab/arcodange-org/erp/pulls/24) | | Deterministic payment↔bank linkage | `transaction_id` end-to-end: record with the feed id, reconcile by id (PASS 0) | erp [#26](https://gitea.arcodange.lab/arcodange-org/erp/pulls/26)–[#28](https://gitea.arcodange.lab/arcodange-org/erp/pulls/28) | | Sandbox checkpoint lifecycle + CLI | iso-prod refresh, write-agent provisioning, `.env` relink | erp [#29](https://gitea.arcodange.lab/arcodange-org/erp/pulls/29), [#30](https://gitea.arcodange.lab/arcodange-org/erp/pulls/30), [#35](https://gitea.arcodange.lab/arcodange-org/erp/pulls/35) | | Dedicated Dolibarr backup (daily CronJob, 10 y retention, tested restore) | the evidence/recovery floor | erp [#31](https://gitea.arcodange.lab/arcodange-org/erp/pulls/31)–[#34](https://gitea.arcodange.lab/arcodange-org/erp/pulls/34), tools [#5](https://gitea.arcodange.lab/arcodange-org/tools/pulls/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](https://gitea.arcodange.lab/arcodange-org/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](https://gitea.arcodange.lab/arcodange/SecondBrain) repo | ## PR log (this PRD) | Date | PR | What shipped | | --- | --- | --- | | 2026-07-11 | [factory#21](https://gitea.arcodange.lab/arcodange-org/factory/pulls/21) | PRD authored: hub + task inventory + agent architecture + model fleet + challenges + POC plan + QA strategy. |