* docs: align resolution architecture and roadmap * docs: add language ingestion gap inventories * test: audit receiver gap targets and coverage Check exact declaration IDs, expose the Dart await wrong-owner edge, and execute previously excluded C++, Rust, PHP, Dart and Vue shapes. Refresh the baseline and all language inventories from fresh measurements; call-drop counts remain unchanged. * docs: focus roadmap and shorten project README Keep the resolution roadmap limited to future work and acceptance criteria. Move detailed editor, CLI, MCP, deployment and wiki instructions into linked guides, preserve their command examples, and correct stale onboarding claims. * docs: correct setup and audit descriptions --------- Co-authored-by: Gergo Magyar <gergomagyar0@gmail.com>
4.5 KiB
C Ingestion Gaps
Audited on 2026-10-23 with freshly built production sources at c35806d24 and
the accompanying benchmark changes. See the measurement audit
for commands, target checks, exclusions and test limits. Historical reports below
remain separate from freshly measured receiver cases; broader ingestion is not
exhaustively assessed.
Receiver shape snapshot
States below come from baseline.json. The harness defines each spelling and its N/A reason. RESOLVES requires the exact expected declaration ID and no same-named call to a different owner. WRONG-TARGET records incorrect edges.
| Shape | Recorded state | Expression or exclusion |
|---|---|---|
plainChain |
N/A | C has no method call on a returned value; dispatch is through struct function-pointer fields only. |
plainDeepChain |
N/A | u->address->save(): dispatch through a function-pointer field has no static callee in the graph. |
optionalChain |
N/A | C has no optional-chaining operator. |
nonNullAssert |
N/A | C has no non-null assertion operator. |
awaitParen |
N/A | C has no await expression. |
explicitTypeArgs |
N/A | C has no generics. |
indexElement |
N/A | repos[0].save(): dispatch through a function-pointer field has no static callee in the graph. |
fieldReceiverCall |
N/A | u->save(): dispatch through a function-pointer field has no static callee in the graph. |
decoratedReceiverBase |
N/A | C has no method receiver, so there is no receiver decoration. |
decoratedFieldType |
N/A | A C struct field is a function pointer, not a typed receiver whose decoration could be stripped. |
All receiver-shape cells are N/A. The benchmark calls through function-pointer fields with no static callee node; moving the structs into main.c did not create a named dispatch target. This does not measure ordinary C calls or establish complete C ingestion.
Planning candidates
| ID | Evidence | Gap or boundary | Next planning step and acceptance |
|---|---|---|---|
| C-01 | Recorded gap | The baseline reports C structs in .h files being owned by the C++ provider. |
Reproduce with a C translation unit and header, then define ownership using source context. Preserve C++ and Objective-C header classification controls. |
| C-02 | Coverage gap | The all-N/A receiver row does not exercise direct calls, linkage or header imports. | Add language-appropriate cases with exact targets and duplicate static names across files. Specify a callable-value target contract before attempting function-pointer field dispatch. |
Code and regression entry points
- Language provider directory.
- Scope resolver.
- c-coverage.test.ts.
- c-header-scan.test.ts.
- c-static-linkage-side-channel.test.ts.
Evidence details: receiver baseline notes and current roadmap.