initial import: @mikefreno/omp-pygenium (omp port)

This commit is contained in:
2026-08-10 09:46:09 -04:00
commit a40cdcd9e3
70 changed files with 12624 additions and 0 deletions

46
tasks/02-recon.md Normal file
View File

@@ -0,0 +1,46 @@
# 02. Deterministic code reconnaissance module
meta:
id: pygienium-02
feature: pygienium
priority: P1
depends_on: [pygienium-01]
tags: [infrastructure, no-model]
objective:
- Build `src/recon.ts`: a deterministic, no-model pass that walks the target repo and writes a compact markdown report (languages, manifests, file counts, dead-file candidates) so every check has stable ground truth.
deliverables:
- `src/recon.ts` exporting `runRecon(cwd)`, `runReconAsync(cwd, opts)`, `reconReportPath(cwd)`, `ReconResult`
- Writes `pygienium/recon/report.md` under cwd
- Detects: languages by extension, build manifests, total files/bytes, git head/branch, and a "candidate files" list (source files not under skip dirs) written to `pygienium/recon/candidates.jsonl` + summary
- Soft caps (MAX_FILES, MAX_BYTES) and SIGINT-safe async walk mirroring piolium's recon
steps:
- Port piolium's `recon.ts` structure: MANIFEST_FILES, LANGUAGE_BY_EXT, SKIP_DIRS, safe git exec, walkAndTally + async variant with yieldToEventLoop
- Adapt skip dirs to include `pygienium` (own output dir)
- Add a `candidates.jsonl` emitter listing source files (by language) for the check runners to consume; cap entries to keep it bounded
- Export `buildReconReport` for unit testing
tests:
- Unit: `buildReconReport` on a fake ReconResult produces expected markdown sections (Arrange a result, Act build, Assert headers present)
- Integration: run recon against this repo; assert report.md + candidates.jsonl exist and counts > 0
acceptance_criteria:
- `runRecon(cwd)` returns a ReconResult and writes report.md + candidates.jsonl
- A repo without `.git` does not throw (graceful degradation)
- Very large trees are capped without wedging
validation:
- Inspect `pygienium/recon/report.md` and `pygienium/recon/candidates.jsonl` after a run
notes:
- Recon is Q0-equivalent: deterministic, runs in-process, no model calls
- This is the foundation every check consumes for targeting