From 8232ed7987fe271fff13afd28d944212fd17a692 Mon Sep 17 00:00:00 2001 From: Gabriel Radureau Date: Wed, 15 Jul 2026 18:43:34 +0200 Subject: [PATCH] =?UTF-8?q?docs(prd):=20D8=20settled=20=E2=80=94=20fleet/?= =?UTF-8?q?=20landed=20with=20erp#62;=20STATUS=20truth-pass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit erp#38 shipped 2026-07-15 (PR erp#62, independent locate-test PASS): D8 row flipped leaningβ†’settled, P1 phase row 🟑 in progress with the first βœ…, cold-start entry point advances to erp#39 (golden set). Co-Authored-By: Claude Fable 5 --- vibe/PRD/ai-back-office/STATUS.md | 10 +++++----- vibe/PRD/ai-back-office/agent-architecture.md | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/vibe/PRD/ai-back-office/STATUS.md b/vibe/PRD/ai-back-office/STATUS.md index 7183268..75d025d 100644 --- a/vibe/PRD/ai-back-office/STATUS.md +++ b/vibe/PRD/ai-back-office/STATUS.md @@ -2,8 +2,8 @@ # STATUS β€” implementation tracker -> **Status:** 🟒 Current β€” backlog decomposed into issues (2026-07-11); sharpened with per-issue Execution footers + splits #59/#60 (2026-07-12) -> **Last Updated:** 2026-07-12 +> **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) @@ -12,7 +12,7 @@ | 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) | ⬜ decomposed β†’ [erp milestone P1](https://gitea.arcodange.lab/arcodange-org/erp/milestone/1) (erp#38–45, #47 β€” due 2026-10-09) | +| 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 | ⬜ decomposed β†’ [erp milestone P3](https://gitea.arcodange.lab/arcodange-org/erp/milestone/3) (erp#48–50, #59 β€” 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) | @@ -22,11 +22,11 @@ ## 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-12: **erp#38** (the fleet entry issue), **erp#51** (startable today), **erp#41/#42/#43/#44** (write-skill side, independent of the scaffold). **Arbitration: one session = one lane** β€” take the entry issue; an orchestrator may fan the independent lanes out in parallel (#38 βˆ₯ #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). +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+AGENTS.md (D8, **entry issue**) Β· #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 (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) β€” **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 | +| [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) β€” **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) | diff --git a/vibe/PRD/ai-back-office/agent-architecture.md b/vibe/PRD/ai-back-office/agent-architecture.md index 50eeb02..978568e 100644 --- a/vibe/PRD/ai-back-office/agent-architecture.md +++ b/vibe/PRD/ai-back-office/agent-architecture.md @@ -191,7 +191,7 @@ To be settled by POC evidence, each closing with a short ADR: | D5 | OCR provider for scanned docs | Mistral OCR (EU cloud) vs. local vision model on M4 vs. Tesseract baseline | | D6 | Pi inference serving | llama.cpp server vs. Ollama on arm64, resource limits, node pinning ([C5](challenges.md#c5--slm-capability-ceiling-on-pi-hardware)) | | D7 | Cluster↔vault access | git clone/pull of the SecondBrain remote (**leaning** β€” the Gitea remote exists, offline-friendly, reviewable) vs. tunneled Obsidian REST API (M4-only today) vs. keeping vault access M4-exclusive | -| D8 | Fleet code home | erp repo `fleet/` next to the skills (**leaning** β€” the atoms are ERP-domain today; revisit into a dedicated repo when a second domain joins) vs. dedicated fleet repo vs. scattered per existing repo | +| D8 | Fleet code home | **Settled 2026-07-15: erp repo `fleet/`** next to the skills β€” landed with [erp#62](https://gitea.arcodange.lab/arcodange-org/erp/pulls/62) (registry, 7 class skeletons, worked example, AGENTS.md Fleet section; locate-test passed by an independent cold reader). The atoms are ERP-domain today β€” revisit into a dedicated repo when a second domain joins | | D9 | Meeting capture tool (client-project notes lane) β€” **parked 2026-07-12, nice-to-have** (first client calls happen on the iPhone: a phone call precedes the Meet, which desktop capture doesn't cover; revisit when desktop meetings become routine) | **Leaning: Hyprnote free tier** (rebranded "Char" β€” local capture + transcription with **speaker diarization and Google Calendar sync both on the free plan**; manual trigger only, auto-record stays off by consent stance) vs. **Meetily** as OSS fallback (MIT, diarization in the community core, no calendar sync β€” `sb.py` can compensate by matching recording timestamps to the calendar ICS) vs. bare Whisper-class + Ornith | -D4–D6 close with their mapped POCs ([POC-6](poc-plan.md#poc-6--e-invoicing-readiness-spike), [POC-5](poc-plan.md#poc-5--model-routing-bench), [POC-2](poc-plan.md#poc-2--pi-sentinel)); D1–D2 are settled while building phase 3's standing fleet (the queue and scheduler *are* its skeleton); D3 lands with phase 4's money loops; D7 closes when the first cluster-side atom needs vault context (phase 3 at the earliest); D8 rides POC-1 β€” the first atoms need their home on day one; D9 is **parked** (nice-to-have; calls are iPhone-first today) β€” erp#49 carries the wake-up steps (gate: diarization quality on a real bilingual call). +D4–D6 close with their mapped POCs ([POC-6](poc-plan.md#poc-6--e-invoicing-readiness-spike), [POC-5](poc-plan.md#poc-5--model-routing-bench), [POC-2](poc-plan.md#poc-2--pi-sentinel)); D1–D2 are settled while building phase 3's standing fleet (the queue and scheduler *are* its skeleton); D3 lands with phase 4's money loops; D7 closes when the first cluster-side atom needs vault context (phase 3 at the earliest); D8 settled with the scaffold landing (erp#62, 2026-07-15); D9 is **parked** (nice-to-have; calls are iPhone-first today) β€” erp#49 carries the wake-up steps (gate: diarization quality on a real bilingual call). -- 2.54.0