param([switch]$Execute,[string]$Transcript) $ErrorActionPreference="Stop" $Root="\\DS-918\chatgpt\ChatGPT-Gouvernance-Projets\_registry" $Stage="C:\Temp_Gouvernance" $PreviewCmd=Join-Path $Stage "gov_preview.cmd" $ExecuteCmd=Join-Path $Stage "gov_execute.cmd" $Gate="kb_bug_intake_gate_v1.6.ps1" $ModeCmd= if($Execute){ $ExecuteCmd } else { $PreviewCmd } $SessionTag="session:guard-20251019" $ts = (Get-Date).ToString("yyyyMMdd_HHmmss") $iso = (Get-Date).ToString("s") $modeStr = if($Execute){"EXECUTE"}else{"PREVIEW"} Write-Host "== SESSION ARCHIVE :: $iso :: MODE=$modeStr ==" if(-not (Test-Path -LiteralPath $ModeCmd)){ Write-Error ("Wrapper introuvable: {0}" -f $ModeCmd); exit 1 } # --- Collecte transcript (optionnel) --- if(-not $Transcript -or -not (Test-Path -LiteralPath $Transcript)){ $ask = Read-Host "Chemin du transcript (.txt) [laisser vide si aucun]" if($ask){ if(Test-Path -LiteralPath $ask){ $Transcript=$ask } else { Write-Warning "Transcript introuvable -> on continue sans."; $Transcript=$null } } } $ArcDir = Join-Path $Root ("logs\sessions\" + $ts) if(-not (Test-Path -LiteralPath $ArcDir)){ New-Item -ItemType Directory -Path $ArcDir | Out-Null } $TranscriptInfo="(none)" if($Transcript){ $dest = Join-Path $ArcDir "transcript.txt" Copy-Item -LiteralPath $Transcript -Destination $dest -Force $sha = (Get-FileHash -LiteralPath $dest -Algorithm SHA256).Hash $sz = (Get-Item -LiteralPath $dest).Length $TranscriptInfo = "$dest (size=$sz; sha256=$sha)" Write-Host "[OK] Transcript archiv? -> $dest" } else { Write-Host "[NOTE] Aucun transcript fourni." } # --- Dernier compare_lite (si pr?sent) --- $CompInfo="(none)" try{ $logDir = Join-Path $Root "logs" if(Test-Path -LiteralPath $logDir){ $c = Get-ChildItem -LiteralPath $logDir -Filter "compare_lite_*.txt" -File | Sort-Object LastWriteTime -Descending | Select-Object -First 1 if($c){ $CompInfo=$c.FullName } } }catch{ } # --- Item ARCHIVE -> KB via gate --- $Title = "ARCHIVE: Pipeline guard session " + $ts $Tags = "archive,session,postmortem,$SessionTag" $Note = "Session archive created at " + $iso + ".`n" + "Transcript: " + $TranscriptInfo + ".`n" + "CompareLite: " + $CompInfo + ".`n" + "Outcome: voir compare_lite et acceptance logs (PASS attendu)."`n Write-Host "[RUN] " $ModeCmd $Gate "-Title" $Title "-Note" "(...)" "-Tags" $Tags $args=@($Gate,"-Title",$Title,"-Note",$Note,"-Tags",$Tags) & $ModeCmd @args $ec = $LASTEXITCODE if($ec -ne 0){ Write-Error ("Intake ARCHIVE a ?chou? (ExitCode={0})" -f $ec); exit $ec } Write-Host "[OK] Intake ARCHIVE enregistr? (mode=$modeStr)." if(-not $Execute){ Write-Host "Tip: relance avec -Execute pour publier." } Write-Host ("DOC-VERSION-FOOTER kb_session_archive_auto_v1.0 :: {0}" -f $iso)