# write_devlock_debugkit_rule_v1.0.ps1 - PS 5.1-safe, TXT-ONLY, SAFE-WRITE param([switch]$Preview,[switch]$Write) function Write-NoBOM([string]$p,[string]$t){ $enc=[Text.UTF8Encoding]::new($false); [IO.File]::WriteAllText($p,$t,$enc) } function Ensure-Dir([string]$p){ if($p -and !(Test-Path $p)){ New-Item -ItemType Directory -Force -Path $p | Out-Null } } $registry = Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Definition) $rules = Join-Path $registry 'rules' Ensure-Dir $rules $target = Join-Path $rules 'DEVLOCK-DEBUGKIT-RULE_v1.0.txt' $now = Get-Date -Format 'yyyy-MM-ddTHH:mm:ssK' $txt = @" === DEV-LOCK + DEBUG-KIT - RULE v1.0 === File : DEVLOCK-DEBUGKIT-RULE_v1.0.txt Date : $now Format : TXT-ONLY (UTF-8 sans BOM, CRLF) Scope : Tous projets gouvern?s (HUB, SEEDBOX) # OBJECTIF Garantir un traitement syst?matique et tra?able de chaque bug remont?, sans d?pendance ? l'?tat du shell, et sans commits tant que la session n'est pas finalis?e. Source de v?rit? = assertions dans [KB_GUARD_ASSERTS] (mode asserts-only). # INVARIANTS - TXT-ONLY ; SAFE-WRITE ; pas d'?dition manuelle des fichiers gouvernance. - Gate asserts-only avant tout Write. - DEV-LOCK : aucun commit tant que la session est active. - Ingest pack obligatoire quand BootPack/KB changent. # D?CLENCHEUR (OBLIGATOIRE) ? CHAQUE bug remont? par l'utilisateur : ? L'assistant d?clenche DEBUG-KIT + passage en DEV-LOCK. # PROC?DURE (7 ?TAPES) 1) Nouveau shell ? lancer le launcher : \\DS-918\chatgpt\ChatGPT-Gouvernance-Projets\_registry\bin\gov_profile_launcher_latest.cmd 2) F (Start Dev Session) - nom de session propos? : __. 3) 1 (Preview) - profil recommand? explicit? (HUB/SEEDBOX). 4) L (Log DEV BUG) - champs fournis par l'assistant : - R?sum? court : - - #n - Composant/zone : - D?tails : Tentative : # Modification : Jeu de test : R?sultat observ? : Extrait log/erreur : Hypoth?se suivante : (? chaque tentative infructueuse, n++ et nouveau L.) 5) Tests/corrections libres (boucle) - commits interdits par DEV-LOCK. 6) X (Finalize Session) - export ingest pack (PENDING) + suggestions d'asserts. 7) Application auto des ASSERTS + cl?ture : - \\.\\bin\\apply_kb_guard_asserts_latest.cmd -Write - Launcher : 1 (Preview) ? 4 (Validate asserts-only) ? U (Release DevLock) ? 2 (Write) - Export post-Write auto si BootPack/KB changent. # ARTEFACTS ET PERSISTANCE - DEV_LOCK.flag : bloque Write. - dev_sessions\\_\\ : session.meta + defects\\bug_*.txt - ingest_outbox\\ingest_\\ : README_INGEST, sha256s, PENDING/DONE flags. - Aucune variable de shell n'est utilis?e comme source de v?rit?. # INTERDITS / RISQUES - Pas d'?dition manuelle de BootPack/KB/r?gles. - Pas de selftests comme seule couverture : asserts-only exig?. - Pas de commit tant que DEV-LOCK non rel?ch?. # CHANGELOG v1.0 - 2025-10-20 - Cr?ation de la r?gle (DEBUG-KIT + DEV-LOCK asserts-only, 7 ?tapes) === END OF RULE === "@ Write-Host "== PREVIEW :: WRITE DEVLOCK-DEBUGKIT-RULE v1.0 ==" Write-Host "Target : $target" Write-Host "Mode : " -NoNewline if($Preview -and -not $Write){ Write-Host "Preview (aucune ?criture)" } elseif($Write){ Write-Host "WRITE (SAFE-WRITE)" } else { Write-Host "Preview (par d?faut)" } if(-not $Write){ exit 0 } # SAFE-WRITE $parent = Split-Path -Parent $target Ensure-Dir $parent $bak = $target + '.bak_' + (Get-Date -Format 'yyyyMMdd_HHmmss') if(Test-Path $target){ Copy-Item -LiteralPath $target -Destination $bak -Force } $tmp = $target + '.tmp' Write-NoBOM $tmp $txt $shaTmp = (Get-FileHash -Algorithm SHA256 -LiteralPath $tmp).Hash Move-Item -LiteralPath $tmp -Destination $target -Force $shaFinal = (Get-FileHash -Algorithm SHA256 -LiteralPath $target).Hash Write-Host "Backup : $bak" Write-Host ("SHA tmp/final: {0} / {1}" -f $shaTmp,$shaFinal) Write-Host "STATUS : WRITE-OK"