Skip to content

Commit 209a814

Browse files
committed
Tighten config deps interop fixture
1 parent f3e5908 commit 209a814

6 files changed

Lines changed: 19 additions & 14 deletions

File tree

docs/gap-analysis.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ Deferred or optional future slices:
127127
- git-history coupling — now implemented (subprocess `git log`, `FILE_CHANGES_WITH` edges)
128128
- long-tail edges — now implemented: `THROWS`/`RAISES` (JS/TS/TSX throw statements), decorator-backed `HANDLES`, and route-linked `DATA_FLOWS`; remaining or out-of-scope gaps: `OVERRIDE` (Go-only), `WRITES`/`READS` (not proven original-overlap by the current C reference fixture)
129129
- route nodes — partially implemented (stub and concrete URL/path/topic `Route` nodes, verified decorator-backed `Route`/`HANDLES`, strict shared route-linked `DATA_FLOWS`, and strict shared `ASYNC_CALLS`; broader framework coverage still open)
130-
- config-linking — partially implemented (Strategy 1 key-symbol + Strategy 2 dependency-import; the first strict shared key-symbol normalization fixture now proves raw-key preservation and `CONFIGURES` query visibility, while dependency-import closure remains open)
130+
- config-linking — partially implemented (Strategy 1 key-symbol + Strategy 2 dependency-import; the first strict shared key-symbol normalization fixture now proves raw-key preservation and `CONFIGURES` query visibility, while dependency-import fixture coverage remains open)
131131
- richer decorator/enrichment promotion
132132
- current entrypoint: [graph-model-parity-plan.md](/Users/skooch/projects/codebase-memory-zig/docs/plans/in-progress/graph-model-parity-plan.md)
133133
- Productization beyond the current contract:

docs/plans/in-progress/graph-model-parity-plan.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ short one-token config key.
4646
the raw config key in query-visible output.
4747
- Still missing for graph-model parity: broader framework route coverage and
4848
broader config-link coverage beyond the first strict key-symbol fixture,
49-
especially dependency-import mismatch closure.
49+
especially dependency-import fixture coverage.
5050
- Current full Zig-vs-C harness baseline after this config slice:
51-
`172` comparisons, `95` strict matches, `22` diagnostic-only comparisons,
52-
`10` mismatches, and `cli_progress: match`. The graph-model-related
53-
mismatches still include the existing `graph-enrichment-config-deps` and
54-
`graph-enrichment-http-calls` query rows.
51+
`172` comparisons, `97` strict matches, `22` diagnostic-only comparisons,
52+
`9` mismatches, and `cli_progress: match`. The remaining
53+
graph-model-related mismatch is the existing `graph-enrichment-http-calls`
54+
query row.
5555

5656
## Superseded Plans
5757
- `docs/plans/paused/ready-to-go/04-graph-enrichment-parity-plan.md`

docs/plans/in-progress/graph-model-parity-progress.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
- `python3 -m json.tool testdata/interop/manifest.json >/dev/null` -> passed
5555
- `bash scripts/run_interop_alignment.sh --update-golden` -> passed, 22/22 golden snapshots updated
5656
- `bash scripts/run_interop_alignment.sh --zig-only` -> passed, 22/22 golden comparison
57-
- `bash scripts/run_interop_alignment.sh` -> passed with 22 fixtures, 172 comparisons, 95 strict matches, 22 diagnostic-only comparisons, 10 known mismatches, and `cli_progress: match`
57+
- `bash scripts/run_interop_alignment.sh` -> passed with 22 fixtures, 172 comparisons, 97 strict matches, 22 diagnostic-only comparisons, 9 known mismatches, and `cli_progress: match`
5858
- `git diff --check` -> passed
5959
- `command -v zlint` -> blocked; `zlint` is not installed in this environment
6060

@@ -69,3 +69,4 @@
6969
| 2026-04-16 | Adding a strict manifest assertion for the new `DATA_FLOWS` row increased the full C/Zig mismatch count because the current C binary did not emit that row for the public fixture. | Ran full interop and inspected per-implementation `graph-model-routes` query rows. | Removed the `DATA_FLOWS` row from the strict shared manifest while keeping Zig unit/focused coverage and documenting the shared-fixture blocker. |
7070
| 2026-04-16 | The first strict `DATA_FLOWS` fixture attempt used `@app.route`, which creates an `ANY` handler route in C while `requests.get` creates a `GET` caller route, so the bridge could not form. | Queried C route qualified names and saw separate `__route__ANY__/api/users` and `__route__GET__/api/users` nodes. | Switched the fixture to `@app.get`, kept the assertion filtered to `fetch_users`, and patched Zig resolved-call service classification so both implementations share the `GET` route row. |
7171
| 2026-04-16 | Zig classified `celery.delay` as async but only treated URL-like arguments as service route targets, so a topic argument produced an `ASYNC delay` route instead of a topic route. | Ran a focused temp fixture with `celery.delay("users.refresh")` against both binaries. | Accepted non-URL topics for `ASYNC_CALLS`, preserved broker names, and added the strict `graph-model-async` fixture. |
72+
| 2026-04-16 | `graph-enrichment-config-deps` used a Zig project name that did not match the indexed directory basename and queried every `Variable`, which mixed a project-name issue with a broad local-binding difference. | Ran a focused temp manifest and compared C/Zig rows for the fixture. | Changed the fixture project to `config-deps` and tightened the query to the shared `express` require-binding row, removing this mismatch from the full harness without claiming full dependency-import coverage. |

docs/port-comparison.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ It is intentionally not a wish list. It describes:
132132
| LSP hybrid type resolution | Present for Go/C/C++ in original | Not implemented | `Deferred` | No | The original README explicitly calls out LSP-style hybrid type resolution; Zig does not ship that layer. |
133133
| Test tagging pass | Yes | Yes for the verified shared Python fixture slice | `Near parity` | Yes | Zig now derives `TESTS` and `TESTS_FILE` from shared filename and call-edge rules on the parity fixture without reopening broader language-specific enrichment work. |
134134
| Git history coupling | Yes | Implemented | `Near parity` | Yes | Zig pass uses subprocess `git log` (no libgit2); creates `FILE_CHANGES_WITH` edges with `co_changes` and `coupling_score` properties. |
135-
| Config linking / config normalization | Yes | Partial | `Partial` | No | Zig now implements Strategy 1 (key-symbol) and Strategy 2 (dependency-import matching); the first strict shared key-symbol normalization fixture locks raw-key query visibility and `maxConnections -> max-connections`, but dependency-import mismatch closure and broader normalization coverage remain open. |
135+
| Config linking / config normalization | Yes | Partial | `Partial` | No | Zig now implements Strategy 1 (key-symbol) and Strategy 2 (dependency-import matching); the first strict shared key-symbol normalization fixture locks raw-key query visibility and `maxConnections -> max-connections`, but dependency-import fixture coverage and broader normalization coverage remain open. |
136136
| Route-node creation / cross-service graph | Yes | Partial | `Partial` | No | Zig now classifies call edges as `HTTP_CALLS`/`ASYNC_CALLS`, creates stub and concrete URL/path/topic `Route` nodes, emits verified decorator-backed `HANDLES`, and has strict shared route-linked `DATA_FLOWS` plus async topic fixtures. Broader framework coverage remains open. |
137137
| Infra scanning (`Docker`, `K8s`, Terraform, etc.) | Yes in the original codebase | Not ported | `Cut` | No | Zig intentionally excludes the infra-scan family from the current port target. |
138138
| OTLP traces | Stubbed | Not ported | `N/A` | No | Not a meaningful implemented-vs-implemented gap. |
@@ -226,7 +226,7 @@ If someone asks “what still separates the Zig port from the original?”, the
226226
| No full Cypher parity | Some advanced graph query patterns remain C-only. |
227227
| Partial route / cross-service graph stack | Zig now emits verified decorator-backed `HANDLES`, strict shared route-linked `DATA_FLOWS`, and strict shared async topic caller rows, but broader framework coverage remains open. |
228228
| No LSP-assisted hybrid resolution | Some higher-fidelity call/type resolution paths remain original-only. |
229-
| No full config normalization | Git-history coupling is implemented, config linking has dependency-import matching and a strict shared key-symbol normalization fixture, decorator-backed `HANDLES` is verified, strict shared route-linked `DATA_FLOWS` is covered, and the first async topic route fixture is covered. The remaining graph-model gap is broader framework route coverage plus dependency-import and broader config-normalization closure. |
229+
| No full config normalization | Git-history coupling is implemented, config linking has dependency-import matching and a strict shared key-symbol normalization fixture, decorator-backed `HANDLES` is verified, strict shared route-linked `DATA_FLOWS` is covered, and the first async topic route fixture is covered. The remaining graph-model gap is broader framework route coverage plus dependency-import fixture coverage and broader config-normalization closure. |
230230
| No UI subsystem | The original can run a graph visualization UI; the Zig port intentionally cannot. |
231231
| Much narrower installer ecosystem | The original configures 10 agents plus hooks/instructions; Zig currently configures 2 agents and only MCP entries. |
232232

testdata/interop/golden/graph-enrichment-config-deps.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@
2121
"columns": [
2222
"n.name"
2323
],
24-
"rows": []
24+
"rows": [
25+
[
26+
"express"
27+
]
28+
]
2529
}
2630
],
2731
"search_code": [],

testdata/interop/manifest.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1965,7 +1965,7 @@
19651965
{
19661966
"id": "graph-enrichment-config-deps",
19671967
"path": "testdata/interop/graph-enrichment/config-deps",
1968-
"project": "graph-enrichment-config-deps",
1968+
"project": "config-deps",
19691969
"language": "javascript",
19701970
"scope_tools": ["index_repository", "query_graph", "list_projects"],
19711971
"assertions": {
@@ -1975,13 +1975,13 @@
19751975
"query_graph": [
19761976
{
19771977
"args": {
1978-
"query": "MATCH (n) WHERE n.label = 'Variable' RETURN n.name ORDER BY n.name ASC",
1979-
"project": "graph-enrichment-config-deps",
1978+
"query": "MATCH (n) WHERE n.name = 'express' RETURN n.name ORDER BY n.name ASC",
1979+
"project": "config-deps",
19801980
"max_rows": 20
19811981
},
19821982
"expect": {
19831983
"columns": ["n.name"],
1984-
"required_rows_min": 1
1984+
"required_rows": [["express"]]
19851985
}
19861986
}
19871987
]

0 commit comments

Comments
 (0)