curatenie.ps1: stergerea artefactelor de lucru dinaintea commit-ului

Script determinist (patch-uri, handoff-uri, *.pre_runda*.bak, .bak din cache text,
screenshots*/uisync*/.fxp/.err/loguri), cu protectie pe fisierele urmarite de git
si mod -DryRun. Referit din reguli_lucru.md (regula 1) si flux-editare-vfp-text.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RYbiinqXxdEqXi53x4Ro7K
This commit is contained in:
2026-08-03 01:27:21 +03:00
parent 6bef1e26ee
commit 006b58f644
3 changed files with 80 additions and 2 deletions

View File

@@ -65,7 +65,8 @@ fals `roundtrip text1 != text2`. Ruleaza atunci cu lista rebazata:
dat de Marius, cu valorile lui asteptate — nu doar teste per-fix. Assert-uri pe continutul
rezultatului (sume, campuri, randuri), nu pe efecte de suprafata ("a aparut un rand" nu e
suficient).
7. Backup-urile `.pre_runda*.bak` si patch-urile se sterg la curatenia de dupa commit.
7. Curatenie dupa commit (backup-uri `.pre_runda*.bak`, patch-uri, artefacte de test):
`powershell -File COMUN\utile\curatenie.ps1` — vezi regula 1 din `reguli_lucru.md`.
## Capcane

View File

@@ -7,7 +7,11 @@
review cu rezultatele testelor, nu cu o propunere netestata; daca nu merge, revii cu
`git checkout` pe binare (`.vcx`+`.vct`) sau cu write-back din `*.pre_runda*.bak`.
Patch-urile (in .gitignore, `docs/diff_runda*.patch`) nu se comit niciodata, raman local.
Dupa commit: sterge patch-urile si backup-urile `*.pre_runda*.bak`.
Curatenia de dinainte de commit NU se face pe cap de agent, ci cu
`powershell -File COMUN\utile\curatenie.ps1` (`-DryRun` listeaza fara sa stearga): patch-uri,
handoff-uri/planuri de runda, `*.pre_runda*.bak`, `.bak`-urile din cache-ul text si artefactele
de test (`screenshots*`, `uisync*`, `.fxp`, `.err`, loguri). Sterge doar fisiere neurmarite de
git — cele tracked sunt sarite.
2. Comentarii in cod: minime, strict functionale, descriu comportamentul CURENT (ca si cum ar fi
scris asa de la inceput) — o linie de regula, 2-3 doar pentru metode cu contract nebanal
(parametri, cursor asteptat/lasat deschis, pozitionare la iesire). Istoricul modificarilor

73
utile/curatenie.ps1 Normal file
View File

@@ -0,0 +1,73 @@
# curatenie.ps1 - sterge artefactele de lucru dinaintea unui commit (regula 1 din COMUN\docs\reguli_lucru.md).
# Sterge DOAR fisiere neurmarite de git; orice fisier tracked (in proiect sau in COMUN) e sarit.
# Utilizare:
# powershell -File COMUN\utile\curatenie.ps1 # curata proiectul si cache-ul text
# powershell -File COMUN\utile\curatenie.ps1 -DryRun # doar listeaza ce ar sterge
param(
[string]$ProjectRoot,
[string]$CacheRoot,
[switch]$DryRun
)
$ErrorActionPreference = 'Stop'
if (-not $ProjectRoot) { $ProjectRoot = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent }
$comun = Join-Path $ProjectRoot 'COMUN'
if (-not $CacheRoot) {
$CacheRoot = Join-Path (Split-Path $ProjectRoot -Parent) ('_vfp_textcache\' + (Split-Path $ProjectRoot -Leaf).ToLower())
}
# fisierele urmarite de git (proiect + COMUN) - lista de protectie
$tracked = New-Object 'System.Collections.Generic.HashSet[string]' ([StringComparer]::OrdinalIgnoreCase)
foreach ($repo in @($ProjectRoot, $comun)) {
if (-not (Test-Path (Join-Path $repo '.git'))) { continue }
foreach ($f in (& git -C $repo ls-files)) {
[void]$tracked.Add((Join-Path $repo ($f -replace '/', '\')))
}
}
$tinte = New-Object System.Collections.ArrayList
function Adauga($cale, $tipare, $recursiv, $director) {
if (-not (Test-Path $cale)) { return }
$p = @{ Include = $tipare; ErrorAction = 'SilentlyContinue' }
if ($recursiv) { $p['Path'] = $cale; $p['Recurse'] = $true } else { $p['Path'] = (Join-Path $cale '*') }
foreach ($it in (Get-ChildItem @p)) {
if ($director -ne $it.PSIsContainer) { continue }
if ($tracked.Contains($it.FullName)) { continue }
[void]$tinte.Add($it)
}
}
$docs = Join-Path $ProjectRoot 'docs'
$teste = @((Join-Path $comun 'utile\Teste'), (Join-Path $ProjectRoot 'utile\Teste')) | Where-Object { Test-Path $_ }
# patch-uri de review, handoff-uri, planuri de runda
Adauga $docs @('diff_runda*.patch', 'handoff*.md', 'plan_runda*.md', 'runda*.md') $false $false
# backup-uri de runda si de cache text
Adauga $ProjectRoot @('*.pre_runda*.bak') $true $false
Adauga $CacheRoot @('*.pre_runda*.bak', '*.vc2.bak', '*.sc2.bak') $true $false
# artefacte din rulari de test
foreach ($t in $teste) {
Adauga $t @('screenshots*', 'uisync*') $true $true
Adauga $t @('*.fxp', '*.err', '*.log', '*_log.txt', 'bash.exe.stackdump') $true $false
}
Adauga $ProjectRoot @('bash.exe.stackdump') $false $false
# directoarele inglobate in alt director-tinta se sterg oricum odata cu parintele
$dir = @($tinte | Where-Object { $_.PSIsContainer } | ForEach-Object { $_.FullName + '\' })
$lista = @($tinte | Where-Object { $f = $_.FullName; -not ($dir | Where-Object { $f.StartsWith($_, 'OrdinalIgnoreCase') }) })
if ($lista.Count -eq 0) { Write-Output 'curatenie: nimic de sters'; exit 0 }
foreach ($it in ($lista | Sort-Object FullName)) {
$eticheta = $it.FullName.Replace($ProjectRoot + '\', '').Replace($CacheRoot + '\', 'cache\')
if ($it.PSIsContainer) { $eticheta = $eticheta + '\' }
if ($DryRun) {
Write-Output (' ar sterge ' + $eticheta)
} else {
Remove-Item -LiteralPath $it.FullName -Recurse -Force
Write-Output (' sters ' + $eticheta)
}
}
Write-Output ('curatenie: ' + $lista.Count + ' intrari')