feat(fleet): fiscal profile + compliance calendar as machine-readable files (T11 data) #54

Closed
opened 2026-07-11 18:19:21 +02:00 by arcodange · 3 comments
Owner

Part of the AI back-office PRDT11 + challenge C6 + agent-catalog › doc surface. Rescoped 2026-07-12: the reminder LOOP moved to #60 — this issue ships the files + schemas the whole fleet reads.

Deliverables

  • fleet/profile/fiscal.yaml: regime réel simplifié until 2026-12-31 → quarterly CA3 from 2027-01-01 (LF 2025 art. 38); TVA position (client KM = export box E2 autoliquidation 259-1° CGI; suppliers FR 20 % / intra-EU reverse charge); every rule carries effective_from/effective_until AND decision: adc-NNN (its justification record); schema + validation script.
  • fleet/profile/calendar.yaml: acompte TVA décembre (~12-15), last CA12 FY-2026 (~2027-05-04), CA3 quarterly (April/July/Oct/Jan windows), CFE (December), AG/comptes annuels (2027-06-30), e-invoicing milestones (2026-09-01 reception, 2027-09-01 e-reporting), URSSAF échéancier (NOTE: a real URSSAF direct debit exists since May — the "payroll dormant" assumption needs revisiting, see #57).
  • fleet/profile/decisions/ — the ADC register (accounting decision records, framework: PRD compliance › ADC): template + seed records adc-001…005 written as Accepted formalizations (autoliquidation KM · FX→766/666 · SaaS expensed · réel simplifié until abolition · CCA personal-card lane) + adc-006/adc-007 as Proposed stubs (retainer currency → #53; capital path → #51). Agents draft, the operator Accepts — never the reverse.
  • Mutation policy documented in-file: changes arrive as PRs (T12 regulatory watch proposes; human merges) — no agent edits these files directly.

Acceptance: both YAML files validate against their schemas; every fiscal.yaml rule resolves to an existing ADC; contents cross-checked against the PRD compliance/roadmap dates; operator sanity-reads the calendar + Accepts (or amends) adc-001…005.


Execution — Blocked by: #38 (home fleet/profile/) · Blocks: #55, #60, and the annexe-generation at close · Human gates: operator sanity-read of the calendar + Acceptance of the seed ADCs (a human act by design).
Start: claude --worktree fiscal-profile from the erp repo root; sources = the PRD compliance + roadmap leaves and the agent memory arcodange-tva-fiscal — cross-check every date against the PRD, cite in-file.
Done means: evidence comment here (validation output + rule→ADC resolution check + operator acks) → PR merged with Closes #54.

Part of the **AI back-office PRD** — [T11](https://gitea.arcodange.lab/arcodange-org/factory/src/branch/main/vibe/PRD/ai-back-office/task-inventory.md) + [challenge C6](https://gitea.arcodange.lab/arcodange-org/factory/src/branch/main/vibe/PRD/ai-back-office/challenges.md) + [agent-catalog › doc surface](https://gitea.arcodange.lab/arcodange-org/factory/src/branch/main/vibe/PRD/ai-back-office/agent-catalog.md). **Rescoped 2026-07-12:** the reminder LOOP moved to #60 — this issue ships the files + schemas the whole fleet reads. **Deliverables** - `fleet/profile/fiscal.yaml`: regime réel simplifié until 2026-12-31 → quarterly CA3 from 2027-01-01 (LF 2025 art. 38); TVA position (client KM = export box E2 autoliquidation 259-1° CGI; suppliers FR 20 % / intra-EU reverse charge); **every rule carries `effective_from`/`effective_until` AND `decision: adc-NNN`** (its justification record); schema + validation script. - `fleet/profile/calendar.yaml`: acompte TVA décembre (~12-15), last CA12 FY-2026 (~2027-05-04), CA3 quarterly (April/July/Oct/Jan windows), CFE (December), AG/comptes annuels (2027-06-30), e-invoicing milestones (2026-09-01 reception, 2027-09-01 e-reporting), URSSAF échéancier (NOTE: a real URSSAF direct debit exists since May — the "payroll dormant" assumption needs revisiting, see #57). - **`fleet/profile/decisions/` — the ADC register** (*accounting decision records*, framework: [PRD compliance › ADC](https://gitea.arcodange.lab/arcodange-org/factory/src/branch/main/vibe/PRD/ai-back-office/compliance.md#accounting-decision-records-adc)): template + **seed records adc-001…005 written as Accepted formalizations** (autoliquidation KM · FX→766/666 · SaaS expensed · réel simplifié until abolition · CCA personal-card lane) + **adc-006/adc-007 as Proposed stubs** (retainer currency → #53; capital path → #51). Agents draft, the operator Accepts — never the reverse. - Mutation policy documented in-file: changes arrive as PRs (T12 regulatory watch proposes; human merges) — no agent edits these files directly. **Acceptance:** both YAML files validate against their schemas; every fiscal.yaml rule resolves to an existing ADC; contents cross-checked against the PRD compliance/roadmap dates; operator sanity-reads the calendar + Accepts (or amends) adc-001…005. --- **Execution** — Blocked by: #38 (home `fleet/profile/`) · Blocks: #55, #60, and the annexe-generation at close · Human gates: operator sanity-read of the calendar + **Acceptance of the seed ADCs** (a human act by design). **Start:** `claude --worktree fiscal-profile` from the erp repo root; sources = the PRD compliance + roadmap leaves and the agent memory `arcodange-tva-fiscal` — cross-check every date against the PRD, cite in-file. **Done means:** evidence comment here (validation output + rule→ADC resolution check + operator acks) → PR merged with `Closes #54`.
arcodange added this to the P5 — Fiscal autopilot milestone 2026-07-11 18:19:21 +02:00
arcodange changed title from feat(fleet): fiscal profile + compliance calendar as machine-readable files + T11 reminders to feat(fleet): fiscal profile + compliance calendar as machine-readable files (T11 data) 2026-07-12 14:03:09 +02:00
Author
Owner

Calendar entries to include — 4 % new-business settlement (KM amendment Art. 2; launch date PINNED 2026-07-16, contract PR #5 merged): Lancement = Monday 2026-08-03, written in the contract text.

Derived deadlines for fleet/profile/calendar.yaml:

  • Window (4 %): 2026-08-03 → 2027-02-03 (net-new clients signed in this window are eligible).
  • Quarterly certified statements from KM (the invoicing basis for the 4 %): first due 2026-10-15 (15 days after the Launch quarter's end), then 15/01, 15/04, 15/07, 15/10 each year until the end of the 12th month of the last eligible client (latest theoretical tail: early 2028). A missing statement = a nil statement per the contract, but the reminder should still fire — chasing it is a receivable-protection act (T06 adjacency).
  • Verification right: once per 12-month period (expert-comptable, reasonable docs) — a yearly reminder is enough.
  • Base-contract dates already known: active period ends 2026-10-23 (renewal conversation before), deferred tail to 2027-01-23.

Reminder cadence per this issue's loop (#60): D-30/D-7/D-1 on each statement due date.

**Calendar entries to include — 4 % new-business settlement (KM amendment Art. 2; launch date PINNED 2026-07-16, contract PR #5 merged): Lancement = Monday 2026-08-03, written in the contract text.** Derived deadlines for `fleet/profile/calendar.yaml`: - **Window (4 %)**: 2026-08-03 → **2027-02-03** (net-new clients signed in this window are eligible). - **Quarterly certified statements from KM** (the invoicing basis for the 4 %): first due **2026-10-15** (15 days after the Launch quarter's end), then **15/01, 15/04, 15/07, 15/10** each year until the end of the 12th month of the last eligible client (latest theoretical tail: early 2028). **A missing statement = a nil statement per the contract, but the reminder should still fire** — chasing it is a receivable-protection act (T06 adjacency). - Verification right: once per 12-month period (expert-comptable, reasonable docs) — a yearly reminder is enough. - Base-contract dates already known: active period ends **2026-10-23** (renewal conversation before), deferred tail to **2027-01-23**. Reminder cadence per this issue's loop (#60): D-30/D-7/D-1 on each statement due date.
Author
Owner

Evidence — built, validated, PR open awaiting the operator gate (2026-07-18). PR #71 (arcodange/fiscal-profile, commit a482bb1, 16 files +1531/−3). Merging #71 IS the acceptance act — deliberately left to the operator (sanity-read of the calendar + Accept/amend adc-001…005).

Validation output (acceptance):

== fiscal.yaml ==   parse: OK   schema (fiscal.schema.json): OK
== calendar.yaml == parse: OK   schema (calendar.schema.json): OK
== rule -> ADC resolution ==   8/8 rules resolve to an existing Accepted ADC
== RESULT: PASS — 8 rules, 15 calendar entries, 7 ADC records, 0 errors, 7 warnings ==  (exit 0)

Negative smoke test: seeded-wrong copies (rule→adc-999, status Bogus, malformed date) → 3 ERRORs, exit 1 — the checks are real. The validator refuses rules citing non-Accepted ADCs (agents draft, operator Accepts).

Register: template + adc-001 (KM autoliquidation 259-1°) · adc-002 (FX→766/666) · adc-003 (SaaS expensed) · adc-004 (réel simplifié until abolition) · adc-005 (CCA personal-card lane) as Accepted-as-formalization pending the operator read; adc-006 (retainer currency → #53) and adc-007 (capital path → #51) as Proposed stubs.

Uncorroborated-from-PRD facts flagged in-file (nothing invented): SIREN (issue+memory only), incorporation exact day (conservative 2026-01-01 bound), July acompte + CFE at month precision, CA3 Jul/Oct/Jan windows marked estimated (only April is PRD-anchored), TVA credit amount (ERP reads), URSSAF cadence (one known debit 2026-05-22, 493.00 € — « payroll dormant » assumption flagged for #57).

Awaiting the operator: (1) calendar sanity-read (the 7 warnings enumerate exactly what), (2) Accept/amend adc-001…005 = merge #71, (3) arbitrate adc-006/007, (4) #57 URSSAF clarification before any payroll reminder fires, (5) expert-comptable queue: BOI-BIC-CHG-20-30-10 cite (adc-003), CCA formalities (adc-005).

Built by a Claude subagent lane; reviewed by the session orchestrator. Unblocks the #60 reminder loop (T11) structurally — the loop can be built against these schemas while the Accept gate is pending.

**Evidence — built, validated, PR open awaiting the operator gate (2026-07-18).** PR **#71** (`arcodange/fiscal-profile`, commit `a482bb1`, 16 files +1531/−3). **Merging #71 IS the acceptance act — deliberately left to the operator** (sanity-read of the calendar + Accept/amend adc-001…005). **Validation output (acceptance):** ``` == fiscal.yaml == parse: OK schema (fiscal.schema.json): OK == calendar.yaml == parse: OK schema (calendar.schema.json): OK == rule -> ADC resolution == 8/8 rules resolve to an existing Accepted ADC == RESULT: PASS — 8 rules, 15 calendar entries, 7 ADC records, 0 errors, 7 warnings == (exit 0) ``` Negative smoke test: seeded-wrong copies (rule→adc-999, status Bogus, malformed date) → 3 ERRORs, exit 1 — the checks are real. The validator refuses rules citing non-Accepted ADCs (agents draft, operator Accepts). **Register:** template + adc-001 (KM autoliquidation 259-1°) · adc-002 (FX→766/666) · adc-003 (SaaS expensed) · adc-004 (réel simplifié until abolition) · adc-005 (CCA personal-card lane) as Accepted-as-formalization pending the operator read; adc-006 (retainer currency → #53) and adc-007 (capital path → #51) as Proposed stubs. **Uncorroborated-from-PRD facts flagged in-file** (nothing invented): SIREN (issue+memory only), incorporation exact day (conservative 2026-01-01 bound), July acompte + CFE at month precision, CA3 Jul/Oct/Jan windows marked `estimated` (only April is PRD-anchored), TVA credit amount (ERP reads), URSSAF cadence (one known debit 2026-05-22, 493.00 € — « payroll dormant » assumption flagged for #57). **Awaiting the operator:** (1) calendar sanity-read (the 7 warnings enumerate exactly what), (2) Accept/amend adc-001…005 = merge #71, (3) arbitrate adc-006/007, (4) #57 URSSAF clarification before any payroll reminder fires, (5) expert-comptable queue: BOI-BIC-CHG-20-30-10 cite (adc-003), CCA formalities (adc-005). Built by a Claude subagent lane; reviewed by the session orchestrator. Unblocks the #60 reminder loop (T11) structurally — the loop can be built against these schemas while the Accept gate is pending.
Author
Owner

PR #71 merged under the operator's explicit in-session go ("tu as mon go pour merge les PRs", 2026-07-19) — adc-001…005 are now Accepted (the merge is the acceptance act per the register's semantics). Closing.

Still open for the operator, tracked in-file (the validator's 7 warnings enumerate them): the July acompte + CFE exact days (month precision today), CA3 Jul/Oct/Jan windows marked estimated, the #57 URSSAF clarification before any payroll reminder fires, and the two Proposed stubs adc-006 (→ #53) / adc-007 (→ #51). T11's reminder loop (#60) can now build against these schemas.

PR #71 merged under the operator's explicit in-session go ("tu as mon go pour merge les PRs", 2026-07-19) — **adc-001…005 are now Accepted** (the merge is the acceptance act per the register's semantics). Closing. Still open for the operator, tracked in-file (the validator's 7 warnings enumerate them): the July acompte + CFE exact days (month precision today), CA3 Jul/Oct/Jan windows marked `estimated`, the #57 URSSAF clarification before any payroll reminder fires, and the two Proposed stubs adc-006 (→ #53) / adc-007 (→ #51). T11's reminder loop (#60) can now build against these schemas.
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: arcodange-org/erp#54