Skip to content

chore(harness): reopen the 0.0.6 runtime lane for three public-runtime blockers - #1555

Closed
rickylabs wants to merge 73 commits into
mainfrom
chore/release-0.0.6-runtime-reopen
Closed

chore(harness): reopen the 0.0.6 runtime lane for three public-runtime blockers#1555
rickylabs wants to merge 73 commits into
mainfrom
chore/release-0.0.6-runtime-reopen

Conversation

@rickylabs

Copy link
Copy Markdown
Owner

Summary

Control PR for the narrow reopen of the 0.0.6 runtime / public-surface lane, covering three newly triaged public-runtime blockers. Carries orchestration evidence only — the run dir and nothing else. It is not an implementation umbrella and carries no closing keyword; each issue lands through its own leaf branch and PR against main.

The lane's first pass is closed and unchanged: #14058ff1bcb8f, #1398d7e2b67b2, control #15250f0b6b6a3.

Scope

Grouping decision — three separate PRs

Instructed to group only if technically inseparable. Decided from located surfaces, not titles:

Issue Surface Shape
#1457 chat proxy drops State-Protocol query params packages/fresh/src/runtime/ai/stream-proxy.ts small, fully specified
#1459 DeferComponent never hydrated packages/fresh/src/application/defer/{DeferPage,DeferIsland}.tsx, policy.ts substantive — hydration + client-bundle regression test
#1548 browser resolver cannot see Vite service refs packages/plugin-streams-core/src/application/stream-url-resolver.ts known cause, real design choice

No file overlap. #1457 and #1459 both live in packages/fresh but in unrelated subtrees (runtime/ai vs application/defer), so they neither conflict nor share acceptance. #1548 is in a different package, and stream-url-resolver.ts was not touched by #1405 — no interaction with what this lane already landed.

Nothing is technically inseparable, so they stay three independent PRs.

Slices

Validation

Diff is .llm/runs/** only — no publishable source, so no package gate applies to this PR. Gate evidence lands on the three implementation PRs.

Harness

Drift / Debt

Carried from the first pass, still in force: D-1 sub-agent lane override · D-2 evaluator transport · D-3 IMPL-EVAL waiver for the small deterministic class · D-4 automatic dispatcher · D-5 label-driven trigger contract.

Open follow-ups filed by this lane and not adopted here: #1542 (quality:gate root coverage), #1543 (undeclared plugin-streams-core imports).

Definition of Done

Narrow reopen. Records the grouping decision from located surfaces rather than
titles: three distinct files across two packages, no overlap, nothing
technically inseparable, so three independent PRs.

Routes evaluation through the automatic label-driven policy per D-4/D-5.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
@rickylabs rickylabs added type:chore Tooling, config, or housekeeping area:tooling labels Aug 12, 2026
@rickylabs rickylabs added this to the 0.0.6 milestone Aug 12, 2026
@rickylabs rickylabs added status:plan Harness plan phase ci:skip-e2e ci:skip-scaffold Skip the scaffold-static (deno-only) scaffold gate labels Aug 12, 2026
rickylabs and others added 3 commits August 12, 2026 13:05
#1548: the browser read is unreachable by static substitution for two reasons
(import.meta passed by value, keys read by computed index), corroborated by this
repo's own Vite plugin emitting define keys as literal import.meta.env.X.

#1459 is larger than scoped: DeferIsland is not registered as an island at all,
and a second defect sets f-client-nav false in exactly the partial-miss case.
Its client-bundle regression criterion needs capability the repo lacks, so it
moves to #1557 with a written reason rather than being ticked on weaker
evidence.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
…ble-trigger

All three evaluations running on the automatic label-driven policy with exactly
one summary comment each. Records that flipping #1556 to ready and then also
swapping to status:impl-eval produced two dispatcher runs -- no duplicate spend
observed, but avoidable, and not repeated for the other two.

Records the #1459 pre-dispatch rescope: its client-bundle regression criterion
moved to #1557 rather than being ticked on evidence that does not prove it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
rickylabs and others added 5 commits August 12, 2026 13:40
The SDK is a structural precedent only -- it carries the same substitutability
defect, so the plan must not claim it as a fix precedent. arch:check is
confirmed not to cover plugin-streams-core, making the explicit target scan a
hard gate step rather than a conditional.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
Resolves D1 feasibility from the cached @fresh/plugin-vite source -- it exposes
islandSpecifiers, documented for declaring islands from remote packages -- so
the specifier route is locked and copy-mode dropped. Picks the D3 technique,
enumerates the single DeferComponent render site, and names the scaffold
migration.

Corrects one verdict finding: the dev-server probe it proposed is a liveness
fetch with no browser, so it cannot prove the client issues the partial
request. Commits instead to building the client bundle and asserting island
presence, which attacks the exact evidence the issue reports.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
Verdict is PASS in the body; the machine marker read NONE because the token was
a markdown heading (filed as #1563). Not re-run -- that would be duplicate
evaluator spend to work around a formatting bug.

Corrects my own citation: the scaffold pins @fresh/plugin-vite ^1.1.2, not the
1.0.8 I read from the local cache. islandSpecifiers exists in both, so the D1
conclusion stands.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
@rickylabs

Copy link
Copy Markdown
Owner Author

[CHECKPOINT] — consumer-visible merge, for the fixes/release coordinator

Reporting a merged consumer-visible change per the 0.0.6 intermediary-canary strategy. This lane does not cut releases; this is a report, not a request to publish.

Landed

Merged Commit Issue Consumer-visible effect
2026-08-12T11:40:14Z 5db37e7bb #1457 (p1) createNetScriptChatStreamProxy() now forwards durable State-Protocol query parameters (offset, live, handle, cursor) upstream; id remains dropped as application routing metadata

Why it matters to a consumer: durable chat subscribers lost resume and live-polling semantics because the proxy silently dropped the query string. rickylabs/eis-chat PR #169 carries a thin adapter that re-appends every parameter except id; that adapter can be removed once this ships.

Surface change: additive only — a new optional query mapping option on NetScriptChatStreamProxyOptions. Existing callers compile unchanged; their behaviour changes only in that the query is now forwarded, which is the fix.

Evidence

  • IMPL-EVAL PASS (automatic dispatcher, run 31590876488).
  • Seven-check pre-merge gate: slices/pre-merge-gate-1556.md. scaffold-runtime (postgres + sqlite), scaffold-static, code-quality, quality, check-test, surface-diff, deps-report, close-gate all pass.
  • deno task --cwd packages/fresh test → 223/223; reverting the forwarding → 217/6, restored → 223/223.

Caveat worth carrying into any canary note

The package-quality verdict for packages/fresh rests on an explicit target scan, not on the repo quality:gate — its configured roots omit several published packages (#1542). Same caveat this lane recorded on #1528 and #1536.

Still in flight in this lane

I will report each of these as its own checkpoint when merged.

rickylabs and others added 2 commits August 12, 2026 14:03
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
Records that an intermediate 0-failing reading coexisted with a pending
scaffold-runtime gate; counting failures alone would have cleared the merge
early. Also records the third auto-added duplicate status label in this lane.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
@rickylabs

Copy link
Copy Markdown
Owner Author

[CHECKPOINT] — consumer-visible merge, for the fixes/release coordinator

Second consumer-visible checkpoint from this lane. This lane does not cut releases; reporting only.

Landed

Merged Commit Issue Consumer-visible effect
2026-08-12T12:03:55Z 59e435c5d #1548 (p1) The zero-configuration browser stream factory now resolves Aspire's canonical Vite service reference. createNetScriptStreamDB({ streamPath, schema }) connects without a baseUrl override instead of throwing "Durable streams URL not found…"

Why it matters to a consumer: with @netscript/fresh@0.0.5, a Fresh/Vite island using the documented factory threw before connecting even though the AppHost injected both VITE_services__streams__http__0 and VITE_STREAMS_URL. Consumers worked around it by passing baseUrl: import.meta.env.VITE_… ?? …, duplicating service discovery at every call site. That workaround remains supported but is no longer required.

Surface change: none. mod.ts is untouched — the fix is internal to the resolver, plus a narrow ImportMeta.env type declaration.

Evidence

  • IMPL-EVAL PASS, run 31593936968 (sole authoritative evaluator for head ccfa5407; exactly-once confirmed by root).
  • Seven-check pre-merge gate: slices/pre-merge-gate-1559.md. All named gates pass with pending = 0, including both scaffold-runtime tiers.
  • 38/38 package tests. Regressing the reader to a computed index — behaviourally identical — fires the shape guard (36 passed, 2 failed).

Two caveats that belong in any canary note

  1. No test proves Vite's define substitution fires in a real build. The source-shape guard is an explicit surrogate accepted by PLAN-EVAL. End-to-end confirmation needs a real Fresh/Vite build — worth exercising in a canary against a scaffolded app.
  2. packages/sdk/src/discovery/browser-env.ts:65 has the same defect and is not fixed here. If the SDK's browser discovery is in the canary's blast radius, expect the same symptom there. To be filed once this shape is proven in a real build rather than fixed blind.

Also carried: packages/plugin-streams-core's quality verdict rests on an explicit target scan, not the repo quality:gate, whose roots omit it (#1542).

Remaining in this lane

#1459 (p1, deferred coordinator hydration) — PLAN-EVAL PASS, implementation next. Its client-bundle regression criterion is split to #1557, so its PR will carry Refs, not a closing keyword.

rickylabs and others added 6 commits August 12, 2026 14:15
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
Records that I announced the dispatch without performing it -- the lane sat at
the plan head with no session until the watcher caught it.

Records the intervention on the live slice: deno.lock had +388/-9 including an
exact @fresh/plugin-vite pin against the repo's range convention, steered
through codex-resume on the same thread with revert as the default.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
Audit shows zero Fable usage in this lane: every review ran on Opus, research on
Opus, evaluation on MiniMax/DeepSeek/Qwen, implementation on Codex Sol. Nothing
to stop or unwind.

Reports the one configured route that would have selected Fable --
review_codex_complex for the in-flight Sol-high #1459 slice -- which is stopped
and reassigned to this Opus session, the route's own documented fallback.

Corrects supervisor.md, which advertised a Fable review binding that was never
exercised.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
deno.lock matches HEAD; no committed delta. Records that the +397/-9 churn was
Babel/Preact/Vite resolver entries -- the signature of a client-bundle build
side effect from the B3 fixture, not a manifest dependency.

Flags two generated files for attribution at audit: embedded.generated.ts is
legitimately implied by the template change, agent-docs.generated.ts is not.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
…t lock

The added specifiers are a Vite/Rollup/Babel client-build toolchain, so the B3
bundle fixture's real vite build is writing deno.lock. A plain revert cannot
hold; the next test run regenerates it.

Records that this is a second-order consequence of my own B3 requirement, and
steers with three ordered resolutions including an explicit 'B3 is not viable
under the lock policy, rescope it' as an acceptable answer.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
deno.lock reached the PR head at 1a5c1d6 despite two explicit steers.
Advancement stopped -- PR still draft at status:plan-eval, no eval triggered,
nothing merged.

Records both root causes: the vite build writes the lock so revert alone cannot
hold, and my guard was prose rather than a mechanism. Corrective slice delegated
to the live thread rather than self-performed, because codex-status showed it
still owns that worktree.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
rickylabs and others added 25 commits August 12, 2026 17:48
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
Confirms ownership of all seven remaining leaves, records the connected-group
split and the verified surface separation enabling parallel dispatch, and adopts
the fixes lane's wall-time short-circuit detector as a canary check.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
The P0 worktree existed with no process while #1583 ran. Verified file and suite
independence concretely -- including that packages/fresh/deno.json does not
declare @netscript/sdk, removing the one theoretical overlap -- then dispatched
plan-first so the design choice still gets PLAN-EVAL.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
…f prohibitions

A second, still-running Fable IMPL-EVAL process was found and terminated; no
evaluate.md was written and the leaf work is intact.

Audit shows three of five dispatched briefs carried no Fable prohibition at all,
including #1583's. Same shape as D-7: a constraint stated where the actor cannot
see it is not a mechanism. Adds a standard prohibitions block for all future
briefs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
The exit-143 was the background dispatch wrapper, not slice work; leaf, PR and
the automatic Actions-hosted evaluation were all unaffected.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
…cles

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
…ispositions

D-9 records that both automatic evaluators stalled at once and the authorized
native fallbacks that replaced them, including why the fallback evaluators were
denied GitHub write access rather than audited for trigger tokens, and that the
resume path silently drops the brief's effort tier.

D-10 records C2 closed by inspection: the hub is per-connection, so the late-join
suffix window is the duplicate-subscriber window the fix removes. C6 was filed
instead as #1598.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
…the ready-merge rerun trap

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
…etry leaves

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
…the PR head

D-11. Measured across four PRs: label-triggered dispatches report headSha equal
to the branch head, draft-to-ready dispatches report the base/merge ref. #1595
reached ready-merge on a PASS whose run metadata pointed at old main, and
#1602's evaluator was running against main itself.

Standing rule: flip to ready and apply the status label as a separate action,
assert run.headSha == pr.headRefOid before consuming any verdict, and treat any
post-ready change as voiding the prior verdict.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
…ivergence

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
…an evaluator read

For pull_request events github.sha is the merge ref by design, so the metadata
never described the evaluator's checkout. The rule cost one rollback and one
cancelled evaluation on verdicts that were already valid. Authority is the
verdict's declared head; a new generation is for a genuinely new head or a
failed/no-verdict run.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
The default scaffold emits only static createRouteReference patterns, so a
generated dynamic Form-C scaffold does not exist to test. The fixture proves the
runtime reference shape, not generator provenance. Decision: strengthen with a
mechanical shape anchor, state the residual limitation, and file the gap rather
than reword the criterion.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
…r the scaffold reading

The route-manifest generator in packages/fresh already handles dynamic segments,
so a test can drive the browser fixture from real generator output today. I
searched packages/cli, found only static patterns, and generalized from 'the
scaffold cannot' to 'nothing can'.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
…hed JSDoc twice

D-14. Since #1587's codename gate, an issue reference in a published doc comment
is a CI failure. Both occurrences trace to brief wording that used issue numbers
as shorthand and asked for the reasoning to be recorded in source.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
…correction

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
…ne close

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
@rickylabs

Copy link
Copy Markdown
Owner Author

Closing as a non-merge orchestration record.

This control PR carried orchestration evidence only and never had a closing keyword. Its lane is complete, so it is closed rather than merged, at owner direction, so it does not remain an open item against the 0.0.6 milestone.

What it recorded

The narrow reopen of the 0.0.6 runtime / public-surface lane. Everything it coordinated has landed through its own leaf branch and PR against main:

PR Issues Merge
#1593 #1583 f542f31cb
#1595 #1589 4dc4d8262
#1607 #1577 1f9efb4d
#1600 #1569 6aee2b414
#1602 #1576, #1568 1ed78f508
#1605 #1562 bfcf4ed11

Plus, earlier in the run: #1457, #1459, #1548, #1571, #1580, #1227, and the terminal-green Canary.4.

Every referenced issue is closed and carries status:shipped. The runtime / public-surface lane is empty.

Verified before closing

$ git diff --name-only origin/main...4560ef9e5 | grep -vc '^\.llm/runs/'
0

72 commits, zero non-run-artifact files — it is what it claimed to be, an evidence-only control branch, and merging it would add nothing to main but history.

One consequence, stated so it is not discovered later

The artifacts now live only on chore/release-0.0.6-runtime-reopen.

This lane's first control PR, #1525, was merged at 0f0b6b6a3, so that evidence reached main. This one is not, so the branch is the sole copy of the reopen's record: drift entries D-1 through D-14, every slice brief, every pre-merge gate record, and the lane retrospective in cut-trace.md.

Please do not prune this branch as a stale chore/ branch. Deleting it destroys the entire evidence trail for this reopen — including the corrections this lane made to its own reasoning, which are the parts most likely to matter to whoever runs the next milestone.

Handover

No release was dispatched from this lane. Canary.5's blockers are both cleared — #1599 merged carrying canary:0.0.6-canary.5, and #1605 merged at bfcf4ed11. 0.0.6 holds one open issue, docs-owned #1531, whose PR #1608 is non-draft.

Release ownership hands to ns006-fixes.

@rickylabs rickylabs closed this Aug 12, 2026
@rickylabs rickylabs added status:shipped and removed status:plan Harness plan phase labels Aug 12, 2026
@rickylabs
rickylabs deleted the chore/release-0.0.6-runtime-reopen branch August 13, 2026 13:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:tooling ci:skip-e2e ci:skip-scaffold Skip the scaffold-static (deno-only) scaffold gate status:shipped type:chore Tooling, config, or housekeeping

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant