CLAUDE.md: cautare pe simboluri VFP + corectare flux text in-tree

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A5okKjUKMM5Xk1egq2w81P
This commit is contained in:
2026-08-03 08:55:59 +03:00
parent f45a9f6864
commit 2e6b1b26e5

View File

@@ -33,19 +33,42 @@ ROA applications (ROAACNPRO, ROAGEST, etc.).
## Searching code inside `.vcx`/`.scx` (binary) libraries ## Searching code inside `.vcx`/`.scx` (binary) libraries
Most class/form code lives **inside binaries** (`.vcx`+`.vct`, `.scx`+`.sct`, …), not in `.prg`, Git tracks the **FoxBin2Prg text versions** of the VFP binaries (`.vc2/.sc2/.fr2/.mn2/.lb2/.pj2/.dc2/.db2`),
so plain grep can't read it cleanly. Convert to TEXT form first and grep the text: generated in-tree next to each binary — not the binaries themselves, which are git-ignored. Refresh
with `git_sync.ps1` (folder-mode, recursive, incremental):
```powershell ```powershell
powershell -ExecutionPolicy Bypass -File D:\ROA\UTIL\foxbin2prg\vcx2txt.ps1 ` powershell -ExecutionPolicy Bypass -File D:\ROA\UTIL\foxbin2prg\git_sync.ps1 -ProjectRoot D:\ROA\ROAAUTO
-Project D:\ROA\ROAAUTO\roaauto.pjx -ProjectRoot D:\ROA\ROAAUTO `
-CacheRoot D:\ROA\UTIL\foxbin2prg\_textcache_roaauto
``` ```
This is project-driven (reads `roaauto.pjx`, converts only the `.vcx`/`.scx` the project Run it **at the start of every session and before any `git commit`** so the text matches the
actually uses) and writes to a **cache dedicated to this project** binaries. It converts in a temp staging area and copies back only the text, continues past
(`D:\ROA\UTIL\foxbin2prg\_textcache_roaauto\`) — don't mix it with other ROA projects' caches per-file failures, and exits nonzero on any failure: **do not commit while `git_sync` reports
(e.g. `_textcache_roaacnpro`). Then `Grep` in that cache. Full guide: `docs/cautare_vcx_vct.md`. unexplained failures.** Then search the `.??2` files in-tree with Grep (e.g. `PROCEDURE do_salvare`),
citing `file:line`.
Editing: write-back text→binary via `txt2vcx.ps1` is supported **only for `.vc2/.sc2`** (vcx/scx);
`.frx/.mnx/.lbx/.pjx/.dbc/.dbf` are editable **only in the VFP IDE** (no write-back). See
`D:\ROA\UTIL\foxbin2prg\CLAUDE.md` and `COMUN\docs\flux-editare-vfp-text.md`.
Grep can't tell **which class/method** a hit inside a `.vc2` belongs to (the class header may be
thousands of lines above it, and ~2/3 of the file is properties/metadata). `vfp_symbols.ps1`
indexes the line range of every class/method/procedure and labels hits with their owner — use it
before any `txt2vcx.ps1` edit to get the exact line range of the method you are changing. Its
built-in defaults target ROAACNPRO, so always pass this project's paths:
```powershell
$s = 'D:\ROA\UTIL\foxbin2prg\vfp_symbols.ps1'
$c = @('-CacheRoot', 'D:\ROA\ROAAUTO', '-ProjectRoot', 'D:\ROA\ROAAUTO', '-IndexFile', 'D:\ROA\_vfp_textcache\roaauto\_symbols.tsv')
powershell -ExecutionPolicy Bypass -File $s @c -Grep '<expression>' -CodeOnly # hits labeled class.method, code only
powershell -ExecutionPolicy Bypass -File $s @c -Where '<file>.vc2:<line>' # who owns this line
powershell -ExecutionPolicy Bypass -File $s @c -Find '<name>' # where it is DEFINED
powershell -ExecutionPolicy Bypass -File $s @c -Class '<class name>' # inheritance chain + methods
```
The index (`_symbols.tsv`) rebuilds itself when the text is newer, so refresh the text first — it
can't see IDE edits that were never converted. Full search guide: `COMUN\docs\cautare_vcx_vct.md`.
## The COMUN shared framework ## The COMUN shared framework
@@ -60,7 +83,7 @@ every other ROA app).
Preferințele lui Marius pentru sesiunile pe acest proiect: Preferințele lui Marius pentru sesiunile pe acest proiect:
- **Delegare**: modificările de cod de volum/rutină (aplicarea unei propuneri din `docs/propuneri_*.md`, editări pe cache-ul text + write-back, actualizări de documentație, rulări de teste) se deleagă către **subagenți Sonnet care lucrează în background** (team agents — Agent tool cu `model: sonnet`, lane-uri paralele unde e posibil), iar sesiunea principală doar orchestrează și monitorizează: împarte planul pe lane-uri, transmite constatările între agenți, verifică rezultatele (diff, teste, fidelity) și intervine direct doar la deblocări (procese agățate), decizii și verificări. - **Delegare**: modificările de cod de volum/rutină (aplicarea unei propuneri din `docs/propuneri_*.md`, editări pe cache-ul text + write-back, actualizări de documentație, rulări de teste) se deleagă către **subagenți Sonnet care lucrează în background** (team agents — Agent tool cu `model: sonnet`, lane-uri paralele unde e posibil), iar sesiunea principală doar orchestrează și monitorizează: împarte planul pe lane-uri, transmite constatările între agenți, verifică rezultatele (diff, teste, fidelity) și intervine direct doar la deblocări (procese agățate), decizii și verificări.
- **Fără commit fără review**: nu da commit din proprie inițiativă pe modificări de cod — Marius vrea întâi să **vadă diff-ul**. Pentru binarele VFP (`.vcx`/`.scx`), diff-ul lizibil se face pe forma text: regenerează textul din binarul vechi (HEAD din git) cu `vcx2txt.ps1 -Source` și compară-l cu textul editat din cache (`git diff --no-index`). Commit doar după ce Marius confirmă pe diff. - **Fără commit fără review**: nu da commit din proprie inițiativă pe modificări de cod — Marius vrea întâi să **vadă diff-ul**. Pentru binarele VFP (`.vcx`/`.scx`), diff-ul lizibil se vede direct cu `git diff` pe textul `.vc2`/`.sc2` din arbore (rulează întâi `git_sync.ps1`, ca textul să corespundă binarelor). Commit doar după ce Marius confirmă pe diff.
- **Arată diff-ul complet după orice modificare**: după ce agenții (proprii sau subagenți) termină o rundă de editări — inclusiv la asamblarea rezultatelor din lane-uri paralele — afișează-i lui Marius diff-ul complet (`git diff`, nu doar rezumat/`--stat`) înainte de a continua la pasul următor sau de a cere aprobare, nu doar un sumar descriptiv al schimbărilor. - **Arată diff-ul complet după orice modificare**: după ce agenții (proprii sau subagenți) termină o rundă de editări — inclusiv la asamblarea rezultatelor din lane-uri paralele — afișează-i lui Marius diff-ul complet (`git diff`, nu doar rezumat/`--stat`) înainte de a continua la pasul următor sau de a cere aprobare, nu doar un sumar descriptiv al schimbărilor.
## Project insights (docs/) ## Project insights (docs/)