mirror of
https://github.com/Egonex-AI/Understand-Anything.git
synced 2026-06-22 10:58:03 +08:00
05fd42343c
A controlled-experiment audit on a 1240-file Python project (opensre) showed that 27.2% of resolved-internal imports never made it from project-scanner's `importMap` into the final knowledge graph. Of the 404 source files with internal imports, 91 ended up with ZERO imports edges in the graph despite their `file:` node being present (consistent with main-session orchestrator dropping the entry from `batchImportData` during batch construction), and 104 had partial coverage (consistent with file-analyzer agent dropping rows during edge enumeration). GitHub issue #128 reported the same failure mode at 16-21% on a Go monorepo. The fix has two layers: 1. `merge-batch-graphs.py` now runs a deterministic recovery pass after merge: for every `(source, target)` in scan-result.json's `importMap` whose source `file:` node exists in the assembled graph and whose target `file:` node also exists, emit an `imports` edge if the batches didn't already. Recovered edges are tagged `recoveredFromImportMap: true` so downstream consumers can audit which edges came from the deterministic source vs. agent emission. The merge report logs the recovered count plus how many importMap entries were skipped because their source/target had no graph node. 2. `file-analyzer.md` rewrites the imports edge rule to demand 1:1 emission with a self-check: "the number of `imports` edges in your output MUST equal `sum(batchImportData[file].length)` across the batch's code files". This drives the agent to enumerate every row instead of summarizing — recovery should report 0 when this works. Tests: +6 cases covering the recovery path — drops, no-double-emit, missing source/target nodes, missing scan-result.json (incremental update), and self-import suppression. 770 passing (was 764). Bumps version to 2.6.3 across the five tracked manifests. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
05fd42343c
·
2026-05-08 19:35:34 +08:00
History