Folderul docs\ era pana acum in afara oricarui control de versiuni - nici git, nici SVN - desi contine planurile pe puncte, proiectarile si rapoartele de cercetare pe care se sprijina modificarile din cod. O stergere acolo era definitiva. Fisierele intermediare (handoff-uri intre sesiuni, diff-uri deja aplicate) au fost sterse inainte, nu versionate: ce era durabil in ele a intrat in antetele fisierelor de test la care se refereau. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
5.8 KiB
Predare — deblocarea proprietatilor custom pe frm_modific2024
Bloc de lucru TERMINAT CU SUCCES (nu la prag de context — predare la incheierea blocului, conform Regula zero).
Concluzie
Ipoteza principala ("FoxBin2Prg Prg2Bin nu poate crea proprietati noi intr-un .vcx") e INFIRMATA, cu dovada directa (test izolat, mai jos). Cauza reala era alta, si s-a reparat.
Cauza reala, cu dovada
Proprietatile noi (larearticolevanzari, nidvanzare, ntipvanzare) fusesera adaugate de
agentul anterior doar in blocul *<PropValue> (valorile), dar lipseau din
*<DefinedPropArrayMethod> (lista *p: care inregistreaza o proprietate custom ca membru real
al clasei). Fara intrarea *p:, Prg2Bin scrie linia de valoare, dar VFP n-o materializeaza ca
proprietate pe obiect — de-asta PEMSTATUS intorcea .F. desi valoarea aparea in text si
supravietuia fidelity-check-ului (fidelity-ul verifica doar ca textul regenerat == textul editat,
nu ca proprietatea exista pe obiect).
Regula era deja documentata pentru metode in COMUN\docs\flux-editare-vfp-text.md:76-78
("Metoda noua de clasa cere *m: nume in *<DefinedPropArrayMethod>; fara ea, ... o arunca
tacut") — se aplica identic si proprietatilor (*p:), doar ca nu era scrisa explicit acolo. De
adaugat separat in acel fisier (nu am facut-o eu, e in afara sarcinii primite).
Testul izolat care a transat ipoteza
Nu am atins omodificari pentru test. Am copiat COMUN\clase\_pf_base.vcx/.vct/.vc2 (clasa
_pfbase, fara nicio importanta) intr-un folder complet izolat in scratchpad, am adaugat text-only
o proprietate noua (ltestpropnoua) cu intrare *p: corecta, write-back cu txt2vcx.ps1 (proiect
izolat, nu ProjectRoot real), apoi CREATEOBJECT + PEMSTATUS:
PEMSTATUS(ltestpropnoua)=DA valoare=.T.
Confirma ca fluxul text->bin poate crea proprietati noi, cand sunt inregistrate corect.
Bonus gasit tot in acest test: FoxBin2Prg foloseste o colatie unde _ sorteaza dupa
literele obisnuite (nu ordine ASCII simpla pe litere mici) — nidvanzare < nid_set alfabetic
pentru tool, desi '_' (0x5F) < 'v' (0x76) in ASCII brut pe litere mici. Confirmat printr-un al
doilea test izolat: am scris *p: nid_set inaintea lui *p: nidvanzare (ordine ASCII) — fidelity
check a picat cu exact acest motiv; textul canonic din <staging>\verify\ a aratat ordinea
corecta, nidvanzare inaintea lui nid_set. Coincide cu ordinea deja existenta, corecta, din
*<PropValue>-ul real al lui frm_modific2024. De adaugat in flux-editare-vfp-text.md /
foxbin2prg\CLAUDE.md ca nota separata (nu am facut-o, in afara sarcinii primite).
Ce am schimbat in omodificari.vc2/.vcx/.vct
COMUN\clase\omodificari.vc2, clasa frm_modific2024 (:6375-15856), blocul
*<DefinedPropArrayMethod> — 3 linii *p: noi, in ordine alfabetica (colatia tool-ului):
*p: larearticolevanzari— linia 6804 (inainte delavertizatexigibilizare)*p: nidvanzare— linia 6811 (inainte denid_set)*p: ntipvanzare— linia 6818 (dupantaxcode)
Blocul *<PropValue> nu a fost atins — valorile erau deja acolo, deja in ordinea corecta,
de la agentul anterior.
Write-back real cu txt2vcx.ps1 -AllowComun — fidelity check OK. Backup pastrat:
COMUN\clase\omodificari.vc2.pre_proprietati_custom.bak (starea dinainte de aceasta reparatie,
distinct de .pre_s4runda1.bak mai vechi).
Capcana pe care am picat-o si am reparat-o singura: prima incercare a folosit
$lines.IndexOf(text_exact) ca sa gasesc pozitia liniilor *p: tinta — a gasit o potrivire
falsa mult mai devreme in fisier (alta clasa cu proprietati cu nume asemanator), inserand 3 linii
in locul gresit. Am restaurat din backup inainte de a rula orice write-back cu starea gresita,
am refacut editarea cu index-uri de linie verificate explicit (assert pe continutul exact al
liniei), si abia apoi am scris pe disc. Fisierul de pe disc e curat, o singura editare corecta.
Verificare finala — PASS complet
test_page3_articole.prg sub watchdog_vfp.ps1 -AutoDismiss: exit 0, 0 dialoguri.
cod=1140888: PageCount = 3 (asteptat 3), lAreArticoleVanzari = .T. (asteptat .T.), nIdVanzare = 1050 -> PASS
cod=1125486: PageCount = 2 (asteptat 2), lAreArticoleVanzari = .F. (asteptat .F.) -> PASS
Toate celelalte asertii din suita (verifica_vanzare_nota x3, verifica_coliziune_cod) tot PASS,
neschimbate. PEMSTATUS(loForm,'lAreArticoleVanzari',5) si PEMSTATUS(loForm,'nIdVanzare',5)
acum .T. (erau .F. la predarea anterioara).
Starea la predare
- Fara commit git/SVN.
svn statuspe COMUN arataMpeomodificari.vcx/.VCT(write-back real);.vc2eI(ignorat de SVN, urmarit doar decomun.git). comun.git statusarataomodificari.vc2modificat — diff-ul cumuleaza toata munca necomisa de azi pe S4 runda 1 (PAGE3, grid, cele 3 proprietati), nu doar reparatia mea; nimic neasteptat.- Fara tranzactii Oracle deschise — testul de verificare face doar
SELECT-uri pringoExecutor, zero scriere. - Niciun proces
vfp9.exeramas viu (verificat,Get-Process vfp9gol). - Scratch-ul de test izolat (
_pf_base.vcxcopiat) a ramas doar inC:\Users\...\scratchpad\testproj\— in afara working copy, nu necesita curatare.
Ce ramane (in afara sarcinii primite azi)
Pasii 3-5 din docs\progres.md sectiunea „#6, S4 runda 1": scoaterea liniilor [BISECT]/[DIAG]
din test, stergerea test_baseline_isolation.prg (concluzia lui e nula, vezi handoff anterior),
scrierea docs\diff_s4_runda1_page3.patch + docs\cercetare\rec_s4_runda1.md, actualizarea
COMUN\docs\testare-ui-vfp.md cu cele trei capcane noi (DO...WITH prin referinta, SET PATH
ROACONT, watchdog fara input real) plus cele doua descoperite acum (*p: obligatoriu si
pentru proprietati, colatia cu _ dupa litere) — raman pentru runda urmatoare.