Scope presentation associations to PresentationMount and retain navigation queries

Generate checked navigation query pairs from closed React contracts before
package checking. Retain per-type subscriptions under the logical
PresentationMount and resolve cold component metadata independently of code.

Keep scoped occurrence membership and idempotent local preparation in the
presentation library; copy directly through state contracts without reading
other PresentationMounts' source associations. Preserve normal transaction
creation, pending references, portal synchronization and detach.

Exercise automatic object refs in Reader queries, imported fragments and
structured/aggregate results. Add heterogeneous owner-index, live dependency,
cold metadata, browser ownership and latency coverage. Document measured
improvements, supported query limits and qualification evidence.
This commit is contained in:
Timothy J. Aveni
2026-09-26 12:32:47 -07:00
parent 3728612e8c
commit ad64ba532f
8 changed files with 260 additions and 24 deletions
+3 -3
View File
@@ -34,7 +34,7 @@ test("exported fragments generate local projection and direct admission", async
assert.equal(p.queries!.length, 2);
const local = p.queries!.find((q) => !q.fragment?.admission)!;
assert.equal(local.placement?.kind, "local");
const checked = await compileQuery(local, [item], async () => "fragment Row on Item {_camino {ref} title}");
const checked = await compileQuery(local, [item], async () => "fragment Row on Item {title}");
assert.equal(checked.output.kind, "record");
assert.match(checked.document, /query QuixosFragment/);
await assert.rejects(
@@ -47,7 +47,7 @@ test("imported fragments retain checked occurrences and require exact roots", as
const checked = await compileQuery(
provider.queries!.find((q) => !q.fragment?.admission)!,
[item],
async () => "fragment Row on Item {_camino {ref} title}",
async () => "fragment Row on Item {title}",
);
const consumer = pkg(
'query Screen id "screen" root Item document "screen.graphql" operation "Screen" {replica; fragments Provider.Row;}',
@@ -145,7 +145,7 @@ test("independent fragment package survives execution lowering and typed client
compileQuery(
q,
workspace.interfaceImports,
async () => "fragment CommentRow on CommentData {_camino {ref} content {text tags}}",
async () => "fragment CommentRow on CommentData {content {text tags}}",
),
),
);