{
    "entries":  [
                    {
                        "id":  "KB-PS1-ENCODING-UTF8BOM",
                        "title":  "Windows PowerShell 5.1 parsing requires UTF-8 with BOM or pure ASCII for .ps1",
                        "blocking":  false,
                        "workaround":  "Save .ps1 as UTF-8 BOM; avoid typographic punctuation; or run in pwsh Core.",
                        "note":  "",
                        "fix":  "",
                        "tags":  [
                                     "powershell",
                                     "encoding",
                                     "utf8-bom",
                                     "compat"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  ""
                    },
                    {
                        "id":  "KB-PS1-TYPO-PUNCT",
                        "title":  "Typographic quotes and em/en dash break PowerShell parser when file is read as ANSI",
                        "blocking":  false,
                        "workaround":  "Normalize to ASCII: replace curly quotes and dashes and NBSP; keep scripts ASCII-safe.",
                        "note":  "",
                        "fix":  "",
                        "tags":  [
                                     "powershell",
                                     "quotes",
                                     "emdash",
                                     "ansi"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  ""
                    },
                    {
                        "id":  "KB-EXEC-POLICY-BYPASS",
                        "title":  "ExecutionPolicy AllSigned blocks unsigned scripts on network shares",
                        "blocking":  false,
                        "workaround":  "Use -ExecutionPolicy Bypass per-process; generate .cmd wrappers that call powershell.exe -ExecutionPolicy Bypass",
                        "note":  "",
                        "fix":  "",
                        "tags":  [
                                     "powershell",
                                     "executionpolicy",
                                     "bypass",
                                     "netshare"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  ""
                    },
                    {
                        "id":  "BUGKB-ONE-SHOT-GATING-2025-10-17",
                        "title":  "Execution apres N due to non-hermetic gating and ternary misuse",
                        "blocking":  false,
                        "workaround":  "",
                        "note":  "",
                        "fix":  "@{summary=Encapsulation hermetique \u0026 { } + EXECUTE uniquement si ( -eq \u0027O\u0027); suppression du ternary; code_guardrail=System.Object[]; recipe_steps=System.Object[]}",
                        "tags":  [
                                     "powershell",
                                     "paste-ready",
                                     "gating",
                                     "safe-create",
                                     "governance"
                                 ],
                        "seen_in_threads":  [

                                            ],
                        "last_seen":  ""
                    },
                    {
                        "id":  "BUGKB-BOOT-PACK-KB-MISSING-2025-10-17",
                        "title":  "Boot-pack incomplet (KB et Patch History absents) entraine boucles et incoherences",
                        "blocking":  false,
                        "workaround":  "",
                        "note":  "",
                        "fix":  "@{summary=Rendre KB et Patch History obligatoires dans le BOOT-PACK + enforcer et audit; code_guardrail=System.Object[]; recipe_steps=System.Object[]}",
                        "tags":  [
                                     "governance",
                                     "boot-pack",
                                     "kb",
                                     "patch-history",
                                     "paste-ready",
                                     "safe-create"
                                 ],
                        "seen_in_threads":  [

                                            ],
                        "last_seen":  ""
                    },
                    {
                        "id":  "KB-20251018-130600",
                        "title":  "Unhandled script error: Out-File : Le processus ne peut pas acc¢...",
                        "note":  "",
                        "fix":  "",
                        "tags":  [
                                     "powershell",
                                     "autolog",
                                     "ps51",
                                     "unclassified",
                                     "oneshot",
                                     "slof"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T13:06:00+02:00"
                    },
                    {
                        "id":  "KB-20251018-131432",
                        "title":  "Unhandled script error: Out-File : Le processus ne peut pas acc",
                        "blocking":  false,
                        "workaround":  "Analyser le message, reproduire, ajouter une r...",
                        "note":  "",
                        "fix":  "",
                        "tags":  [
                                     "powershell",
                                     "autolog",
                                     "ps51",
                                     "unclassified",
                                     "oneshot",
                                     "slof"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T13:14:31+02:00"
                    },
                    {
                        "id":  "KB-AUTO-selftest-pipeline-unc-only-20251018_134930",
                        "title":  "Selftest pipeline (UNC-only)",
                        "blocking":  false,
                        "workaround":  "n/a",
                        "note":  "synthetic for pipeline check",
                        "fix":  "n/a",
                        "tags":  [
                                     "selftest",
                                     "slof"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-ps-5-1-operateur-ternaire-non-supporte-20251018_135633",
                        "title":  "PS 5.1: operateur ternaire non supporte",
                        "blocking":  true,
                        "workaround":  "Remplacer par if()/else ou logique equivalente",
                        "note":  "Syntaxe ? : non prise en charge par le parser PS 5.1",
                        "fix":  "Tous les ternaires remplaces par if()/else",
                        "tags":  [
                                     "powershell",
                                     "ps51",
                                     "syntax",
                                     "ternary",
                                     "ps5-compat",
                                     "parser"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-ps-5-1-select-string-sans-recurse-20251018_135633",
                        "title":  "PS 5.1: Select-String sans -Recurse",
                        "blocking":  false,
                        "workaround":  "Boucler sur Get-ChildItem et appeler Select-String fichier par fichier",
                        "note":  "Parametre -Recurse indisponible en PS 5.1",
                        "fix":  "Toujours pattern PS5.1-compat pour la recherche",
                        "tags":  [
                                     "powershell",
                                     "ps51",
                                     "select-string",
                                     "compat"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T13:56:32+02:00"
                    },
                    {
                        "id":  "KB-AUTO-safe-write-creer-dossiers-avant-tmp-20251018_135633",
                        "title":  "SAFE-WRITE: creer dossiers avant .tmp",
                        "blocking":  false,
                        "workaround":  "Ensure-Parent(Split-Path Dest) + creer stage en amont",
                        "note":  "Copy-Item vers \u003cDest\u003e.tmp echoue si parent manquant",
                        "fix":  "Write-SafeTxt garantit parents avant copy/move",
                        "tags":  [
                                     "safe-write",
                                     "io",
                                     "dirs",
                                     "compat"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T13:56:32+02:00"
                    },
                    {
                        "id":  "KB-AUTO-bug-kb-json-txt-entries-tableau-strip-footer-20251018_135633",
                        "title":  "BUG_KB.json.txt: entries = tableau [] + strip footer",
                        "blocking":  false,
                        "workaround":  "Forcer entries=@(...) et retirer footer a la lecture",
                        "note":  "entries en {} + footer melange au JSON -\u003e parsing KO",
                        "fix":  "Read-KbObj normalise entries[] et strip footer",
                        "tags":  [
                                     "kb",
                                     "json",
                                     "footer",
                                     "compat"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T13:56:32+02:00"
                    },
                    {
                        "id":  "KB-AUTO-join-path-ne-doit-pas-recevoir-un-tableau-de-childpath-ps-5-1-20251018_155750",
                        "title":  "Join-Path ne doit pas recevoir un tableau de ChildPath (PS 5.1)",
                        "blocking":  false,
                        "workaround":  "Boucler sur chaque segment ou construire la liste puis Join-Path par segment; ne pas passer un tableau directement a ChildPath",
                        "note":  "Join-Path a recu plusieurs ChildPath en tableau -\u003e objet System.Object[] au lieu d\u0027un chemin (erreur de binding)",
                        "fix":  "SAFE-SYNC corrige en bouclant sur TargetRel et Join-Path par element; PS 5.1 proof",
                        "tags":  [
                                     "powershell",
                                     "join-path",
                                     "ps5-compat",
                                     "safe-sync"
                                 ],
                        "seen_in_threads":  [

                                            ],
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-ps-5-1-select-string-sans-recurse-boucler-fichiers-20251018_160307",
                        "title":  "PS 5.1: Select-String sans -Recurse (boucler fichiers)",
                        "blocking":  true,
                        "workaround":  "Lister les fichiers avec Get-ChildItem puis appeler Select-String sur chaque chemin",
                        "note":  "Select-String -Recurse n\u0027existe pas sur PS 5.1 -\u003e parametre introuvable",
                        "fix":  "Remplacement par boucle foreach sur la liste de fichiers",
                        "tags":  [
                                     "powershell",
                                     "ps5-compat",
                                     "select-string",
                                     "recurse"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-bug-kb-json-txt-entries-tableau-strip-footer-avant-convertfrom-json-20251018_160433",
                        "title":  "BUG_KB.json.txt: entries = tableau [] + strip footer avant ConvertFrom-Json",
                        "blocking":  true,
                        "workaround":  "Toujours entries=[...] et retirer le footer avant parsing",
                        "note":  "entries detecte comme objet {} et footer SAFE-WRITE casse ConvertFrom-Json",
                        "fix":  "Canonisation ecriture JSON avec entries=[...] et de-strip footer a la lecture",
                        "tags":  [
                                     "kb",
                                     "json",
                                     "footer",
                                     "safe-write",
                                     "parser"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-safe-write-creer-repertoires-avant-tmp-20251018_160648",
                        "title":  "SAFE-WRITE: creer repertoires avant .tmp",
                        "blocking":  true,
                        "workaround":  "Ensure-Parent avant ecriture / copie .tmp",
                        "note":  "Copy/Move sur .tmp dans un dossier parent inexistant -\u003e DirectoryNotFound",
                        "fix":  "Ensure-Parent ajoute dans les helpers d\u0027ecriture",
                        "tags":  [
                                     "safe-write",
                                     "io",
                                     "windows"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-join-path-ne-pas-passer-un-tableau-en-childpath-20251018_161141",
                        "title":  "Join-Path: ne pas passer un tableau en ChildPath",
                        "blocking":  true,
                        "workaround":  "Joindre segment par segment dans une boucle",
                        "note":  "Passage d\u0027un tableau a ChildPath -\u003e System.Object[] et erreur de binding",
                        "fix":  "SAFE-SYNC corrige: boucle sur TargetRel",
                        "tags":  [
                                     "powershell",
                                     "path",
                                     "join-path",
                                     "bugfix"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-ps-5-1-ps1-en-utf-8-avec-bom-ou-ascii-strict-20251018_162239",
                        "title":  "PS 5.1: .ps1 en UTF-8 avec BOM (ou ASCII strict)",
                        "blocking":  true,
                        "workaround":  "Sauver .ps1 en UTF-8 BOM ou normaliser ASCII",
                        "note":  "Fichiers UTF-8 sans BOM + typo-chars -\u003e erreurs parser",
                        "fix":  "Ecriture .ps1 avec UTF-8 BOM dans les scripts d\u0027installation",
                        "tags":  [
                                     "powershell",
                                     "encoding",
                                     "utf8-bom"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-typo-quotes-dashes-nbsp-normaliser-ascii-20251018_164836",
                        "title":  "Typo quotes/dashes/nbsp: normaliser ASCII",
                        "blocking":  false,
                        "workaround":  "Remplacer par quotes/tirets ASCII et espaces normaux",
                        "note":  "Guillemets typographiques, tirets en/em, nbsp provoquent erreurs de parsing",
                        "fix":  "Etape de normalisation ajoutee lors de correctifs",
                        "tags":  [
                                     "encoding",
                                     "ascii",
                                     "parser"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-executionpolicy-allsigned-sur-unc-utiliser-bypass-ou-wrapper-cmd-20251018_165000",
                        "title":  "ExecutionPolicy AllSigned sur UNC: utiliser Bypass ou wrapper .cmd",
                        "blocking":  true,
                        "workaround":  "powershell.exe -ExecutionPolicy Bypass -File ...",
                        "note":  "AllSigned bloque .ps1 non signes sur partages UNC",
                        "fix":  "Wrappers .cmd ASCII + appels Bypass systematise",
                        "tags":  [
                                     "executionpolicy",
                                     "unc",
                                     "security",
                                     "wrapper"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-wrapper-cmd-ascii-et-appel-bypass-20251018_165010",
                        "title":  "Wrapper .cmd: ASCII et appel Bypass",
                        "blocking":  false,
                        "workaround":  "Wrapper ASCII sans BOM, appel powershell.exe -ExecutionPolicy Bypass",
                        "note":  ".cmd avec BOM ou appels sans Bypass posent souci",
                        "fix":  "New-CmdWrapper et run_in_govshell.cmd standardises",
                        "tags":  [
                                     "wrapper",
                                     "cmd",
                                     "ascii",
                                     "bypass"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-boot-pack-sections-obligatoires-boot-pack-bug-kb-json-policy-20251018_165019",
                        "title":  "Boot-pack sections obligatoires: [BOOT-PACK],[BUG_KB_JSON],[POLICY]",
                        "blocking":  true,
                        "workaround":  "Verifier/ajouter sections et JSON valide",
                        "note":  "Sections manquantes -\u003e validation et gating incoherents",
                        "fix":  "Scripts de sync mettent a jour bootpack.txt",
                        "tags":  [
                                     "bootpack",
                                     "policy",
                                     "governance"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-deprecation-bug-kb-jsonl-au-profit-de-bug-kb-json-txt-20251018_165029",
                        "title":  "Deprecation BUG_KB.jsonl au profit de BUG_KB.json.txt",
                        "blocking":  false,
                        "workaround":  "Converger vers BUG_KB.json.txt canonique",
                        "note":  "Deux sources KB (jsonl et json.txt) entrainent divergences",
                        "fix":  "Script de convergence + update bootpack",
                        "tags":  [
                                     "kb",
                                     "canonical",
                                     "jsonl",
                                     "cleanup"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-unc-health-check-avant-ecritures-20251018_165039",
                        "title":  "UNC health check avant ecritures",
                        "blocking":  false,
                        "workaround":  "Ecriture test et verif sha256 avant operations",
                        "note":  "Handles ou verrous peuvent casser writes sur UNC",
                        "fix":  "UNC_HEALTH ecrit en logs + gating",
                        "tags":  [
                                     "unc",
                                     "io",
                                     "healthcheck"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-pas-de-lecteur-z-unc-only-staging-local-20251018_165050",
                        "title":  "Pas de lecteur Z: UNC only + staging local",
                        "blocking":  false,
                        "workaround":  "Toujours UNC + staging C:\\\\Temp_Gouvernance",
                        "note":  "Lecteur mappes non persistants et sources d\u0027erreurs",
                        "fix":  "Scripts normalises sur UNC-only",
                        "tags":  [
                                     "unc",
                                     "staging",
                                     "infra"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "BUGKB-ONE-SHOT-GATING-2025-10-17",
                        "title":  "Unhandled script error: Out-File : Le processus ne peut pas accéder au fichier",
                        "blocking":  true,
                        "workaround":  "Analyser le message, reproduire, ajouter une r gle pr cise.",
                        "note":  "Erreur non classifi e (voir log).",
                        "fix":  "SAFE-SYNC corrige en bouclant sur TargetRel et Join-Path par element; PS 5.1 proof",
                        "tags":  [
                                     "powershell",
                                     "encoding",
                                     "utf8-bom",
                                     "compat",
                                     "quotes",
                                     "emdash",
                                     "ansi",
                                     "executionpolicy",
                                     "bypass",
                                     "netshare",
                                     "paste-ready",
                                     "gating",
                                     "safe-create",
                                     "governance",
                                     "boot-pack",
                                     "kb",
                                     "patch-history",
                                     "autolog",
                                     "ps51",
                                     "unclassified",
                                     "oneshot",
                                     "slof",
                                     "selftest",
                                     "syntax",
                                     "ternary",
                                     "ps5-compat",
                                     "parser",
                                     "select-string",
                                     "safe-write",
                                     "io",
                                     "dirs",
                                     "json",
                                     "footer",
                                     "join-path",
                                     "safe-sync",
                                     "recurse",
                                     "windows",
                                     "path",
                                     "bugfix",
                                     "ascii",
                                     "unc",
                                     "security",
                                     "wrapper",
                                     "cmd",
                                     "bootpack",
                                     "policy",
                                     "canonical",
                                     "jsonl",
                                     "cleanup",
                                     "healthcheck",
                                     "staging",
                                     "infra"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    },
                    {
                        "id":  "KB-AUTO-selftest-pipeline-v1-2-preview-20251018_182309",
                        "title":  "Selftest pipeline v1.2 (preview)",
                        "blocking":  false,
                        "workaround":  "n/a",
                        "note":  "synthetic",
                        "fix":  "n/a",
                        "tags":  [
                                     "selftest",
                                     "v1.2"
                                 ],
                        "seen_in_threads":  "2025-10-18",
                        "last_seen":  "2025-10-18T18:23:08+02:00"
                    }
                ],
    "updated":  "2025-10-19T00:13:11+02:00"
}

--- DOC-VERSION-FOOTER ---
Generated: 2025-10-19T00:13:11+02:00
SHA-256: 15a759c21d5c91b13bebc111caab8ec8acb63dcf8815093e9935765c4953e018
Policy: TXT-ONLY v1.0; SAFE-WRITE v1.1; GOV_SCRIPT_GATE v1.3
Source: KB_SALVAGE_v1.0c
