feat(fleet): fiscal profile + compliance calendar + ADC register (T11 data) — ⚠️ operator gate: Accept adc-001…005 #71

Merged
arcodange merged 1 commits from arcodange/fiscal-profile into main 2026-07-19 09:22:57 +02:00
Owner

Implements #54do not merge before the operator gate: sanity-read of calendar.yaml + Accept (or amend) adc-001…005 (agents draft, the operator Accepts — never the reverse). Merging this PR IS the acceptance act; it is deliberately left to the operator.

Ships under fleet/profile/:

  • fiscal.yaml — 8 rules (régime réel simplifié → CA3 trimestrielle 2027-01-01 per LF 2025 art. 38; KM export autoliquidation 259-1° CGI → E2; FR 20 % déductible; intra-EU reverse charge; FX 766/666; SaaS expensed; CCA personal-card lane), each with effective_from/effective_until + decision: adc-NNN.
  • calendar.yaml — 15 entries (acompte TVA déc., last CA12 ~2027-05-04, CA3 windows, CFE, AG 2027-06-30, e-invoicing 2026-09-01 / 2027-09-01, URSSAF — with the in-file NOTE that the « payroll dormant » assumption needs revisiting, see #57).
  • decisions/ — ADC register: template + adc-001…005 (Accepted-as-formalization pending this PR's operator read) + adc-006 (retainer currency → #53) / adc-007 (capital path → #51) as Proposed stubs.
  • Schemas + scripts/validate.py (stdlib): both YAMLs validate, every rule resolves to an existing Accepted ADC — PASS, 0 errors, 7 deliberate warnings enumerating exactly what awaits operator verification. Negative smoke test: seeded-wrong copies FAIL (3 errors, exit 1).
  • Same-change: fleet/profile/README.md (stub → real), fleet/README.md layout, AGENTS.md fleet row.

Uncorroborated-from-PRD facts are flagged in-file (SIREN, some exact days at month precision) — nothing invented. Full validation output in the #54 evidence comment.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VRShc4QhLLU73FLHx9vskh

Implements #54 — **do not merge before the operator gate**: sanity-read of `calendar.yaml` + **Accept (or amend) adc-001…005** (agents draft, the operator Accepts — never the reverse). Merging this PR IS the acceptance act; it is deliberately left to the operator. Ships under `fleet/profile/`: - `fiscal.yaml` — 8 rules (régime réel simplifié → CA3 trimestrielle 2027-01-01 per LF 2025 art. 38; KM export autoliquidation 259-1° CGI → E2; FR 20 % déductible; intra-EU reverse charge; FX 766/666; SaaS expensed; CCA personal-card lane), each with `effective_from`/`effective_until` + `decision: adc-NNN`. - `calendar.yaml` — 15 entries (acompte TVA déc., last CA12 ~2027-05-04, CA3 windows, CFE, AG 2027-06-30, e-invoicing 2026-09-01 / 2027-09-01, URSSAF — with the in-file NOTE that the « payroll dormant » assumption needs revisiting, see #57). - `decisions/` — ADC register: template + adc-001…005 (Accepted-as-formalization pending this PR's operator read) + adc-006 (retainer currency → #53) / adc-007 (capital path → #51) as Proposed stubs. - Schemas + `scripts/validate.py` (stdlib): both YAMLs validate, **every rule resolves to an existing Accepted ADC** — PASS, 0 errors, 7 deliberate warnings enumerating exactly what awaits operator verification. Negative smoke test: seeded-wrong copies FAIL (3 errors, exit 1). - Same-change: `fleet/profile/README.md` (stub → real), `fleet/README.md` layout, `AGENTS.md` fleet row. Uncorroborated-from-PRD facts are flagged in-file (SIREN, some exact days at month precision) — nothing invented. Full validation output in the [#54 evidence comment](https://gitea.arcodange.lab/arcodange-org/erp/issues/54). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01VRShc4QhLLU73FLHx9vskh
arcodange added 1 commit 2026-07-18 23:52:14 +02:00
fleet/profile/ goes from stub to the machine-readable business-rules surface
the fleet reads (PRD agent-catalog document surface + compliance ADC framework):

- fiscal.yaml — entity, VAT position, 8 rules (regime reel simplifie until
  2026-12-31 -> quarterly CA3 from 2027-01-01 per LF 2025 art. 38; KM export
  autoliquidation 259-1 CGI box E2; FR 20% deductible; intra-EU reverse
  charge; FX 766/666; SaaS expensed; CCA 455 lane). Every rule carries
  effective_from/effective_until AND decision: adc-NNN; every date cites its
  PRD anchor as an inline comment (verified against factory origin/main).
- calendar.yaml — 15 entries: acomptes TVA (2026-07 month-window, 2026-12-15),
  last CA12 FY-2026 (2027-05-04), CA3 quarterly windows, CFE (December),
  AG comptes annuels (2027-06-30), e-invoicing milestones (2026-09-01
  reception, 2027-09-01 emission/e-reporting), URSSAF echeancier with the
  in-file NOTE that a real direct debit exists since May 2026 (erp#57 revisit
  of the payroll-dormant assumption), KM deferred due dates + renewal stub.
- JSON Schemas for both + scripts/validate.py (stdlib-only: strict YAML-subset
  parser, JSON-Schema-subset checker, rule->ADC resolution, calendar checks).
- decisions/ — ADC register: template + adc-001..005 Accepted formalizations
  (autoliquidation KM, FX->766/666, SaaS expensed, reel simplifie until
  abolition, CCA personal-card lane) + adc-006/007 Proposed stubs (retainer
  currency -> erp#53; capital path -> erp#51). Agents draft, the operator
  Accepts — never the reverse; immutable once merged, supersede never edit.
- Mutation policy in-file: PRs only (T12 proposes, human merges).
- Same-change: profile README stub -> real doc; fleet/README.md layout line
  and AGENTS.md fleet row updated (profile no longer a stub).

Validation: PASS — 8 rules, 15 entries, 7 ADCs, 0 errors, 7 warnings (the
warnings list exactly what awaits operator verification). Human gate left
open on purpose: operator sanity-read of the calendar + Acceptance of
adc-001..005.

Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01VRShc4QhLLU73FLHx9vskh
arcodange merged commit 87a176e5b1 into main 2026-07-19 09:22:57 +02:00
arcodange deleted branch arcodange/fiscal-profile 2026-07-19 09:22:57 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: arcodange-org/erp#71