Skip to content
Merged
40 changes: 40 additions & 0 deletions .llm/2026-08-04-openapi-mcp-wave0-proofs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# 2026-08-04 — OpenAPI→MCP Wave-0 proofs

Run dir: `.llm/runs/test-openapi-mcp-wave0-proofs--wave0/` · Branch `test/openapi-mcp-wave0-proofs`
· draft PR [#1182](https://github.com/rickylabs/netscript/pull/1182)

## What the proofs established

P1 found a usable Aspire post-allocation callback seam: `onResourceEndpointsAllocated` plus
`getValueAsync()` emitted a complete, identity-bound endpoint manifest with the allocated port. The
full proof still correctly failed because the generated SQLite service exited without `--allow-ffi`,
and a later HTTP 200 could not be attributed to that owned process. The qualified, revisitable
arbitration is F1(b): productize a disposable startup-side writer after the generated runtime
permission defect is fixed.

P2 measured a real, attributed no-database scaffold: a 3657-byte OpenAPI 3.1.1 document with three
dotted operation IDs, 73/89/88-byte discovery rows, no references, no non-2xx/common error envelope,
and no observed truncation-limit exceedance. Its combined verdict is FAIL because the required
DB-backed branch could not produce an attributable live spec; #1128 therefore remains open without a
closing keyword.

P3 independently confirmed the auth-guarded spec route's exact 401 and 403 envelopes plus an
authorized 200, and ratified the locked `spec_unavailable` guidance without implying authenticated
spec support exists in the future production feature.

## Two things worth remembering

1. A proof slice can finish successfully with an empirical FAIL. The formal Qwen IMPL-EVAL passed
this run because all required verdict artifacts were truthful and evidence-backed; it did not
reinterpret a failed runtime or missing branch as a product PASS.

2. Ownership evidence is part of the result. An HTTP response without captured listener ownership
and ordering cannot rescue a failed owned process. Likewise, shared-host leak checks must name
specific owned roots and leave foreign or unproven AppHosts and containers untouched.

## Deliberately not done

- No package/plugin public-surface or generated-template productization.
- No workaround for the generated SQLite `--allow-ffi` defect.
- No closing keyword for #1128 while its DB-backed acceptance evidence is absent.
- No `deno task e2e:cli`; merge-readiness E2E remains the orchestrator's decision.
11 changes: 10 additions & 1 deletion .llm/runs/plan-openapi-mcp-plugin--seed/rfc.md
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,14 @@ legitimate result that activates option (b) (the `aspire-cli` source), not a blo
verdict is the deciding artifact; #1131 and #1133 may not start before it exists. The original
fork table is retained below as the decision record:

**P1 verdict (2026-08-03): `FAIL`; F1(b) selected for the current decision record.** The
post-allocation callback did emit a complete identity-bound manifest with the allocated
`http://localhost:3001` endpoint, so the seam itself was not refuted. The locked coherent-owned-run
bar failed because the generated SQLite service exited without `--allow-ffi`; a later HTTP 200 was
unattributed and could not establish manifest/description/health agreement. F1(b) is therefore the
first-class endpoint source now, while a future healthy owned-run proof may legitimately revisit F1.
Both mechanisms remain additive implementations of the same endpoint-source port.

| # | Fork | Options | Seed recommendation |
| --- | --- | --- | --- |
| F1 | Endpoint manifest mechanism | (a) generated run-mode **post-allocation** callback writes the run-state manifest (b) `aspire` CLI query adapter (c) MCP as Aspire-hosted HTTP resource | **(a), [P1]-arbitrated** — S-7 proved the naive helper-body write impossible, so (a) stands only if P1's artifact demonstrates the post-allocation seam; (b) is a first-class source in the same port contract otherwise; (c) rejected (no HTTP transport exists; port chicken-and-egg; `.mcp.json` churn) |
Expand All @@ -388,4 +396,5 @@ fork table is retained below as the decision record:
document condenses the run's normative record (`design/canonical/00–06` rev 2, `plan.md` rev 2,
`design/examples/`). Where this RFC and the run docs conflict, the run docs win until
ratification, then GitHub wins. Refs #1117 #1102 #1072 #1071 #1093 — no closing keywords; the §7
board is now live (epic #1126, children #1127–#1140); F1 remains open pending #1127's verdict.</sub>
board is now live (epic #1126, children #1127–#1140); F1 was resolved to qualified F1(b) by
#1127's committed proof verdict.</sub>
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
use harness

# S1 Fable re-review — amended P1 proof

You are the separate opposite-family slice reviewer. Work only in
`/home/codex/repos/ns005-proofs-impl`. Do not edit implementation or evidence files, do not run an
AppHost or scaffold, do not delegate, and do not create a commit or contact GitHub.

Read the locked plan and PLAN-EVAL, then the original review at `reviews/S1-fable.md`. Re-review
the amended stable S1 artifacts, especially:

- `proofs/P1-verdict.md`
- `proofs/evidence/P1-runtime.json`
- `proofs/evidence/P1-attempts.md`
- `worklog.md`
- `context-pack.md`
- `drift.md`

Verify each original finding M1, M2, M3, m1, m2, and m3 is resolved without weakening the locked
D5/D6 gate or misrepresenting the unattributed HTTP 200. Confirm that P1 remains an explicit FAIL,
that F1(b) is causally qualified and revisitable, that only DB-backed P2 is product-blocked, and
that evaluator vocabulary and supervisor-owned RFC updates are correctly scoped.

Write exactly one review artifact at `reviews/S1-fable-rereview.md`. Its first line must be exactly
`APPROVED` or `CHANGES_REQUESTED`. Include a per-finding disposition table and list any new finding
with severity and a concrete required action. If all original findings are resolved and no new
blocking issue exists, approve. This is advisory slice review, not IMPL-EVAL.
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
use harness

# S1 opposite-family review — P1 lifecycle verdict

## SKILL

Read and follow `.agents/skills/netscript-harness`, `.agents/skills/netscript-doctrine`,
`.agents/skills/netscript-tools`, `.agents/skills/aspire`, and `.agents/skills/netscript-pr`. This
is an advisory `review_codex` lane, not formal IMPL-EVAL.

You are the separate native Claude Fable 5/low reviewer for Codex-authored S1 in
`test-openapi-mcp-wave0-proofs--wave0`. Work from `/home/codex/repos/ns005-proofs-impl` and review
the stable uncommitted diff only.

Read the run's `plan.md` D4–D6, `plan-eval.md`, `worklog.md`, `drift.md`, all `proofs/P1-*` and
`proofs/experiments/p1-*` / `proofs/evidence/P1-*` files, RFC #1123 §4 and §9, and issue #1127's
acceptance contract. Inspect the scratch manifest/AppHost only as needed; do not change it.

Adversarially answer:

1. Does the callback + `getValueAsync()` + atomic identity-bound manifest actually demonstrate the
RFC's post-allocation seam, or does D5 correctly require coherent Aspire description/health/live
request evidence and therefore make this an explicit FAIL selecting F1(b)?
2. Is the later HTTP 200 after Aspire `Finished`/exit 1 adequately explained and safe to use, or is
the evidence contaminated/ambiguous?
3. Are manifest identity, endpoint allocation, atomicity, multi-service completion, evidence
normalization, exact teardown, scope, and static gates truthful and sufficient?
4. Does `FAIL_RESCOPE` improperly block independent P2/P3 proof work, given that a P1 FAIL is a
legitimate deliverable rather than a slice failure?
5. Identify every correctness, evidence, path, wording, or acceptance-box defect that must be fixed
before supervisor sign-off.

Write only `.llm/runs/test-openapi-mcp-wave0-proofs--wave0/reviews/S1-fable.md`. Begin with exactly
`APPROVED` or `CHANGES_REQUESTED`, then list severity-ranked findings with file/line evidence and a
specific required action. Do not edit any proof, plan, worklog, drift, product/template source, or
scratch file; do not commit, push, post to GitHub, run a new AppHost, or spawn subagents.
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
use harness

# S1 Fable findings amendment

## SKILL

Continue following the already-loaded harness, tools, Aspire, CLI, doctrine, and PR skills. This is
the same Codex implementation thread; do not self-sign off.

Read `reviews/S1-fable.md` and resolve every M1, M2, M3, m1, m2, and m3 finding without rerunning an
AppHost and without changing product/template source:

- De-attribute the unexplained HTTP 200 in `P1-runtime.json`; it must not remain a satisfied
pass-bar condition. State that listener ownership/timing was not established and preserve the
observation only as ambiguous evidence.
- Qualify the P1/F1(b) verdict and future RFC/epic wording: the post-allocation seam produced
correct allocated endpoint values, but the locked D5 coherent owned-run bar failed due service
health; a later healthy proof may legitimately revisit F1.
- Distinguish the DB-backed P2 block from runnable no-DB P2 and P3. The product rescope
recommendation must not halt independent proof work.
- Make `FAIL_RESCOPE` explicitly an implementation recommendation, not a self-issued evaluator
verdict.
- Annotate RFC §9 as supervisor-applied after review in the S1 file list.
- Rename/qualify `literalLoopbackUrl` because the raw host was the `localhost` name, not a literal
numeric loopback.
- Update `worklog.md`, `context-pack.md`, and `drift.md` truthfully; preserve explicit P1
FAIL/F1(b), teardown, static-gate, and no-product-change evidence.

Run scoped format/check/lint only for the touched run/proof artifacts. Do not commit, push, edit
GitHub, rerun Aspire, or begin P2/P3. Stop with a concise handoff for the supervisor's Fable
re-review.
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
use harness

# S2 Fable re-review — amended P2 evidence

You are the same separate opposite-family review role in a fresh native session. Work read-only in
`/home/codex/repos/ns005-proofs-impl`; do not edit, run runtime/scaffold work, delegate, commit,
push, or contact GitHub.

Read `reviews/S2-fable.md`, `briefs/S2-review-fixes.md`, and every amended artifact named there.
Verify M1 and m1–m3 are resolved: `summary` and all actually-present standard keywords are captured;
unknown/non-allowlisted keys remain auditable with paths; the context-blind limitation is honest;
the retained raw spec exactly matches the recorded bytes/hash and regenerated evidence; lint-ignore,
plan-command drift, and digest-algorithm records are corrected. Reconfirm the measurement script's
claims, the explicit combined P2 FAIL, and that #1128 acceptance must remain unchecked.

Write only `reviews/S2-fable-rereview.md`. First line exactly `APPROVED` or
`CHANGES_REQUESTED`; include a per-finding disposition and any new blocking finding. This is
advisory slice review, not IMPL-EVAL.
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
use harness

# S2 Fable review — P2 no-DB measurement and DB failure

You are the separate opposite-family slice reviewer. Work only in
`/home/codex/repos/ns005-proofs-impl`. Do not edit implementation/evidence files, run an AppHost or
scaffold, delegate, commit, push, or contact GitHub.

Read plan D3/D7/D8/D10/D12, `plan-eval.md`, issue #1128, RFC §4, the approved S1 re-review, and the
stable S2 diff. Review at minimum:

- `proofs/P2-verdict.md`
- `proofs/experiments/p2-measure-live-spec.ts`
- `proofs/evidence/P2-no-db.json`
- `proofs/evidence/P2-db-failure.json`
- `proofs/evidence/P2-runtime.json`
- `proofs/evidence/P2-attempts.md`
- the P1 evidence carried into the DB failure
- `worklog.md`, `context-pack.md`, and `drift.md`

Determine whether the explicit combined P2 `FAIL` is the only truthful D7/D12 verdict. Confirm the
unattributed P1 HTTP 200 was not reused; the no-DB spec is attributed to one owned healthy real
scaffold; all required operationId, compact-byte, discovery-row, request/response/error/all-schema,
source/dereference, error-envelope, reference, keyword, and truncation-budget observations are
measured rather than inferred; and the tool's algorithms support every claim.

Adversarially check evidence consistency, normalization under D10 (including volatile PIDs/times),
fixed-port ownership, teardown, lock/scope hygiene, static-gate claims, and whether any result could
be misread as satisfying #1128 acceptance despite the missing DB measurement. Confirm no product
or template workaround was made.

Write exactly one artifact at `reviews/S2-fable.md`; first line exactly `APPROVED` or
`CHANGES_REQUESTED`. Rank findings by severity with concrete required actions. State separately
whether #1128's acceptance box may truthfully be checked. This is advisory slice review, not
IMPL-EVAL.
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
use harness

# S2 implementation follow-up — P2 no-DB measurement and explicit DB failure

Resume the existing tracked Codex implementation thread in
`/home/codex/repos/ns005-proofs-impl`. Read the current run artifacts, the approved
`reviews/S1-fable-rereview.md`, plan D3/D7/D8/D10/D12, issue #1128, and RFC §4 before acting.

Execute S2 only, then stop for supervisor/Fable review. Do not start P3. Do not commit, push, edit
GitHub, update the seed RFC, or change any product/template file.

The supervisor accepts S1 and authorizes the independent no-database P2 half. The SQLite/DB P2
half remains failed/rescoped because the generated service lacks `--allow-ffi`. Do not rerun,
patch, wrap, or manually relaunch that DB scaffold, and do not reuse the unattributed P1 HTTP 200.
Carry the normalized P1 runtime failure forward as the DB-side P2 evidence. Because D7 requires
both scaffolds, the resulting P2 verdict must be explicit `FAIL`, never partial PASS or NOT_RUN.

For the no-database half:

1. Re-inventory shared AppHosts, containers, and relevant ports read-only; leave every foreign or
unproven resource untouched.
2. Create a fresh local-source no-database scaffold under the approved `.llm/tmp/` root. Run at
most one owned AppHost and capture exact ownership/PID/port before fetching the live
`/api/openapi.json` document.
3. Commit-ready experiment/evidence must record the D7 schema for the valid no-DB live spec:
compact UTF-8 spec bytes; every operationId and shape classification; discovery-row bytes;
request, response, error, and all-schema views in source and local-dereferenced form; every
non-2xx response/envelope observation; local/external/unresolved refs; and the recursively
observed OpenAPI/JSON-Schema keyword subset.
4. Compare every measured array/string with `maxItems=50` and `maxStringLength=2000`, and state
explicitly that the current MCP path has no whole-result byte ceiling. Never infer a common
error envelope where the no-DB template lacks one.
5. Normalize paths/process noise and record commands, versions, timestamps, teardown, root-lock
hash, and attribution evidence. Stop the exact owned tree and prove zero owned survivors before
writing the verdict.
6. Run the scoped check/lint/fmt wrappers on owned TypeScript and scan for lint ignores. Update
worklog/context/drift. Leave a stable uncommitted S2 diff and stop.

The verdict must distinguish measured no-DB results from the failed DB branch and explain that a
skipped/blocked branch maps to FAIL under D7/D12. Do not claim #1128 acceptance or issue an
IMPL-EVAL disposition.
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
use harness

# S2 review fixes — keyword fidelity and record hygiene

Resume the same tracked Codex thread in `/home/codex/repos/ns005-proofs-impl`. Read
`reviews/S2-fable.md` completely and resolve M1 plus m1–m3. Do not run a scaffold/AppHost, start
P3, change product/template source, commit, push, or contact GitHub.

Required amendments:

1. Fix `p2-measure-live-spec.ts` so the observed OpenAPI 3.1 / JSON Schema 2020-12 keyword evidence
cannot silently omit present standard keywords such as `summary`. Use a defensible complete
standard-key set and also emit non-allowlisted object keys with paths (or an equally auditable
mechanism). Document the context-blind property-name limitation if it remains.
2. Copy the retained, hash-matched, credential-free 3657-byte raw no-DB spec into normalized
committed evidence under `proofs/evidence/` using `apply_patch`, then rerun only the measurement
script against that retained spec to regenerate `P2-no-db.json`. Do not fetch the network.
3. Update `P2-verdict.md` so its keyword claim exactly matches the amended evidence.
4. Update the no-lint-ignore gate note to cover both P1 and P2 experiment files.
5. Append drift for the split fetch/measurement command and its filename/permissions deviation.
6. Name the lock-digest algorithm in P1/P2 evidence, or otherwise make the 40-vs-64-hex distinction
explicit without changing the historical values.
7. Re-run the scoped wrappers, JSON assertions, raw-spec hash/byte checks, lint-ignore scan, and
diff/scope checks. Update worklog/context/drift, leave a stable uncommitted amendment, and stop
for Fable re-review.

The combined P2 verdict remains `FAIL`; do not claim #1128 acceptance or issue an IMPL-EVAL
disposition.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
use harness

# S3 Fable review — P3 auth-guarded spec fixture and wording

You are the separate opposite-family slice reviewer. Work only in
`/home/codex/repos/ns005-proofs-p3b-impl`. Do not edit implementation/evidence files, delegate,
commit, push, or contact GitHub. A read-only rerun of the single focused test is permitted; do not
start Aspire, scaffold an app, or touch shared resources.

Read plan D9/D10 and the skip-as-FAIL rule, `plan-eval.md`, issue #1129 and RFC #1123 §4 Wave 0, the
existing fixture source, and the stable S3 diff. Review at minimum:

- `packages/service/tests/auth/define-service-auth_test.ts`
- `proofs/P3-verdict.md`
- `proofs/evidence/P3-auth-fixture.json`
- `worklog.md`, `context-pack.md`, and `drift.md`

Adversarially verify that the selected fixture really performs all three requests against one live
auth-guarded `/api/openapi.json` service; asserts the exact 401 and 403 JSON envelopes; asserts the
authorized 200 without claiming an unasserted success-body shape; and was actually executed with the
recorded focused command and exit-zero result. Check repository-head, fixture-blob, assertion line,
runtime-version, and normalization claims where independently possible.

Confirm the ratified `spec_unavailable` wording is byte-for-byte the D9 text, is justified by the
measured 401/403/200 behavior, and does not weaken auth or imply authenticated-spec support exists.
Check scope/lock hygiene: S3 may add only run artifacts, must not edit product/test source, must not
add lint ignores, and must not represent a skipped branch as PASS.

Write exactly one artifact at `reviews/S3-fable.md`; first line exactly `APPROVED` or
`CHANGES_REQUESTED`. Rank findings by severity with concrete required actions. State separately
whether #1129's acceptance box may truthfully be checked after the reviewed artifacts are committed.
This is advisory slice review, not IMPL-EVAL.
Loading
Loading