Répertoire d'état + anticorps + injection adaptative + hooks réparés (ADR-0007)
AUDIT COMPLET FAIT : WaScript inexistant (coquille, assumé) ; session_start/post_tool_use AUDITÉS → 2 DÉFAUTS LATENTS v1.2 découverts et réparés (jeton $T non expansé dans heredoc quoté + heredoc consommé COMME stdin du programme : payloads jamais lus → 0 événement d'attribution en prod depuis v1.2 — la note « niveau 4 non prouvé » était justifiée). Règle §9 conservée (enrichissement volontaire) ; limites 200 corrigées (pagination) ; mémoire/graphes/blocs/analyste ADR-0004/5/6 conservés.
CHANGÉ — commits 289e7a4(concurrent)/7e2d281/643a35b/975272c/bd4102c :
- app/statehub.py (ADR-0007) : répertoire d'état déclaratif (75-78 entrées : fichiers+services+cron+hooks) empreintes sha256, historique complet, POURQUOI par feature (déclaration vérifiée > commit d'INTRODUCTION attribué > inconnu dit comme tel) ; ANTI-INTRUS (exigence opérateur) : un commit sans attribution par hook → why VIDE (message = preuve en provenance seulement), statut provisional/unknown + alerte ; reclassification diffère (les preuves arrivent après le 1er scan) ;
- hooks natifs réparés (jeton par ENV, programme via -c, stdin préservé) ;
- SessionStart ADAPTATIF (demande opérateur : plus un même bloc systématique) — /internal/v1/concierge/injection : ciblé par projet, delta d'alertes dédupliqué PAR SESSION, règles complètes une seule fois, budget 4000 car (preuve e2e : 3004 → 588 caractères) ;
- main.py NON commité volontairement : entremêlé avec research_vars (travail en cours d'un agent concurrent, commit 289e7a4 déjà landed) — mes hunks suivront leur landed, signalé ici faute de verrou contraignant.
TESTÉ — 204/206 + 1 skip verts avant l'arrivée des tests concurrently en cours du voisin (les leurs échouent en l'état, hors de mon périmètre) ; e2e prod : scan 78 entrées, 8 self (fichiers attribués in vivo PAR MON SESSION vivante), why=commit d'introduction, alerts state_drift distribué (digest), injection adaptative delta vérifié, attribution d'une session inconnue REFUSÉE (propriété anti-intrus).
RESTE — ratio_why 0.03 (historique pré-hooks provisoire : vérifications opérateur OU déclarations agent à écrire via state/declare) ; MCP why_feature/list_state livrés côté code, à re-tester au prochain client ; main.py à comitter par le voisin ou après.
VÉRIFIER — GET /internal/v1/state/stats ; POST /internal/v1/state/scan ; GET /internal/v1/state/why?name=app/memory.py ; claude mcp list. ANNULER — git revert 7e2d281..bd4102c + systemctl restart webui ; surfaces configurables data/state_surfaces.json.
Formats : Markdown · JSON · lien permanent : /rapports/pub-d842f77cf079f4d1