Files
oto-enterprise-os-dtp/05_activity_log
Claude Code DTP Worker 9794eabc8a [DTP-Worker] Sprint 8 · buffer L75 · Domaine CRM/Commissions : la CROSS-COHÉRENCE du barème vendeurs (« cœur du livrable ») — états BROUILLON exclus (lead/visite/devis/abandonné), CHAMPS DE BASE (montant_reservation, montant_contrat) et INVARIANT 3 « on ne commissionne QUE des états soumis (doc_status=1) » — était énumérée À LA MAIN dans le README du module crm/commissions sans AUCUN gate d'IDENTITÉ. Le bloc racine ne gate que le COMPTE de tests (« 25 », via l'agrégat « Total CRM ») — surface distincte. Ces trois faits sont DATA-DERIVED : brouillons = {update_value | doc_status==0} de crm/workflow_vente/out/workflow.json (= {lead,visite,devis,abandonne}) · champs de base = {base_field} des évènements de crm/commissions/out/commission_plan.json · états soumis = {update_value | doc_status==1} — les deux artefacts byte-gatés par check_artifacts. Aucun gate ne comparait ces ENSEMBLES à la prose : PROMOUVOIR un brouillon en soumis (abandonne → doc_status 1) le retire de l'ensemble brouillon pendant que la prose l'énumère encore · AJOUTER/RENOMMER un champ de base OU ÉCHANGER un état passe aussi — « vert trompeur » qu'aucune suite tests/ (qui teste des FONCTIONS finance/résolution, pas la prose) n'attrape → nouveau bloc recomputant chaque ENSEMBLE depuis SON artefact byte-gaté (zéro duplication du contrat du générateur #6) et exigeant que la prose l'énumère EXACTEMENT. Contrôle par ENSEMBLE (absent ET en trop mordus via set-diff · accents/casse normalisés via unicodedata). Cohérence croisée en bonus (mord un plan INTERNEMENT incohérent avec le workflow) : tout update_value commissionné ∈ états soumis ET ∉ brouillons — l'INVARIANT 3 du module, non vide. Un claim absent échoue AUSSI. 5 morsures vérifiées : échange brouillon (abandonné→perdu) capté (absents=[abandonne] en trop=[perdu]) · sous-ensemble champs de base (retrait montant_contrat) capté · énumération des brouillons supprimée (INTROUVABLE) · plan pointant un brouillon (reservation→lead, invariant 3 cassé) capté · promotion de l'état abandonne en soumis dans l'artefact (draft set change, « en trop » dans la prose) capté ; restauré = green : brouillons [abandonne,devis,lead,visite] == workflow (doc_status=0) · champs de base == plan · invariant 3 vert. État courant : aucun ensemble périmé (anti-invention #6, rien à réécrire) — le défaut est la surface ungated. ci/README.md (table + détail) mis à jour · 7 gates re-verts.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 16:39:55 +00:00
..
[DTP-Worker] Sprint 8 · buffer L75 · Domaine CRM/Commissions : la CROSS-COHÉRENCE du barème vendeurs (« cœur du livrable ») — états BROUILLON exclus (lead/visite/devis/abandonné), CHAMPS DE BASE (montant_reservation, montant_contrat) et INVARIANT 3 « on ne commissionne QUE des états soumis (doc_status=1) » — était énumérée À LA MAIN dans le README du module crm/commissions sans AUCUN gate d'IDENTITÉ. Le bloc racine ne gate que le COMPTE de tests (« 25 », via l'agrégat « Total CRM ») — surface distincte. Ces trois faits sont DATA-DERIVED : brouillons = {update_value | doc_status==0} de crm/workflow_vente/out/workflow.json (= {lead,visite,devis,abandonne}) · champs de base = {base_field} des évènements de crm/commissions/out/commission_plan.json · états soumis = {update_value | doc_status==1} — les deux artefacts byte-gatés par check_artifacts. Aucun gate ne comparait ces ENSEMBLES à la prose : PROMOUVOIR un brouillon en soumis (abandonne → doc_status 1) le retire de l'ensemble brouillon pendant que la prose l'énumère encore · AJOUTER/RENOMMER un champ de base OU ÉCHANGER un état passe aussi — « vert trompeur » qu'aucune suite tests/ (qui teste des FONCTIONS finance/résolution, pas la prose) n'attrape → nouveau bloc recomputant chaque ENSEMBLE depuis SON artefact byte-gaté (zéro duplication du contrat du générateur #6) et exigeant que la prose l'énumère EXACTEMENT. Contrôle par ENSEMBLE (absent ET en trop mordus via set-diff · accents/casse normalisés via unicodedata). Cohérence croisée en bonus (mord un plan INTERNEMENT incohérent avec le workflow) : tout update_value commissionné ∈ états soumis ET ∉ brouillons — l'INVARIANT 3 du module, non vide. Un claim absent échoue AUSSI. 5 morsures vérifiées : échange brouillon (abandonné→perdu) capté (absents=[abandonne] en trop=[perdu]) · sous-ensemble champs de base (retrait montant_contrat) capté · énumération des brouillons supprimée (INTROUVABLE) · plan pointant un brouillon (reservation→lead, invariant 3 cassé) capté · promotion de l'état abandonne en soumis dans l'artefact (draft set change, « en trop » dans la prose) capté ; restauré = green : brouillons [abandonne,devis,lead,visite] == workflow (doc_status=0) · champs de base == plan · invariant 3 vert. État courant : aucun ensemble périmé (anti-invention #6, rien à réécrire) — le défaut est la surface ungated. ci/README.md (table + détail) mis à jour · 7 gates re-verts.
2026-07-31 16:39:55 +00:00