Skip to content

fix(typescript): External-node reconstruction conforms to the slim TSExternalSymbol model - #265

Merged
rahlk merged 1 commit into
mainfrom
fix/issue-231-external-reconstruct
Jul 14, 2026
Merged

fix(typescript): External-node reconstruction conforms to the slim TSExternalSymbol model#265
rahlk merged 1 commit into
mainfrom
fix/issue-231-external-reconstruct

Conversation

@rahlk

Copy link
Copy Markdown
Collaborator

Closes#231 (reopened — the earlier close deferred to 2.x work that doesn't exist yet; this is the live 1.x fix).

TSNeo4jBackend.get_external_symbols() raised ValidationError('extra_forbidden') for EVERY External (phantom) node — the default configuration on real apps — because reconstruct.external() passed signature and kind into the extra='forbid' TSExternalSymbol model, which declares only name+module. Reproduced with signature='' per the report.

Fix conforms the reconstructor to both contracts at once: the SDK model is slim by design (map key IS the signature), and the analyzer's published Neo4j schema (codeanalyzer-typescript schema.neo4j.json, External: {signature, name, module}) has no kind property at all — the reconstructor was fabricating it. No information loss: signature remains the external_symbols map key at the call site.

TDD: 3 regression tests (full graph props, empty-signature repro, backend-level via stubbed _run) — RED on main, GREEN after. TS suite at worktree baseline (29 passed, 19 skipped, 23 pre-existing gitignored-fixture errors, #255).

Rides 1.4.3 with #263.

@rahlkrahlk added the fix Bug fixes label Jul 14, 2026
@rahlk
rahlk merged commit a2d735d into mainJul 14, 2026
@rahlk
rahlk deleted the fix/issue-231-external-reconstruct branch July 14, 2026 17:00
@rahlkrahlk mentioned this pull request Jul 14, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fixBug fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TSExternalSymbol has multiple versions

1 participant

@rahlk