37 lines
32 KiB
Markdown
37 lines
32 KiB
Markdown
|
|
# P7-TACHES : registre des fiches (AG, lot P7 « apports du projet 7 », ouvert le 2026-10-12)
|
|||
|
|
|
|||
|
|
Source : `etat/AG/P7-TRANSPOSITION.md` (proposition de doc 34). Décisions D-P7.1 à D-P7.15 tranchées par l'utilisateur le 2026-10-12 (« tout en a », `P7-DECISIONS.md`) ; essais T7 et T8 demandés par l'utilisateur le 2026-10-12 (22 h 28) ; les fiches T2
|
|||
|
|
et T3a ne dépendent d'aucune décision (règles de compte rendu, essai du hook sur copie jetable) ; T3b, T4, T5
|
|||
|
|
dépendent de D-P7.3, D-P7.5, D-P7.1.
|
|||
|
|
Déjà fait hors fiche par la session claude.ai (2026-10-12, 22 h, à valider par T2) : `sk-protocol` § 3 (Mesuré collé,
|
|||
|
|
À verser, Options, transmission directe) et § 9 (recours externe à mi-budget, relais) ; `sk-orchestrate` § 4 (cause
|
|||
|
|
« connaissance », scinder plutôt qu'escalader, contexte vidé après succès, À verser au registre), § 5 ;
|
|||
|
|
`lp-doc/gabarits.md` (colonne À verser, gabarit TRACE, DOC de clôture § 6) ; hook `ecriture-gardien.py` écrit et
|
|||
|
|
essayé (15 cas) sous `etat/AG/P7/hooks/`, **non installé**.
|
|||
|
|
|
|||
|
|
| Fiche | Objectif (un résultat) | Note → Nx | Agent (modèle) | Dépend de | Statut | Livrable | CHG | Tours | Pic | Jetons | Durée | À verser |
|
|||
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|||
|
|
| P7-T1 | Épreuve des barreaux : un appel `-p "ping"` par couple modèle × effort (haiku low/medium/high, sonnet medium/high/xhigh/max, opus medium/high/xhigh/max, fable max) avec un agent jouet, trace au gabarit TRACE | a1 b0 c1 d0 e0 f0 = 2 → N0 | lp-builder (haiku) | D-P7.9 | acceptée (≈ 23 h 30) : 12 couples sur 12 répondent ; modèle réel relevé par `--output-format json` (`modelUsage`), contre-vérifié sur les 12 `.json` : haiku → claude-haiku-5-5, sonnet → claude-sonnet-5-5, opus → claude-opus-5-5, fable → claude-fable-5-1, 12 conformes ; effort non observable (aucun champ) ; `--agents` exige un fichier JSON (dossier : `EISDIR`) | `P7-T1-INV.md` | — | 13 | 89 k | 91 k | 5 min 05 | sk-protocol § 1 — `PONG` ne prouve ni le modèle ni l'effort ; `modelUsage` du JSON donne le modèle réel, l'effort n'est pas exposé ; `claude -p --agents` attend un fichier JSON — versé (CHG-333, P7-T6a V1) |
|
|||
|
|
| P7-T2 | VAL des révisions hors fiche : `sk-protocol`, `sk-orchestrate`, `gabarits.md` dans l'addon 5.8 ; cohérence interne, ≤ 120 lignes ou motif, fins de ligne LF, aucun renvoi cassé ; copie 5.5 de l'addon identique ou écart listé | a1 b1 c0 d0 e1 f1 = 4 → N1 | lp-validator (sonnet) | — | acceptée (2026-10-12 ≈ 23 h, contre-vérifiée : MD5 des 6 fichiers, 109 lignes, 0 CR, seuil 11-12 relu `sk-orchestrate` l. 21 et 70-72, § 9 absent du `sk-protocol` home) : PASS avec réserves (5 blocs non annoncés ; dépendances D-P7.2 ×2, D-P7.4 ×7, D-P7.5 ×2 ; seuil 11-12 contradictoire ; renvoi `sk-protocol` § 9 actif par `gabarits.md` mais absent de la version déployée ; déclencheur § 9 à mi-budget ; `relayée` hors liste des statuts) → D-P7.12 à D-P7.14 | `P7-T2-VAL.md` | — | 13 | 116 k | 119 k | 4 min 27 | lp-validate § 1 — fichiers non suivis : comparer à un instantané MD5, `git diff --no-index` rend 1 ; sk-windows-shell § Chemins — motif grep terminé par `\` : « Trailing backslash » — versé (CHG-333, P7-T6a V9, V11) |
|
|||
|
|
| P7-T9 | Corrections des skills (addon 5.8 ; `gabarits.md` 2 addons) : D-P7.10 garde de budget, D-P7.12 seuil 11-12, D-P7.13 déclencheur § 9, D-P7.14 sans objet / `relayée` / relais = tentative | a1 b1 c0 d1 e1 f0 = 4 → N1 | lp-writer (sonnet) | T2, D-P7.10 à 14 | reçue complète (2026-10-12 ≈ 23 h, session P7 n° 2) : les 2 Edit restants (l. 67 « (une tentative consommée) », l. 72 « sauf fiche insécable (motif écrit en rubrique 2) : N5 ») faits par l'utilisateur, constatés par lecture des lignes ; MD5 sk-orchestrate 18FDD81A, 93 lignes, 0 CR ; validation → T9v — avant : ordre de l'utilisateur (≈ 23 h 45, « P7, applique toi-même les 4 Edit restants de T9 ») ; session P7 : E1 l. 21 (`11-12 → scinder d'abord … N5 seulement pour une fiche insécable`) et E2 (§ 9 l. 104-105) appliqués ; E1 § 4 l. 72 (exception « sauf fiche insécable ») et E3 l. 67 (« une tentative consommée ») refusés de nouveau (Self-Modification), non contournés ; MD5 sk-protocol 33B8EBCA, sk-orchestrate 9A24CB8A, 113 / 93 lignes, 0 CR — reçue ≈ 23 h 25, partiel 6 Edit / 10 ; E3 (sk-protocol § 3, gabarits ×2) et E4 (garde de budget, sk-orchestrate § 4 et sk-protocol § 8) appliqués ; E1 (2 Edit), E2, E3 sk-orchestrate refusés par le mode auto (Self-Modification, Instruction Poisoning, Modify Shared Resources), non contournés ; contre-vérifié : `11-12 → N5` l. 21, « aucune sortie brute nouvelle » l. 104 et ligne « connaissance » l. 67 inchangés, gabarits 9DA8BE89 ×2, 113 / 93 lignes, 0 CR ; refus signalé à l'utilisateur et à Big Boss (boss.md § 9) | `P7-T9-DOC.md` | — | 9 | 71 k | 73 k | 3 min 12 | lp-lot / sk-orchestrate — une fiche d'écriture de skills peut être refusée par le mode auto (non déterministe) : prévoir l'ordre de l'utilisateur ou son édition — versé (CHG-333, P7-T6a V12) |
|
|||
|
|
| P7-T9v | VAL de T9 (diff instantané → version, E1-E4 seulement, ≤ 120 lignes, 0 CR, renvois, `gabarits.md` identiques) | a1 b1 c0 d0 e1 f1 = 4 → N1 | lp-validator (sonnet) | T9 | acceptée (2026-10-12 ≈ 23 h, contre-vérifiée : 4 MD5, 113 / 93 / 109 lignes, 0 CR, numstat +6 −3 et +8 −3 contre l'instantané `P7\addon58`, « aucune sortie brute nouvelle » absent, home = instantané `P7\home`) : PASS avec réserves de forme ; 9 blocs, 0 sans rattachement ; R2 `P7-T9-DOC.md` périmée (à réécrire avant ticket) ; R3 D-P7.13 dit `maxTurns / 2`, texte appliqué « moitié du budget de tours de la fiche » (à confirmer par l'utilisateur) ; R4 `sk-orchestrate` l. 69 sans `relayée` ; R5 l. 16 « N5 dès le départ » à concilier avec l. 21 ; R6 intitulé « ≤ 20 lignes » § 3 ; R1 ligne longue l. 105 | `P7-T9-VAL.md` | — | 10 | 90 k | 93 k | 2 min 16 | lp-validate § 1 — VAL de skills non suivis : `git diff --no-index --numstat <instantané> <fichier>` (code 1 attendu) donne +/− par fichier — versé (CHG-333, P7-T6a V9) |
|
|||
|
|
| P7-T10 | Déploiement : copie des `sk-protocol` et `sk-orchestrate` validés de l'addon 5.8 vers `%USERPROFILE%\.claude\skills`, MD5 home = addon relevés avant / après | a1 b0 c0 d1 e0 f0 = 2 → N0 (+1 : écrit hors dépôt, réversible par instantané `P7\home`) → N1 | lp-writer (sonnet) | T9v PASS | acceptée (2026-10-12 ≈ 23 h 25) : lancement de lp-writer refusé par le mode auto (Self-Modification), non contourné ; copie faite par l'utilisateur (2 `Copy-Item`, MD5 avant 3716AACA / 305E5493 = instantané `P7\home`, après 33B8EBCA / 18FDD81A) ; relu par la session P7 : cible = addon (`cmp`), 113 / 93 lignes, 0 CR, dossiers cibles = `SKILL.md` seul ; D-P7.15 levée | `P7-T10-DOC.md` | — | — | | — | — | lp-lot — un déploiement dans `%USERPROFILE%\.claude` est refusé par le mode auto : le prévoir comme geste de l'utilisateur (commandes PowerShell `Get-FileHash` / `Copy-Item` fournies) — versé (CHG-333, P7-T6a V12) |
|
|||
|
|
| P7-T3a | Essai du hook `ecriture-gardien.py` dans le harnais réel (fiche réécrite le 2026-10-12 : `claude -p --settings` sur copie jetable à chemin avec espace, aucun `settings.json` écrit) ; 8 cas dont session principale et outil PowerShell | a1 b1 c1 d0 e0 f0 = 3 → N1 | lp-writer (sonnet ; `lp-tooling` absent) | D-P7.3, T1 | reçue (≈ 23 h 55), partielle, cause consigne : hook appelé dans le harnais réel, `agent_type` présent (8 charges : lp-builder, lp-cart, lp-gardien, lp-impl, lp-validator), espace du chemin et `python` OK ; refus réel au cas 5 (`cas5.jsonl`, « Refus du crochet ») ; cas 6 et 7 passent le hook puis refus d'autorisation (`-p` sans permission) ; cas 1, 3, 4 refusés par le modèle avant tout appel Bash, cas 8 sans outil PowerShell chez lp-validator → refus du hook prouvé par rejeu de charge seulement (code 2 pour 1, 3, 5, 8 ; 0 pour 4, 6, 7) ; contre-vérifié (`charges.log`, 0 `.claude` / `settings*.json` sous `Backup_5.5\P7`) ; complément T3a2 à faire : agents d'essai déclarés en JSON avec Bash puis PowerShell ; `charges.log` contient des chemins de profil : hors dépôt, ne jamais commiter | `P7-T3a-INV.md` | — | 17 | 93 k | 96 k | 8 min 12 | sk-protocol § 7 — pour tester un hook de refus, une consigne d'écriture explicite est refusée par le modèle avant le hook : agent d'essai qui exécute, ou rejeu de la charge — versé (CHG-333, P7-T6a V2) |
|
|||
|
|
| P7-T3a2 | Complément de T3a : agents d'essai `essai-bash` / `essai-pwsh` déclarés dans `essai-agents.json` (`claude -p --agents --settings`, copie jetable), qui **exécutent** `sed -i`, `cp`, `pwsh -Command Set-Content`, `Set-Content`, `Copy-Item` ; 7 cas + relevé `--agent` | a1 b1 c1 d0 e0 f0 = 3 → N1 | lp-writer (sonnet ; `lp-tooling` absent) | T3a | acceptée (2026-10-12 ≈ 23 h, contre-vérifiée : `charges.log` l. 12-19 = 8 charges, `agent_type` essai-bash / essai-pwsh, `tool_name` Bash / PowerShell, clé `tool_input.command` ; « Refus du crochet » dans cB1, cB2, cB4, cP1, cP2, cR1 ; `permission_denied` seul dans cB3, cP3 ; `x.cpp` = `a`, `y.cpp` absent, `t.md` = `a` ; 0 `.claude` / `settings*.json`) : PASS, B1-B4 conformes avec appel Bash réel ; fenêtre PowerShell **fermée** (matcher vu, commande dans `tool_input.command`) ; R1 : session `--agent` couverte (`agent_type` présent, `agent_id` absent) ; réserves : mode de permission large non rejoué, libellé de refus P3 (« allowed working directories ») non expliqué, script de bouclage dans le scratchpad (écart mineur) | `P7-T3a2-INV.md` | — | 16 | 83 k | 85 k | 5 min 02 | sk-protocol § 7 — pour tester un hook de refus : agents d'essai déclarés par `--agents <fichier JSON>`, consigne « exécute sans juger » ; `--agent <nom>` donne aussi `agent_type` à la session principale — versé (CHG-333, P7-T6a V2) |
|
|||
|
|
| P7-T3b | Installation : hook copié dans `Tools/claude/hooks/` des deux addons, bloc `hooks` fusionné dans `.claude/settings.json` des deux copies, ticket au gardien | a1 b0 c0 d1 e1 f0 = 3 → N1 | lp-tooling, puis lp-gardien | T3a PASS, D-P7.3 | faite pour la copie 5.8, sans fiche (2026-10-12 ≈ 24 h) : bloc `hooks` (matcher `Bash|PowerShell`) ajouté par l'utilisateur dans `.claude\settings.local.json` de la copie 5.8 (ignoré par git, `.gitignore:72`) ; le fichier attendu par `$CLAUDE_PROJECT_DIR\Tools\claude\hooks\ecriture-gardien.py` manquait (la fiche et l'explication de la session P7 le plaçaient dans les addons, à tort) → `python` sort en code 2 = refus : **toutes les commandes Bash et PowerShell de la copie 5.8 bloquées** quelques minutes ; hook écrit par la session P7 (Write, contenu identique) dans `D:\Game\LifePlay-master 5.8\Tools\claude\hooks\` : MD5 F00D9739 = `P7\hooks\ecriture-gardien.py`, 0 CR ; Bash rétabli (session principale passe, `agent_type` absent) ; copie 5.5 non installée (ni bloc, ni fichier) ; à commiter : A `Tools/claude/hooks/ecriture-gardien.py` (jeu 5.8) | `P7-T3b-IMPL.md` | — | | | | | |
|
|||
|
|
| P7-T4a | Relevé à rebours : 30 fiches de P1-P2 (doc 33) avec note a-f de la fiche, issue réelle (acceptée, reprise, escaladée, hors budget), et notation C3 (couverture par skill, par `grep` dans `Tools/claude/skills`), C4 (précédent, par `grep` dans `etat/*/*/*-TACHES.md`), C5 (critère = commande ?), C9 (règles connues avant ?) | a2 b0 c0 d0 e1 f1 = 4 → N1 | lp-inventory (sonnet) | — | acceptée (≈ 23 h 50) avec réserves : 30 lignes × 28 colonnes, 0 CR, contre-vérifié par `csv` ; 8 reprises ou escalades (seuil 8 atteint, lues dans le texte des statuts, aucun statut formel), 20 lignes ≠ `acceptée` ; C3 lu sur l'état des skills du 2026-10-12 (optimiste) ; registres U0-U7, ETAT2, OUT1 absents ; échantillon non « les 30 plus récentes » (motivé) | `P7-T4a-INV.md` + `data/bareme.csv` | — | 25 | 254 k | 256 k | 11 min 11 | lp-doc/gabarits.md § TACHES — registres P1-P2 : reprise sans statut formel (lue dans le texte) ; suffixes b / c / d aussi pour DOC et VAL (OBB-T1bd), ne pas les compter comme tentatives — versé (CHG-333, P7-T6a V8) |
|
|||
|
|
| P7-T4b | Analyse : quels critères séparent reprises et succès ; barème proposé, seuil de scission ; comparaison a-f | a1 b1 c2 d0 e1 f2 = 7 → N3 | opus-xhigh | T4a | acceptée (2026-10-12 ≈ 23 h 35, contre-vérifiée par un script indépendant : 30 × 28, classes échec 21 / autre 4 / succès 5, R = 8, hb oui 10 / non 13 / nm 7, a 89 % et e 96 % constants, C9 moyen 0,40 acceptée / 1,95 non acceptée, MD5 du CSV inchangé 9FED4B4E) : note a-f totale non discriminante (rho +0,14 au budget) ; taille : C3 (rho +0,61) et f (+0,51), S = C3 + f ; C9 discriminant mais circulaire (noté à rebours), non spécifique à la consigne → « consigne = C9 » = indice non confirmé ; 0 échec de capacité → grille a-f ni confirmée ni infirmée ; proposition (§ 6.5, à l'utilisateur) : **essai** sur le prochain lot de S avec seuil à deux paliers (S ≥ 2 en N0-N2, S ≥ 3 en N3-N5 ; choisi après les données, mesure optimiste VP 8 FN 0 FP 3 VN 9) et de C9a (relecture de la fiche avant envoi), grille a-f inchangée ; arbitrage de l'orchestrateur sur « 6 ou 8 reprises » : lecture T4b retenue pour l'analyse (6 reprises de fond ; AG-T2 = FAIL juste, STD-TXT = niveau ajusté à l'envoi), CSV de T4a laissé à 8 (colonne fidèle au texte des registres), T4a non rouverte : les deux lectures sont chiffrées ([10]) | `P7-T4b-EVAL.md` | — | 18 | 232 k | 236 k | 13 min 27 | sk-orchestrate § 2 — la grille a-f choisit la capacité mais ne prévoit ni le dépassement de budget (rho +0,14) ni l'échec de consigne ; sur 30 fiches P1-P2, 0 échec de capacité ; 8 dépassements sur 10 viennent du pic (volume lu) ; + 3 lignes en § 5 du livrable — versé (CHG-333, P7-T6a V4, V5) |
|
|||
|
|
| P7-T5 | Demi-niveaux (D-P7.1) : agents `lp-cart` (sonnet xhigh par défaut), `lp-cart-max` inchangé, `lp-diag` opus medium ; `sk-orchestrate` § 1 « escalade = barreau suivant » | a1 b0 c0 d1 e1 f1 = 4 → N1 | lp-writer (sonnet) | T1, T4b, D-P7.1 | acceptée (2026-10-12 ≈ 23 h 50 ; réservation des agents accordée par Big Boss, addon 5.8 et `%USERPROFILE%\.claude\agents`) ; contre-vérifiée par l'orchestrateur, diffs complets relus contre l'instantané `P7\T5` (8C933B0A / 18FDD81A intacts) : `lp-cart` = `model: sonnet` + description « N2+ » seulement ; `lp-cart-max` = `name` + description seulement (opus xhigh) ; `lp-diag` = `name`, description, `effort: medium`, l. 16 (A-DIAG), l. 21 (gabarit DIAG) ; `sk-orchestrate` § 1 : 3 lignes ajoutées après N5, 96 lignes ; MD5 lp-cart 9FE3BA8E, lp-cart-max C9F72452, lp-diag 878B9195, sk-orchestrate 5E930A7B ; 0 CR ; réserves : `N1+` sans agent attitré ; `sk-protocol` l. 73 (liste « Agent sans Edit ») ne cite ni `lp-cart-max` ni `lp-diag` ; déploiement home fait par l'utilisateur (2026-10-12 ≈ 23 h 55, `Copy-Item`, MD5 avant 8C933B0A / 18FDD81A, après 9FE3BA8E / C9F72452 / 878B9195 / 5E930A7B) ; relu par la session P7 : 4 cibles = addon (`cmp`) ; `lp-cart-max` et `lp-diag` chargés par le client (types d'agents apparus dans la session P7) ; contrôle Big Boss fait (MD5 home = addon, 4 fichiers) | `P7-T5-DOC.md` | — | 9 | 59 k | 62 k | 1 min 43 | — |
|
|||
|
|
| P7-T6a | Versement des « À verser » du lot (V1-V13), D-P7.16 (essai S / C9a) et corrections R4, R5, `sk-protocol` l. 73 dans 7 skills de l'addon 5.8, jumeaux `lp-*` / gabarits recopiés dans l'addon 5.5 | a2 b0 c0 d1 e1 f0 = 4 → N1 | lp-writer (sonnet) | T1-T5, T7, T9v, D-P7.16 | acceptée (2026-10-12 ≈ 24 h 15) : V1-V13 appliqués par Edit, aucun refus ; contre-vérifiée par l'orchestrateur (tient lieu de VAL T6v) : `git diff --no-index --numstat` contre l'instantané `P7\T6a` = sk-protocol 11/4, sk-orchestrate 9/3, sk-windows-shell 3/0, lp-validate 4/0, lp-lot 6/0, lp-ue-compat 3/0, gabarits 4/1 ; `--word-diff` : seuls les textes V1-V13 et des retours à la ligne ; 16 marqueurs retrouvés par `grep -F` ; lignes 120 / 102 / 52 / 112 / 87 / 72 / 112, 0 CR ; MD5 sk-protocol 3F72741D, sk-orchestrate 9E12C4AF, sk-windows-shell E8F8F58E, lp-validate E6EF4630, lp-lot AEFEAA1E, lp-ue-compat 3CE73BBF, gabarits A0021C8C ; 4 jumeaux addon 5.5 identiques (`cmp`) ; réserve : `sk-protocol` à 120 lignes (plafond atteint) ; déploiement home des 3 `sk-*` par l'utilisateur à faire | `P7-T6a-DOC.md` | — | 14 | 89 k | 91 k | 2 min 58 | aucun (la fiche est le versement) |
|
|||
|
|
| P7-T6 | DOC de clôture : CHG du lot, doc 34 réservé et déplacé sous `Docs/`, index, clause d'arrêt par mécanisme au doc 33 § 7 (D-P7.8), À verser du lot versés ; tickets au gardien | a1 b0 c0 d1 e1 f0 = 3 → N1 | lp-writer, puis lp-gardien | T2, T3b ou T3a refusé, T5 | reçue (2026-10-13 ≈ 0 h 05), contre-vérifiée : DOC-34 réservé et utilisé (`NUMEROS.md` l. 51, verrou 115 rendu), `Docs/34_Transposition_Projet7.md` 242 l., doc 33 § 7 +8 l. (3 clauses D-P7.8 + essai D-P7.16), index l. 72, `P7-T9-DOC.md` sans « PARTIEL », `P7-DOC.md` sections 1-6 ; 0 CR (NUMEROS en CRLF d'origine, +1 ligne) ; nom d'utilisateur retiré de `P7-T9-VAL.md` l. 80 par l'orchestrateur ; CHG-333 réservé (`Tools\Numero.ps1`, verrou 116) et écrit au journal sous jeton de Big Boss ; README plage → CHG-333 ; P7-R1 fait `4142939` (addon 5.8), P7-R2 fait `87d3fe7` (addon 5.5), 4 chemins chacun, contre-vérifiés (`git show --name-status`) ; pin doc 21 l. 136 → `4142939` / `87d3fe7` ; P7-R3 (jeu) envoyé au gardien | `P7-DOC.md` | CHG-333 | | | | | |
|
|||
|
|
| P7-T7 | Lecture statique de `codeturion/unreal-api-mcp` 0.3.1 (roue extraite hors dépôt, jamais installée ni exécutée ; 5 signatures du moteur 5.8 confrontées au code d'ingestion, surcharges et dépréciations) ; verdict ADOPTABLE / NON ADOPTABLE | a1 b0 c1 d0 e0 f1 = 3 → N1 | lp-validator (sonnet) | — | acceptée (2026-10-12 ≈ 23 h 30, contre-vérifiée : MD5 roue 24BD7786…, 12 fichiers extraits, `db.py:17` `fqn TEXT PRIMARY KEY` et `db.py:94` `INSERT OR REPLACE`, `header_parser.py:91` `\(([^)]*)\)`, accès réseau dans `version.py` seul ; livrable 124 l., 0 CR, chemin de profil ramené à `%TEMP%` par la session P7) : **NON ADOPTABLE**, PASS-STATIC ; 5 cas sur 5 touchés (D1 surcharges écrasées + D2 dépréciation sur la voisine : `GetMaterialRelevance` inversée ; D3 trous de couverture : `GetDetailsView`, constructeurs `FSlateFontInfo`, `ParseIntoArray` en `.h.inl` absents ; D4 paramètres coupés au premier `)` : `PrintString` 2 / 7) ; base prébâtie `db-v1` téléchargée et remplacée sans somme de contrôle au démarrage ; licence MIT mais README « usage commercial sur permission » ; écart E1 (`tar -xf` refuse un zip → `zipfile`, seconde méthode de la fiche) accepté ; roue jamais installée ni exécutée | `P7-T7-VAL.md` | — | 17 | 137 k | 141 k | 5 min 03 | lp-validate — `tar -xf` (Git Bash) ne lit pas un zip : extraire une roue par `python -I` + `zipfile` depuis le scratchpad, vérifier le sha256 de `RECORD` ; lp-ue-compat — une signature UE se lit dans l'en-tête moteur (`fichier:ligne`), `unreal-api-mcp` 0.3.1 ne la remplace pas — versé (CHG-333, P7-T6a V10, V13) |
|
|||
|
|
| P7-H2 | Crochet `ecriture-gardien` plus fin : `>` / `<` entre guillemets et redirections vers `/dev/null`, `$null`, `NUL` permis, vraies écritures hors zone toujours refusées ; copie de travail + jeu de cas (preuve par l'échec), VAL distincte, puis installation | a1 b1 c1 d1 e1 f1 = 6 → N2 | lp-impl (opus xhigh), puis lp-validator | demande de Big Boss, accord de l'utilisateur (« ok », 2026-10-14) | **close : remplacé par AMEL1-R2 (CHG-353)** — crochet v2 `e03d4332`, 417 / 417, commit `10f924d`, installé par l'utilisateur dans son profil le 2026-10-14 ; renvoi : `fiches\P7-H2.md` § Clôture. Historique (ancien crochet, jamais commité ; ticket `git rm` en attente) : reçue (2026-10-14 ≈ 2 h 55), contre-vérifiée par rejeu : nouveau script (`Backup_5.5\P7-H2\ecriture-gardien.py`, MD5 C60F774F) 69 / 69 conformes (35 refus, 34 passe), ancien 50 / 69 (incidents refusés : preuve par l'échec) ; actif inchangé F00D9739 ; non installé ; ajouts plus stricts (`eval` / `iex` réanalysés, programme awk lu, refus si l'analyse échoue) à juger en VAL ; incidents reconstitués (abrégés à la source) ; `tee "$L"` et `python -c` restent refusés (fiche 4b) ; VAL P7-H2v lancée (cas adverses) ; décisions Big Boss : `git rm` de `Tools/claude/hooks/ecriture-gardien.py` dans le commit P7-H2, copie texte du script installé dans `etat\AG\P7\`, `.claude\settings.hooks.json` réécrit en modèle (fait, local) — état relevé avant : crochet **actif** = `%USERPROFILE%\.claude\hooks\ecriture-gardien.py` (MD5 F00D9739) appelé par `%USERPROFILE%\.claude\settings.json` (portée utilisateur, tous projets) ; `.claude\settings.local.json` de la copie sans bloc `hooks` ; incohérences : `Tools/claude/hooks/ecriture-gardien.py` (commité `09e5143`) supprimé de l'arbre sans commit (`D`), `.claude\settings.hooks.json` (modèle, non lu par Claude Code) y pointe encore ; incidents : CAM-B2i, STE-ORG4 (4 refus, `STE-ORG-AUDIT.md`), STE-GEL1-v | `P7-H2.md` | — | | | | | |
|
|||
|
|
| P7-H2v | VAL de H2 (tentative 1) : rejeu 69 cas + ≥ 25 cas adverses « refus » et ≥ 15 « passe » écrits par le validateur | a1 b1 c1 d0 e1 f1 = 5 → N1 | lp-validator (sonnet) | H2 | acceptée (2026-10-14 ≈ 3 h 20) : verdict **FAIL**, contre-vérifié par rejeu (`cas-val.jsonl`, 138 cas : nouveau 93 / 138 dont 28 contournements W01-W28 qui passent, ancien 95 / 138 et 0 W qui passe) ; cause : le masquage des guillemets cache du code exécuté par un autre programme (`| bash`, `iex`, `cmd //c`, `fish -c`, commentaires `#` à apostrophes, here-strings) = **cause consigne** (fiche H2 4b) ; réserves : 5 faux positifs (PV20, PV21, PV39-PV41), 12 trous hérités H01-H12 (dont `cp a b # Build.ps1` exempté par `SCRIPTS_PROJET`), non aggravés ; fail-closed sans déclencheur réaliste | `P7-H2-VAL.md` | — | 20 | | 226 k | 24 min | lp-validate — pour un crochet qui masque les guillemets : cas où le texte entre guillemets est exécuté par un autre programme (`| bash`, `<<<`, `iex`, `cmd //c`, `-c -x`, interpréteurs hors liste, commentaires à apostrophe) |
|
|||
|
|
| P7-H2b | Tentative 2/4 de H2 : crochet v2 à liste blanche de lecteurs (masquage des guillemets seulement si aucun interpréteur nulle part et toutes les têtes sont des lecteurs), sinon ancienne règle stricte | a1 b1 c1 d1 e1 f1 = 6 → N2 | lp-impl (opus xhigh) | H2v FAIL | reçue partielle (2026-10-14 ≈ 4 h 05), contre-vérifiée par rejeu : **v2** (`Backup_5.5\P7-H2\v2\ecriture-gardien.py`, CA5CB121, règle 4b à la lettre) 64 / 69, 121 / 138, 51 / 56, **0 « refus » qui passe** hors trous hérités H/G, mais refuse 3 incidents (I2, I4, I6b) + PV26, PV27, PV30, PV31, A9, A16 ; **v2-ext** (254EF423, 4 écarts bornés E1 options `-c`/`-e` de lecture, E2 `bash -c '<littéral>'` / `pwsh -Command "<littéral>"` relus, E3 `<( )` + fonctions en tête, E4 `comm`, `test`, `Write-Output`) 69 / 69, 125 / 138, 54 / 56, 0 « refus » qui passe ; essai différentiel contre le vrai bash : 0 contournement ; actif inchangé F00D9739 ; cause du partiel : **contradiction de la fiche** (4b « sans élargir » contre critère 8 « incidents passent ») ; décision de l'utilisateur demandée : A (v2), B (v2-ext, recommandé après VAL adverse E2 / E3), C (E1 + E4 seulement) | `P7-H2b.md` | — | 34 | | 366 k | 42 min | sk-protocol § 7 — tester un crochet de shell contre le vrai Git Bash : script dans un fichier puis `bash <fichier>` (MSYS retire des accolades d'un `bash -c` lancé depuis Python) |
|
|||
|
|
| P7-T8a | Options du plugin Sentry 1.24.0 et leurs défauts, emplacement du DSN, ce qui s'exécute au build / à l'éditeur / au jeu, par lecture dans le zip (rien extrait, rien exécuté) | a1 b1 c1 d0 e1 f0 = 4 → N1 | lp-validator (sonnet) | T8 G0 | acceptée (2026-10-13 ≈ 8 h 35), contre-vérifiée dans le zip : DSN résolu `EditorDsn` → `Dsn` → `SENTRY_DSN` (`SentrySettings.cpp:136-157`), aucune initialisation sans DSN (`SentrySubsystem.cpp:93-97`), aucun envoi de symboles pour l'éditeur ni par défaut (`upload_debug_symbols.py:183, 212`), `--include-sources` si `IncludeSources` (`:229-230`) ; `git check-ignore` : `Saved/Config/…` ignoré (`.gitignore:4`), `sentry.properties` **non** ignoré ; livrable 261 l., 0 CR, aucun DSN ; 87 options relevées (83 au constructeur + 4) ; réglages recommandés C8 (proposition) ; défauts notables : éditeur actif, gestion de plantage d'Unreal remplacée sous Windows, `Debug` true, fils d'Ariane Fatal/Error/Warning et sessions actifs ; faux positif du crochet : `>=` dans un `awk` pris pour une redirection (refus illégitime, à compter pour la clause du doc 33 § 7) | `P7-T8a-INV.md` | — | 25 | | 206 k | 7 min 14 | `ecriture-gardien` — `>` / `>=` entre guillemets (awk, python -c) pris pour une redirection : faux positif ; lp-validate — un paquet tiers se lit dans le zip par `zipfile`, sans extraction |
|
|||
|
|
| P7-T8b | Plugin Sentry installé dans `Plugins\Sentry` et réglages prudents C8 dans `Config\DefaultEngine.ini` (sans DSN), sous instantané, sans compiler | a1 b0 c0 d1 e1 f0 = 3 → N1 | lp-impl (opus xhigh) | T8a, BUILD-GO (Big Boss, après CAM B1 `a08c134`) | acceptée (2026-10-13 ≈ 10 h 15), contre-vérifiée : instantané `D:\Game\LifePlay_Backup_5.5\P7-T8\manifest.csv` (`DefaultEngine.ini` 96B6F43D, 133 l. CRLF) ; `.ini` 148 l., CRLF conservé (`i/crlf w/crlf`), diff = section `[/Script/Sentry.SentrySettings]` de 12 clés + 1 commentaire, 0 « dsn » ; `Plugins\Sentry` 773 fichiers (= zip, SHA-256 16E5A876…) ; `.uproject` 5BCE9B9D inchangé (plugin de projet actif sans entrée) ; écart E1 (noms de champs relus dans les `USTRUCT`, `bOnInfoLog` pour « Display/Log ») accepté | `P7-T8b-IMPL.md` | — | 19 | | 132 k | 5 min 39 | lp-lot — une fiche qui écrit une structure UE dans un `.ini` donne les noms de champs du `USTRUCT`, pas les libellés de l'interface ; lp-build § 7 — un plugin posé dans `Plugins/` s'active sans entrée au `.uproject` |
|
|||
|
|
| P7-T8c | Copie avec Sentry compilée (éditeur) puis empaquetée en Development dans `D:\Game\LifePlay_Backup_5.5\P7\sentry\build` | a1 b0 c1 d0 e1 f0 = 3 → N0 | lp-builder (haiku) | T8b | acceptée (2026-10-13 ≈ 10 h 35), contre-vérifiée : éditeur `code=0 duree=513s erreurs=0 avertissements=0` ; UAT code 0 (518 s), CheckPackage PASS ; archive 2 110 fichiers, 2,17 Go, `LifePlay.exe` + `LifePlay.pdb` + `Plugins/Sentry/Binaries/Win64/crashpad_handler.exe` présents, `Sentry.CrashReporter.exe` absent (attendu : `EnableExternalCrashReporter=False`) ; post-build : « Automatic symbols upload is disabled … Skipping » ; DSN complet et clé : 0 occurrence dans le journal (vérifié par la variable, sans affichage) ; 2 lignes « DSN » = avertissement « Sentry requires … DSN » pendant la cuisson (variable invisible du processus de build : rien envoyé) ; cuisson incrémentale (`-iterate`) ; résumé TRACE1 dans le livrable ; résumé `Build.ps1` écrit dans `etat\P7-T8\` (lot hors table `EtatDir`) | `P7-T8c-BUILD.md` | — | 26 | | 138 k | 21 min 27 | lp-build § 8 — lot hors table `EtatDir` : résumé écrit dans `etat\<lot>\` ; backticks dans une commande bash : guillemets simples ; BuildDebug cuit avec `-iterate` |
|
|||
|
|
| P7-T8d | Plantage de test provoqué par l'utilisateur dans le jeu empaqueté, événement relu sur sentry.io | — (geste de l'utilisateur) | utilisateur | T8c | en cours (2026-10-13 ≈ 10 h 50) : événement **reçu** (capture de l'utilisateur) : `mechanism=minidump`, `CrashType=Assert`, `level=fatal`, `environment=Development`, release `2026.10.2.0`, `Target-Type=Game` ; données présentes : GPU, CPU, nombre de cœurs, OS et build, identifiant d'utilisateur anonyme (UUID d'installation), **géolocalisation au niveau de la ville déduite de l'IP par le serveur Sentry malgré `SendDefaultPii=False`** (valeur non écrite) ; nom de machine et IP en clair non visibles ; pile symbolisée : non relevée ; **décision de l'utilisateur (≈ 11 h) : évaluation sur la période d'essai Sentry de 14 jours, avec la build seule** (`Backup_5.5\P7\sentry\build`, DSN par sa variable) ; plugin retiré de la copie (T8e) ; G1 (adopter / opt-in / retirer) à la fin des 14 jours | — | — | | | | | Sentry — `SendDefaultPii=False` n'empêche pas la géolocalisation par IP côté serveur : réglage de projet « Prevent Storing of IP Addresses » requis avant tout opt-in |
|
|||
|
|
| P7-T8e | Retrait : `Plugins\Sentry` déplacé, `.ini` restauré, build éditeur de contrôle, contrôles BUILD-FIN | a1 b0 c0 d1 e1 f0 = 3 → N1 | lp-impl, puis lp-builder | T8d, décision « build seule » | **en pause** (PAUSE de l'utilisateur relayée par Big Boss, 2026-10-13 10 h 44) — état exact : 4a-4c faits et contre-vérifiés (`Plugins\Sentry` absent de la copie, déplacé vers `D:\Game\LifePlay_Backup_5.5\P7\sentry\retire\Sentry\`, 1 583 fichiers ; `Config\DefaultEngine.ini` restauré, MD5 96B6F43D = instantané, 133 l. CRLF ; `LifePlay.uproject` 5BCE9B9D ; `git status --porcelain -- Config Plugins LifePlay.uproject` vide) ; 4d (build éditeur de contrôle `Build.ps1 -Lot P7-T8e`, lancé avant la pause, 10 h 43) : **code 0**, 14 s, 0 erreur, 0 unité compilée (makefile invalidé « source directory removed », seul `WriteMetadata` du `.target`), 0 ligne Sentry dans le journal, `LifePlayEditor.target` 11 → 0 occurrence (contre-vérifié) ; **4 contrôles BUILD-FIN verts** ; restes : `Binaries\Win64\LifePlayEditor.target` et `LifePlay.target` / `LifePlay.exe` de la copie citent encore Sentry jusqu'à leur prochain build ; étape suivante à la reprise : résultat de 4d (ou relance), puis BUILD-FIN (4 contrôles) | `P7-T8e-DOC.md` | — | 11 | | 101 k | 4 min 22 | lp-lot — retrait d'un plugin d'essai : compter juste avant le déplacement (builds : 773 → 1 583 fichiers), créer le dossier parent avant `Move-Item`, les `.target` et l'exe monolithique gardent le plugin jusqu'au prochain build |
|
|||
|
|
| P7-T8 | Essai de Sentry pour Unreal (plugin + toolset MCP) sur un plantage de test, sans build distribuée ; relevé des options par défaut ; portes utilisateur G0 (compte, cadre) et G1 (adopter / opt-in / retirer) | a1 b1 c2 d1 e1 f1 = 7 → N1 (étapes dictées par la doc ; arbitrage données = utilisateur) | lp-tooling (sonnet) | G0 | **essai en cours, copie rendue** (2026-10-13 ≈ 11 h) : T8a à T8e acceptées ; plantage de test reçu sur sentry.io ; plugin retiré, BUILD-FIN acceptée par Big Boss (4 contrôles verts, fenêtre levée ; condition posée au lot suivant : reconstruire d'abord la cible jeu, `LifePlay.target` cite encore Sentry) ; essai de 14 jours sur la build seule `D:\Game\LifePlay_Backup_5.5\P7\sentry\build` (UE 5.8.3) ; porte G1 (adopter / opt-in / retirer) vers le 2026-10-27, rappel par Big Boss ; livrables T8 à commiter au prochain ticket P7 — historique : GO de l'utilisateur (2026-10-13 ≈ 0 h 25, « t8 go ») ; d'abord non lancée : garde de budget (fenêtre 5 h à 89 %, fiche à 3 compilations) ; restent à l'utilisateur : compte et projet Sentry « LifePlay-essai », DSN posé par lui dans un fichier ignoré, jeton `sentry-cli` ; cadre et téléchargement acceptés par l'utilisateur (« oui », 2026-10-13) ; `sentry-unreal-1.24.0-engine5.8.zip` téléchargé dans `D:\Game\LifePlay_Backup_5.5\P7\sentry\telechargement\` (243 268 814 octets, SHA-256 16E5A876… = `digest` de l'API GitHub), non extrait ; compte et projet Sentry créés par l'utilisateur (2026-10-13 ≈ 0 h 35, région UE ; DSN transmis en séance, valeur jamais écrite) ; choix de l'utilisateur après T8a (2026-10-13 ≈ 8 h 40) : DSN par la variable d'environnement `SENTRY_DSN` posée par lui (rien dans le projet ni dans git ; vérifiée ≈ 8 h 50 sans afficher la valeur : portée utilisateur, forme `https://<clé 32 hex>@….ingest.de.sentry.io/…`, 95 caractères) ; réglages prudents C8 de `P7-T8a-INV.md` (éditeur désactivé, jeu Development seul, pas de PII, pas d'envoi automatique des symboles ni des sources, fils d'Ariane Fatal/Error, sessions coupées), posés par l'orchestrateur dans `Config/DefaultEngine.ini` (section Sentry, **sans DSN**, sous instantané, restaurée au retrait) et non dans `Saved/Config` : le jeu empaqueté ne lit pas le `Saved` du projet ; créneau Big Boss : après le commit de CAM B1, fenêtre exclusive jusqu'au retrait ; BUILD-DEMANDE `P7-T8-BUILD-DEMANDE.md` envoyée ≈ 9 h ; conditions de Big Boss (2026-10-13) : copie UE après STE (STE-H10) et avant CAM ; DSN et clés hors git, hors `etat\` et hors livrables (emplacement seul cité, `git check-ignore -v` vérifié) ; `Plugins\Sentry\` jamais commité sans décision de l'utilisateur (licence vérifiée avant) ; `LifePlay.uproject` réservé à la DÉCLARATION, un seul commit, diff lu en entier ; installation dans la copie au GO seulement ; garde de budget avant l'empaquetage ; BUILD-DEMANDE à Big Boss (lot P7 rouvert pour T8) | `P7-T8a-INV.md` | — | | | | | |
|