Skip to content

ROADMAP: add browser-target reliability (#609 + #610) to stabilisation tier#611

Closed
aallan wants to merge 1 commit intomainfrom
claude/roadmap-browser-target
Closed

ROADMAP: add browser-target reliability (#609 + #610) to stabilisation tier#611
aallan wants to merge 1 commit intomainfrom
claude/roadmap-browser-target

Conversation

@aallan
Copy link
Copy Markdown
Owner

@aallan aallan commented May 7, 2026

Summary

Adds browser-target reliability to the stabilisation tier in ROADMAP.md. Two Conway's Life agent experiments on --target browser surfaced five concrete blockers, and the agent's design memo maps each obstacle to a runtime-only fix path. Promoting #609 (JSPI-driven IO.sleep) and #610 (ANSI subset interpreter) into the stabilisation tier commits to "browser-target Vera is something you'd actually use" before the agent-integration push.

Why

The current stabilisation framing recognises two patterns from the v0.0.120–v0.0.138 bug-killing campaign: scale-dependent bugs (#596 stress harness) and walker-completeness gaps (#597 walker audit). Both are codegen-side concerns. A third pattern is now visible from the same evidence base — browser-target reliability is approximate, not real — and deserves the same treatment.

Specifics, all surfaced by the recent agent experiments:

  • Timing: IO.sleep busy-waits and freezes the tab. Animation programs literally can't run. Fix: #609 (JSPI / Asyncify).
  • Rendering: ANSI escapes render as literal text. Cursor-addressable terminal programs can't render. Fix: #610 (ANSI subset interpreter, ~200 lines of JS).
  • Marshalling: JS can't pass String arguments to Vera functions. Forces all browser programs into a "compute everything upfront" pattern. Fix: #603 (export runtime.mjs helpers).
  • Codegen gap A: Five prelude combinators silently skipped on every WASM compile. Bug: #604.
  • Codegen gap B: String-returning function call in interpolation produces invalid WASM. Bug: #602.

The first two are the high-leverage ones for the stabilisation tier — they're the difference between "browser-target Vera is theoretical" and "browser-target Vera is something you'd actually use." The other three are tracked in KNOWN_ISSUES.md already.

Changes

Test plan

Summary by CodeRabbit

  • Documentation
    • Updated the project roadmap to document runtime stability improvements, including scale-dependent bug tracking, diagnostic enhancements, and browser compatibility work. The implementation roadmap has been reorganised with updated priorities for ongoing stabilisation efforts.

Two Conway's Life agent experiments on --target browser surfaced
five concrete blockers (issues #602/#603/#604/#609/#610) and an
explicit design memo (#608) mapping each obstacle to a concrete
runtime-only fix.  The current stabilisation framing covers
codegen reliability and walker completeness but treats browser-
target reliability as a separate concern.  The agent's diagnosis
makes that split harder to defend: "write once, run anywhere"
is currently true for pure computation and approximate-to-false
for anything with timing or screen output.  Two of the fixes
(#609 JSPI-driven IO.sleep, #610 ANSI subset interpreter) close
the timing and rendering halves of the seam without language
changes -- adding them to the stabilisation tier commits to
"browser-target Vera is something you'd actually use" before
the agent-integration push.

Changes:
- Expanded the campaign-pattern list from two patterns to three;
  third pattern documents the browser-target seam with links to
  the umbrella issue (#608) and the five concrete blockers.
- Added #609 (JSPI-driven IO.sleep) as item 3 in the stabilisation
  tier, with rationale + the WebAssembly JSPI / Asyncify mechanism.
- Added #610 (ANSI subset interpreter) as item 4 in the same tier,
  paired with #609 -- together they close the seam and let life.vera
  (terminal version) run unchanged on --target browser.
- Renumbered #595 from item 3 to item 5 (now last in stabilisation,
  since it's contingent on an upstream wasmtime-py release).
- Renumbered the agent-integration tier items 4/5/6 -> 6/7/8 to
  match.
- Updated the "What moves when" gate from "#4 starts when #1-#3
  are closed" to "#6 starts when #1-#5 are closed".

Co-Authored-By: Claude <noreply@anthropic.invalid>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 7, 2026

Review Change Stack
No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 669f5733-3d66-46c9-8716-f1581681fe37

📥 Commits

Reviewing files that changed from the base of the PR and between 20f3ccb and 7f02052.

📒 Files selected for processing (1)
  • ROADMAP.md

📝 Walkthrough

Walkthrough

ROADMAP.md is updated to document three failure patterns in the runtime-correctness stabilisation campaign and to reprioritise the implementation tiers. The three patterns are enumerated, with the new browser-target reliability pattern expanded with concrete issue references and architectural gaps. The stabilisation-tier table is updated with new browser runtime tasks and a macOS Ctrl-C issue.

Changes

Stabilisation Patterns and Priorities

Layer / File(s) Summary
Stabilisation Patterns Documentation
ROADMAP.md
"What's next" section expands to document three closure-worthy patterns: scale-dependent bugs with permanent VERA_EAGER_GC diagnostic lane, walker-completeness gaps, and browser-target reliability blockers spanning IO timing, ANSI rendering, string marshalling, and codegen gaps.
Stabilisation Tier Prioritisation
ROADMAP.md
Implementation order table is updated with new browser runtime reliability entries: IO.sleep via JSPI and ANSI subset interpreter (#609, #610), plus macOS Ctrl-C wasmtime trampoline (#595). These replace earlier items and reorder the near-term checklist.
Agent-Integration Tier Roadmap
ROADMAP.md
Agent-integration tier table is reflowed relative to revised stabilisation sequencing, preserving LSP, vera context, and configurable Inference.complete parameters as post-stabilisation priorities.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Possibly related issues

Possibly related PRs

  • aallan/vera#483: Both PRs modify ROADMAP.md's implementation-order table and short-term priorities sequencing.

Suggested labels

docs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarises the primary change: adding browser-target reliability items #609 and #610 to the stabilisation tier in ROADMAP.md.
Linked Issues check ✅ Passed The PR updates ROADMAP.md to document and prioritise browser-target fixes (#609 IO.sleep via JSPI, #610 ANSI interpretation) into the stabilisation tier. Both are directly addressed and correctly referenced in the roadmap changes.
Out of Scope Changes check ✅ Passed ROADMAP.md is the sole file modified. All changes are scoped to documenting the three stabilisation campaign patterns and promoting browser-target fixes (#609, #610) into the tier. No out-of-scope implementation or unrelated edits detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/roadmap-browser-target

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 7, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.92%. Comparing base (20f3ccb) to head (7f02052).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #611   +/-   ##
=======================================
  Coverage   90.92%   90.92%           
=======================================
  Files          59       59           
  Lines       22997    22997           
  Branches      259      259           
=======================================
  Hits        20910    20910           
  Misses       2080     2080           
  Partials        7        7           
Flag Coverage Δ
javascript 57.36% <ø> (ø)
python 94.74% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@aallan
Copy link
Copy Markdown
Owner Author

aallan commented May 7, 2026

Folding into #601 — both PRs originate from the same agent-experiment session and touch independent files (no conflict). The merge-coordination cost of two PRs consistently exceeds the review-clarity benefit. ROADMAP commit cherry-picked onto #601's branch as 757435e.

@aallan aallan closed this May 7, 2026
@aallan aallan deleted the claude/roadmap-browser-target branch May 7, 2026 17:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant