Part of #1126
Scope
Disposable proof [P1] — this proof's verdict arbitrates fork F1; it is not pre-decided. S-7 (adversarial pass) proved the generated helper body runs before Aspire allocates endpoints (createNetScriptAppHost() registers and returns before builder.build().run(); getEndpoint() values are deferred references), so a naive manifest write there emits placeholders. Demonstrate a generated, run-mode, post-allocation callback (Aspire lifecycle event surfaced to generated TS or the C# AppHost side) that resolves every service endpoint from the host network perspective and atomically writes .netscript/run/endpoints.json with the identity binding (projectRoot, runId, literal-loopback URLs).
A FAIL verdict is a legitimate result, not a blocker: it activates F1(b) — the aspire-cli query adapter as a first-class EndpointSource — and S5/S7 proceed on that path. S5 and S7 may not start before this verdict exists.
Design source: RFC #1123 (rfc.md §2.3, §9 F1) + .llm/runs/plan-openapi-mcp-plugin--seed/design/canonical/02-discovery.md (rev 2).
Acceptance
Part of #1126
Scope
Disposable proof [P1] — this proof's verdict arbitrates fork F1; it is not pre-decided. S-7 (adversarial pass) proved the generated helper body runs before Aspire allocates endpoints (
createNetScriptAppHost()registers and returns beforebuilder.build().run();getEndpoint()values are deferred references), so a naive manifest write there emits placeholders. Demonstrate a generated, run-mode, post-allocation callback (Aspire lifecycle event surfaced to generated TS or the C# AppHost side) that resolves every service endpoint from the host network perspective and atomically writes.netscript/run/endpoints.jsonwith the identity binding (projectRoot,runId, literal-loopback URLs).A FAIL verdict is a legitimate result, not a blocker: it activates F1(b) — the
aspire-cliquery adapter as a first-classEndpointSource— and S5/S7 proceed on that path. S5 and S7 may not start before this verdict exists.Design source: RFC #1123 (
rfc.md§2.3, §9 F1) +.llm/runs/plan-openapi-mcp-plugin--seed/design/canonical/02-discovery.md(rev 2).Acceptance
proofs/P1-verdict.mdwith explicit FAIL and measured evidence — test(openapi-mcp): measure Wave-0 P1–P3 proofs #1182 commita9a28c4d1