8 Commits

Author SHA1 Message Date
Claude Code DTP Worker 3710253c02 [DTP-Worker 20260806_104533] FIX couverture · oracle orphelin brief.schema.json câblé à un test → le SEUL des 26 *.schema.json non enforced
Constat: faisabilite/generator/brief.schema.json, documenté « Contrat d'entrée »
et sibling de version/projets_master (tous deux test-enforced), n'était validé
par AUCUN test — _validate_brief() ne garde que le code projet, jamais la forme
complète du brief; un brief drifté hors contrat passait inaperçu.

Fix (teeth): test_input_briefs_validate_against_brief_schema valide les 2 fixtures
contre brief.schema.json via le validateur maison Publiciste (zéro-pip, toujours
exécuté, pas de skip sous python -S). Conformité pré-vérifiée sous validateur
maison ET oracle jsonschema. L'« incomplet » est conforme au sens schéma
(null admis) — incomplet seulement au sens sémantique (prix→placeholders #6).

Cascade régénérée (générateurs, jamais à la main #6): regression_plan/run/MANIFEST
16→17 · totaux 624→625 exécutés / 607→608 passés / 17 skippés · quality_report
evidence 16→17. Prose gatée réalignée (le gate check-readme-claims a mordu):
README module + fiches faisabilite/qa/erpnext_backend. Prose ungatée: GAP_ANALYSIS
16→17 + nouveau bloc daily_report (blocs currency antérieurs = snapshots datés,
non réécrits).

0 gate ajouté (#5) · 0 chiffre à la main (#6) · 0 commande VPS (#8).
run_ci.sh = 33 PASS · 0 FAIL · 0 SKIP.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-06 10:56:35 +00:00
Claude Code DTP Worker 3eec69a87f [DTP-Worker 20260803_023638] Sprint 5 · fix · Dérive ground-truth Mobile résiduelle GAP_ANALYSIS_SPRINT1 : « Existe : Expo 54/RN 0.81.5 » (upgrade abandonné 2026-07-27) → Expo 51/RN 0.74.5 réel + « Rebuild Expo 54 » en reste-à-faire (aligné roadmap L18). Surface manquée par le sweep 94e9365/642643f · prose non gatée · gate-neutre · run_ci.sh 30 PASS 2026-08-03 02:42:16 +00:00
Claude Code DTP Worker 911f70b9ab [DTP-Worker] Sprint 2 · Faisabilité générateur 4 volets (brief→data_room + round-trip Publiciste + gate)
Générateur brief JSON → data_room/PXX/ (template canonique v1.0) :
- genlib/{model,scorer,renderer}.py : params canoniques imposés (#9/#10),
  barème 4Big §7, rendu aligné sur le parser Publiciste (round-trip garanti)
- faisabilite_gen.py : CLI score/scaffold/generate/batch ; axe machine-lisible
  PROUVÉ (re-parse Publiciste + validation version.json), jamais auto-décerné
- Anti-invention #6 : champ 🔴 absent → placeholder + champs_manquants +
  rétrogradation statut ; prix manquant → {{…}} (jamais 0)
- 16 tests unittest (stdlib, réutilise parser+validateur Publiciste · #5) +
  oracle jsonschema ; job CI faisabilite-gen-tests dans le gate (Gitea only #2)
- brief.schema.json + fixtures synthétiques ; README ; GAP §2 mis à jour

Boucle de valeur fermée : generator → data_room → Publiciste → projets_master.json
Auto-score 4Big : 96/100.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 02:37:47 +00:00
Claude Code DTP Worker cc3e5aef0e [DTP-Worker] Sprint 2 · ERPNext RBAC 50 rôles (schéma + data + spec + gate)
Livrable Sprint 2 (roadmap §S2 l.38 « RBAC 50 rôles configuration »,
GAP_ANALYSIS §3.4). Seul deliverable S2 100% autorable en-repo — les clones
Frontend/CRM dépendent des layouts LIVE (VPS).

- rbac/rbac.schema.json — contrat JSON-Schema draft-07 (sous-ensemble validateur
  maison, zéro pip) : 50 rôles, DocPerm par DocType, scope User Permission.
- rbac/rbac_50_roles.json — 50 rôles × 5 portails métier + console plateforme,
  mappés aux entités CLAUDE.md, ciblant des DocTypes ERPNext v15 natifs.
- rbac/RBAC_50_ROLES_SPEC.md — design RBAC 3 niveaux + séparation des pouvoirs +
  procédure d'application VPS (fixtures bench, hors périmètre worker).
- rbac/tests/test_rbac.py — 10 tests unittest (réutilise le validateur
  Publiciste, pas de doublon) : 50 rôles exacts, unicité, 5 portails, anti-
  élévation de privilège. Oracle jsonschema si présent.
- ci.yml — job rbac-tests ajouté au gate (Gitea Actions uniquement).
- GAP_ANALYSIS §3.4 + daily report 2026-07-30 (session 4) mis à jour.

Anti-invention #6 : aucun plafond monétaire inventé ; DocTypes non natifs
marqués custom → à confirmer VPS. Gate local vert (guard/json/docs + 10 tests
RBAC + 23 tests Publiciste régression).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 02:05:54 +00:00
Claude Code DTP Worker 1a87b22fd7 [DTP-Worker] Sprint 1 · Baseline QA Playwright (4 endpoints) + fix gate rouge
Livrable QA Sprint 1 (roadmap §Sprint 1 · GAP_ANALYSIS §7) : projet Playwright
auto-contenu sous tests/, data-driven sur e2e/routes.json pour /waf-home /crm
/qa /choisir-mon-unite. 4 contrôles/route : status<400 · HTML titré+lang ·
brand luxury (#0a0a12/#f0b429 + Fraunces/Cormorant) · zéro erreur JS/5xx.
Cible via DTP_BASE_URL (aucune URL codée en dur). Zéro invention de chiffres (#6).

- tests/{playwright.config.ts,package.json,tsconfig.json,.gitignore,README.md}
- tests/e2e/{routes.json,smoke.spec.ts,_shared/contract.ts}
- CI : job e2e-baseline manuel (workflow_dispatch) dans .gitea/workflows/ci.yml
  — hors gate push/PR (exige serveur live), Gitea Actions only (#2)
- Fix : gate CI rouge sur HEAD (guard flaguait sa propre doc de test négatif)
  → escape hatch documenté ci-allow. Les 3 scripts du gate repassent verts.
- GAP_ANALYSIS §7 : critère Baseline Playwright →  (exécution VPS différée)
- daily report 2026-07-30 (session 2)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 01:02:04 +00:00
Claude Code DTP Worker 1cfb8191f4 [DTP-Worker] Sprint 1 · CI/CD Gitea Actions (gate qualité 4Big · DevOps)
Débloque le dernier livrable DevOps Sprint 1 authorable en-repo (GAP §7).

- .gitea/workflows/ci.yml : pipeline Gitea Actions (Gitea ONLY, jamais GitHub)
  4 jobs : constraints-guard · validate-json · check-docs · gate agrégat.
- ci/guard_constraints.sh : enforce contraintes NON-NÉGOCIABLES CLAUDE.md
  (GitHub/GitLab/Bitbucket #2 · EspoCRM/HubSpot #3 · Stripe #10 ·
  /var/www/html/static · git clean · remote non-Gitea).
  Heuristique zéro faux positif (ignore lignes de prohibition) + escape ci-allow.
- ci/validate_json.sh : parse strict schémas Faisabilité↔Publiciste.
- ci/check_docs.sh : liens Markdown internes [HARD] + auto-score 4Big [SOFT].
- ci/README.md : doc pipeline + procédure enregistrement act_runner (VPS/DevOps).
- GAP_ANALYSIS §7 : critère CI/CD Gitea Actions -> done (runner VPS restant).

Validé localement : 3 scripts verts (exit 0) sans faux positif ;
test négatif (hubspot+github.com) -> guard exit 1 correct.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 00:30:40 +00:00
Claude Code DTP Worker 0b2c97916a [DTP-Worker] Sprint 1 · Template Faisabilité canonique v1.0 (débloque gap P02/P03/P05/P07)
- TEMPLATE_FAISABILITE_CANONIQUE_v1.0.md : 4 volets + champs obligatoires + bloc anti-gap prix/typologies
- version.schema.json : schéma _META/version.json (SemVer, score 4Big, verrou complete>=95)
- projets_master.schema.json : contrat d'extraction consommé par Publiciste
- Paramètres canoniques CLAUDE.md intégrés (3% / 8.5% / 52% · USD+DOP · Cardnet · Letter US)
- GAP_ANALYSIS §7 : critère template v1.0 -> done · daily report mis à jour

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-29 23:59:38 +00:00
Claude Code DTP Worker e63be08b3a [DTP-Worker] Sprint 1 deliverable · gap analysis complète 13 agents + OTOIA core · daily report 2026-07-29
- Audit existant vs cible MVP pour les 13 agents (refactor vs new)
- Confirme 12/13 = refactoring (gain ~47%), Publiciste seul module net-neuf
- Gap prioritaire: faisabilités P02/P03/P05/P07 hétérogènes (chemin critique)
- Risques, actions vérif VPS (déléguées DevOps), critères de sortie Sprint 1
- Zéro invention (contrainte #6): items non vérifiables marqués ⚠ à confirmer VPS

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-29 23:29:06 +00:00