From a93d2e973f0b38baa1ccb547c09ef12f5eb1654d Mon Sep 17 00:00:00 2001 From: ReidenXerx Date: Thu, 6 Aug 2026 21:16:52 +0300 Subject: [PATCH] test(structural-pairs): pin the type-annotation USES pair MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit R2-2 emits USES INTO a `TypeAlias`, so the pair is `Function|TypeAlias` — a different table from the `TypeAlias|Property` entry added in round 1, and one that entry stays green without. `TypeAlias` is on the eleven-table list this suite exists for, and an undeclared pair does not degrade: it throws `UndeclaredRelationPairError` and kills the entire analyze on any repo containing an annotated type. Every resolver suite still passes, because they build an in-memory graph and never write to the DB. That exact failure shipped once in this PR already. Two emitters into the same label, each with its own way to reach a released build. Co-Authored-By: Claude Opus 5 (1M context) --- .../test/integration/structural-pair-coverage.test.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gitnexus/test/integration/structural-pair-coverage.test.ts b/gitnexus/test/integration/structural-pair-coverage.test.ts index 09226d0d4..6f700603c 100644 --- a/gitnexus/test/integration/structural-pair-coverage.test.ts +++ b/gitnexus/test/integration/structural-pair-coverage.test.ts @@ -121,6 +121,17 @@ const NON_BRIDGE_CORPUS = [ emitter: 'object-type alias HAS_PROPERTY', sentinels: ['TypeAlias|Property', 'Interface|Property'], }, + { + // The other direction on the same fixture (R2-2): an annotation naming a + // declared type emits USES INTO a `TypeAlias`, so the pair is + // `Function|TypeAlias` rather than the `TypeAlias|Property` above. Same + // eleven-table label, a different table, and a separate way for the same + // class of failure to reach a released build — the entry above would stay + // green with this one undeclared. + fixture: 'typescript-alias-fields', + emitter: 'type-annotation USES', + sentinels: ['Function|TypeAlias', 'Function|Interface'], + }, ] as const satisfies readonly CorpusEntry[]; /*