Ingest artifacts
Scan output is versioned under each scanId on disk:
scans/{scanId}/Layout (summary)
{scanId}/
manifest.json
reports/
technical-graph.json # merged graph (query source of truth)
feature-resolution.json
fe-be-bridge.jsonl
repos/{repoKey}/
files.jsonl
technical-graph-partial.json
…
ai/
feature-display-titles.json
feature-insights/{featureId}.json
endpoint-qa/{endpointId}.json
…Scan pipeline
AST per repo → merge → optional helix-agent AI → scans/<scanId>/Per-repo AST output is stored as repos/{repoKey}/merge-input.json. The merge step runs over all merge inputs for that scanId: deduplication, FE↔BE bridge resolution, CALLS_REMOTE chains, optional feature YAML binding, then reports/technical-graph.json.
Merge scope
The merged graph includes only the --roots / --repo-path directories you pass. Cross-repo CALLS_REMOTE edges need both sides in the same scan — add related FE/BE paths explicitly. See NPM client — multi-repo local scans.
Version fields
manifest.json and technical-graph.json carry:
| Field | Use |
|---|---|
ingestPipelineVersion | AST / merge software version (independent of @igentify/helix-flowgraph npm semver) |
scanId | Pin queries and comparisons to one materialized snapshot |
parentScanId | Present on incremental runs that built on a previous scan |
Incremental scans
Per-file fingerprints allow re-parsing only changed paths on new commits. Shared barrel or parser version bumps may still require full repo rescans.
CLI
npm run ingest -- --roots ~/code/igentify/ng-access-service ...See repo docs/Ingest-artifacts.md for the full contract (manifest version, JSONL record types).