V6.1 — splits the noisy BANK-ONLY bucket into known (intentional gaps documented in a JSON catalog) and UNKNOWN (real action items). Operator now sees one bucket per concern.
What ships
known-patterns.json — operator-curated catalog with 7 entries:
FOUREZ Quentin → capital_deposit (apport en capital 1000 € via notaire, 2026-01-21, account 1013)
V6.1 follow-up to the bank-reco V6 ship. Splits the BANK-ONLY bucket into
"known patterns" (intentional gaps, documented and classified) vs
"unknown" (real action items).
What the catalog covers today:
- FOUREZ Quentin → capital_deposit (apport en capital 1000 € initial,
notaire FOUREZ centralisateur du dépôt). Maps to Dolibarr account 1013.
- URSSAF → social_charges (account 645100)
- MISTRAL.AI, CLAUDE.AI → ai_subscription (account 6262)
- Wise *Plan, qonto_fee → bank_fee (account 627)
- BALANCE_DEPOSIT / FEATURE_CHARGE on Wise → internal_topup (self-funding
pair, often nets to zero)
Effect on the V6 baseline (Jan-May 2026):
- Before catalog: 8 BANK-ONLY mixed entries (noise + signal)
- After catalog: 7 known + 1 UNKNOWN (just the +2147 € KM Wise payment
2026-05-29 that genuinely needs a Dolibarr entry)
The catalog is JSON (not YAML — stdlib only, no dependency). Schema
documented in SKILL.md. Pattern matches case-insensitive regex against
both bank label AND operation type. Optional filters: bank, side,
amount_min, amount_max.
Exit code now reflects only the UNKNOWN bank-only and dolibarr-only
counts — the verdict is no longer noisy because of intentional gaps.
Edit known-patterns.json as new recurring patterns emerge.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
V6.1 — splits the noisy BANK-ONLY bucket into known (intentional gaps documented in a JSON catalog) and UNKNOWN (real action items). Operator now sees one bucket per concern.
What ships
known-patterns.json— operator-curated catalog with 7 entries:FOUREZ Quentin→ capital_deposit (apport en capital 1000 € via notaire, 2026-01-21, account 1013)URSSAF→ social_chargesMISTRAL.AI,CLAUDE.AI→ ai_subscription (account 6262)Wise *Plan,qonto_fee→ bank_fee (account 627)BALANCE_DEPOSIT|For your account plan→ internal_topupbank-match.shextension: loads the catalog, matches each BANK-ONLY entry case-insensitively againstlabel + " | " + op, annotates matches with[classification]+ the operator note.SKILL.mdsection documenting the schema + editing workflow.examples/bank-match-2026-01-to-05.txt.Effect on the baseline
Schema (JSON, stdlib-only)
The exit code now reflects only UNKNOWN + dolibarr-only — intentional gaps no longer pollute the verdict.
Test plan
bin/arcodange bank match --since 2026-01-01 --until 2026-05-31→ 6 matched / 1 internal / 7 known / 1 UNKNOWN / 9 dolibarr-only[capital_deposit]annotation[social_charges]annotation[ai_subscription]annotationgit diff --cached | grep -F <qonto-secret>emptygit diff --cached | grep -F <wise-token>empty