ROADMAP refactor + Tetris experiment: 2 codegen bugs + design-reviewed friction items#613
Conversation
ROADMAP is future work; HISTORY is what we did; CHANGELOG is the detailed account. The previous Stage-12-launch edit blurred the boundary by dragging a four-pattern campaign-recap into "What's next" with references to closed issues (#515, #570, #487, #593, #588) -- that material belongs in HISTORY's Stage 12 framing, where it already lives. Changes: * "Where we are" -- trimmed to a single line scoreboard (3,766 tests, 86 conformance, 34 examples, 13 spec chapters). The retrospective VeraBench paragraph and the duplicate Conway-runs-cleanly note removed; both are HISTORY material. * "What's next" -- replaced the four-pattern campaign-recap paragraph with one short forward-looking framing: stabilisation closes out N concrete issues, agent-integration is next. * Stabilisation tier rows -- dropped retrospective references to #593 (closure-return shadow-push, fixed in v0.0.138) and #588 (walker missing branches, fixed in v0.0.137). The forward-looking rationale stands on its own. * Verification-depth row -- generalises the obligation infrastructure reference instead of name-checking the closed #520 / #551 fixes that built it. No content moved; the historical material lives in HISTORY.md Stage 12 and CHANGELOG.md v0.0.137 / v0.0.138 entries. Co-Authored-By: Claude <noreply@anthropic.invalid>
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughROADMAP.md restructures “Where we are” into explicit counts, converts “What’s next” into ordered Stabilisation/Agent‑integration tables, and tightens several phase and verification phrasings; KNOWN_ISSUES.md adds two closure-related WASM malformation bug entries ( ChangesRoadmap Documentation Updates
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #613 +/- ##
=======================================
Coverage 90.92% 90.92%
=======================================
Files 59 59
Lines 22997 22997
Branches 259 259
=======================================
Hits 20910 20910
Misses 2080 2080
Partials 7 7
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
The previous trim (33c8090) didn't go far enough -- ROADMAP was still a wall of text with retrospective evidence, meta-explanation, and descriptive intros that weren't forward-looking. This pass cuts: * Top intro: 3 paragraphs of meta-framing -> 1 sentence pointing at HISTORY + CHANGELOG. * "What's next" prose recap removed. The Stabilisation tier table *is* what's next; no preamble needed. * "The ordering principle" / "What moves when" meta-paragraphs -- collapsed to one short sentence inline below the agent-integration tier table. * Phase 1b VeraBench results dump (lines 70-99 -- six-model results table, key-findings narrative) removed. Those are RESULTS, not forward work; they live in the vera-bench repo. Replaced with forward item: "Expand benchmark coverage (pass@k, more models)". * Phase 1a-complete pointer dropped (redundant with doc-level HISTORY pointer at the top). * Milestone 1 / Milestone 2 descriptive intros that were partly retrospective ("This milestone follows the critical dependency chain that has driven the project... Map / JSON / HTTP / Inference are complete...") trimmed to the forward-looking goal statement only. * Phase 2b Http intro trimmed: "shipped in v0.0.99" -> "extend the existing GET/POST surface". * "Completed phases" footer paragraph (810+ commits / 138 releases / 3766 tests / etc) removed entirely -- pure retrospective summary duplicating HISTORY. * Phase 3c stale "33 to 50+ examples" -> "50+". Also drops the parenthetical about check_doc_counts.py (tooling note, not roadmap content). * Speculative-section meta-explanation trimmed. * Continuous-hardening intro trimmed. Net: 263 -> 200 lines (-76 / +13). No forward-looking content removed; only retrospective state, evidence dumps, and meta-prose. Co-Authored-By: Claude <noreply@anthropic.invalid>
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
ROADMAP.md (1)
1-200:⚠️ Potential issue | 🔴 CriticalRemove completed issues (
#595,#478,#470,#471,#466) from ROADMAP per documentation guidelines.All 80 GitHub issue links in ROADMAP.md are correctly formed and point to valid issues in the aallan/vera repository. However, verification discovered that five issues have reached CLOSED or MERGED state and should be deleted from the roadmap as per the coding guidelines: "Completed items get deleted from these tables and noted in HISTORY.md."
Issues to remove and migrate to HISTORY.md:
#595(CLOSED) — currently in Stabilisation tier row 3#478(CLOSED) — currently in CI tooling table#470(CLOSED) — referenced in phase dependency for issue#509#471(CLOSED) — referenced in phase dependency for issue#509#466(CLOSED) — referenced in phase dependency for issue#507🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@ROADMAP.md` around lines 1 - 200, Remove the five completed issues from ROADMAP.md and append concise entries to HISTORY.md: delete the Stabilisation-tier row referencing `#595`, remove the CI tooling table row for `#478`, and remove the phase-dependency mentions of `#470` and `#471` (referenced under issue `#509`) and `#466` (referenced under issue `#507`) in Phase 4c; ensure any parenthetical "Phase 2 of [`#470`]" / "[`#471`]" / "[`#466`]" text is updated to remove the closed issue numbers and that no dangling commas or stray brackets remain so the Markdown renders correctly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@ROADMAP.md`:
- Line 7: The counts in ROADMAP.md ("3,766 tests, 86 conformance programs, 34
examples, 13 spec chapters.") are out of sync with README.md (which lists 3,761
tests and 33 examples); update the test and example numbers in the ROADMAP.md
line to match README.md (adjust "3,766"→"3,761" and "34"→"33") and then run
scripts/check_doc_counts.py to validate consistency across docs before
committing; ensure the conformance programs and spec chapters values ("86" and
"13") remain unchanged.
- Around line 13-22: Remove the entire table row referencing issue `#595` from
ROADMAP.md (the row starting with "| 7 | [`#595`]") and add a one-line entry to
the appropriate version section in HISTORY.md noting that `#595` (macOS malloc
abort in wasmtime trampoline on Ctrl-C) was closed/fixed — e.g. append a short
bullet like "Closed `#595` — macOS malloc abort in wasmtime trampoline on Ctrl-C
(upstream fix merged)." Ensure the ROADMAP table remains syntactically valid
after deleting the row and the HISTORY.md entry clearly references "#595".
---
Outside diff comments:
In `@ROADMAP.md`:
- Around line 1-200: Remove the five completed issues from ROADMAP.md and append
concise entries to HISTORY.md: delete the Stabilisation-tier row referencing
`#595`, remove the CI tooling table row for `#478`, and remove the phase-dependency
mentions of `#470` and `#471` (referenced under issue `#509`) and `#466` (referenced
under issue `#507`) in Phase 4c; ensure any parenthetical "Phase 2 of [`#470`]" /
"[`#471`]" / "[`#466`]" text is updated to remove the closed issue numbers and that
no dangling commas or stray brackets remain so the Markdown renders correctly.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 58951d52-5229-4ec2-a888-76131240a61f
📒 Files selected for processing (1)
ROADMAP.md
Fold the Tetris-experiment work into this PR (was opened as #623, which is now closed in favour of bundling here). Bugs (filed + reproduced on current main, added to KNOWN_ISSUES.md): * #615 -- Non-contiguous outer-Int capture in closures miscompiles (silent wrong result OR trap, depending on body shape). Hit *everywhere* in the Tetris collision-check; required helper-function workarounds throughout. * #614 -- Closure capturing data ADT and passing it to a function call emits malformed WASM. Single-variant ADTs reproduce identically. Hypothesised same root cause as #615 in the closure-lifter env-struct serialisation. Both promoted to top of stabilisation tier in ROADMAP (#615 first since silent miscompute is the most severe failure mode). Friction items: each evaluated against Vera's design principles rather than just transcribed from the friction document. Kept as-is (no design tension): * #618 -- IO.read_char / Terminal effect (Phase 2c) * #622 -- SKILL.md polish: array_join cross-reference + decreases idiom example (Phase 3c) Reframed against design principles: * #616 -- nat ops. Ship total nat_add + nat_mul (Phase 4c); reject saturating nat_sub_sat -- saturating papers over the underflow obligation that refinement types are designed to surface. The underflow case is fixed cheaper by #552 generalising @nat invariant checking. * #620 -- optional field names in data declarations (Phase 4d, new "Cosmetic / advisory additions" phase). Issue body now carries four load-bearing guardrails: names never bindable in patterns, semantics-irrelevant, no compiler enforcement, mixed/anonymous forms must coexist. Sharpens the "cosmetic only" framing so this cannot drift into named-binding territory. * #621 -- debug effect. Reframed as a *visible* first-class effect uniquely composable with pure (effects(pure | <Debug>)), not the effect-system-invisible version the friction doc proposed. The invisible version contradicted the load-bearing effect-row visibility property; the visible version preserves the design while still solving the closure-debugging friction. Closed as design-rejected: * #617 -- anonymous tuples with let (x, y) = ... destructuring. Destructuring sugar introduces named locals, which contradict Vera's De Bruijn slot indexing. The friction doc itself de-prioritised this; the data Pair { Pair(A, B) } workaround is the design-aligned answer. * #619 -- pure / io single-keyword shorthand. Directly undermines the mandatory contract preamble's role as a forcing function. 60 lines of vacuous preamble for 20 helpers is the design working as intended -- it makes "vacuous because lazy" and "vacuous because thoughtful" typographically distinct. ROADMAP changes: * Stabilisation tier expanded from 7 to 9 items; #614 / #615 inserted at top. Agent-integration tier renumbered 8/9/10 -> 10/11/12. * Phase 2c gains #618. * Phase 3c gains #621 + #622. * Phase 4c gains #616 (nat_add + nat_mul; nat_sub_sat rejected). * New Phase 4d "Cosmetic / advisory additions" with #620. KNOWN_ISSUES.md gains entries for #614 and #615 in the Bugs section. Co-Authored-By: Claude <noreply@anthropic.invalid>
There was a problem hiding this comment.
♻️ Duplicate comments (1)
ROADMAP.md (1)
23-23:⚠️ Potential issue | 🟠 Major | ⚡ Quick winRemove closed issue
#595from the forward-looking Stabilisation tier.Line 23 keeps
#595in an active roadmap queue even though this issue is already treated as closed in current project docs; that makes the forward plan stale and conflicts with the “completed items get deleted” rule (Line 33).As per coding guidelines: “When closing an issue with a feature PR, delete the entry from
ROADMAP.mdentirely and add a one-liner to the relevant version row inHISTORY.md.”🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@ROADMAP.md` at line 23, Remove the closed issue entry for `#595` from the Stabilisation tier in ROADMAP.md (delete the entire table row referencing issue `#595` / wasmtime trampoline), and append a one-line note about closing `#595` to the appropriate version row in HISTORY.md per project guidelines; ensure the ROADMAP no longer lists `#595` and HISTORY.md contains the one-liner indicating the issue was resolved/closed.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Duplicate comments:
In `@ROADMAP.md`:
- Line 23: Remove the closed issue entry for `#595` from the Stabilisation tier in
ROADMAP.md (delete the entire table row referencing issue `#595` / wasmtime
trampoline), and append a one-line note about closing `#595` to the appropriate
version row in HISTORY.md per project guidelines; ensure the ROADMAP no longer
lists `#595` and HISTORY.md contains the one-liner indicating the issue was
resolved/closed.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: d0e374e6-18d1-40f8-b30f-f79e0a607c6e
📒 Files selected for processing (2)
KNOWN_ISSUES.mdROADMAP.md
Pushback during PR review surfaced that "optional field names in data declarations" has already been considered and rejected in April 2026 as #183 ("Human-readable slot annotations: display layer for @T.n references"), with three explicit reasons: 1. They can lie -- advisory labels with no enforcement become a liability when they drift from semantics. 2. They don't help LLMs *generate* correct indices, only help humans *read* generated code. 3. They add comment-rot maintenance burden. #183's replacement was #445 (vera check --explain-slots), which shipped in v0.0.108 and is the project's design-aligned answer to the slot-readability friction class. The "four load-bearing guardrails" reframe in #620 didn't escape those reasons -- guardrail 3 ("the compiler does not -- and must not -- warn on misleading names") explicitly enshrined the first rejection reason as a feature. The "single point of truth" framing (names in constructor declaration, not on slot references) is a minor mitigation versus #183's per-use-site annotations but a smaller failure surface, not a different failure mode. Removed Phase 4d entirely from ROADMAP (it had only #620). Closure comment on #620 cites #183 verbatim and explains why the syntactic difference doesn't escape the rejection. Co-Authored-By: Claude <noreply@anthropic.invalid>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@ROADMAP.md`:
- Line 125: Remove the stray trailing pipe character at the end of the bullet
describing the `<Debug>` effect so the Markdown renders cleanly; locate the list
item that mentions `[`#621`]`, the `<Debug>` effect and the example `effects(pure
| <Debug>)` and delete the terminal `|` character from that line.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: e018e325-1edc-49e8-8d37-10c27caedd6e
📒 Files selected for processing (1)
ROADMAP.md
User pushback on #620 (which I closed as duplicate of #183) prompted re-evaluation of every other newly opened friction issue against DESIGN.md principles. All four remaining feature issues fail the hard look: * #616 (nat_add / nat_mul / nat_sub_sat) -- Closed as redundant. Empirically tested: Nat + Nat -> Nat and Nat * Nat -> Nat work directly today, type-check, verify at Tier 1, and run. Bidirectional Int <: Nat subtyping handles them. The friction is a documentation gap that #607 already tracks. Adding new built-ins for what + and * already do violates DESIGN.md principle 6 (constrained expressiveness) and principle 3 (one canonical form). * #618 (IO.read_char / Terminal effect) -- Closed. Strategic answer for real-time terminal programs is --target browser, already prioritised in the stabilisation tier as #609 (JSPI sleep) + #610 (ANSI subset interpreter). IO.read_char alone is half-useless without set_raw_mode (still line-buffered); the full Terminal effect is OS-specific and substantial. Browser path is the design-aligned choice and avoids per-OS gotchas. * #621 (Debug effect) -- Closed. Closure-must-be-pure is principle 2 working as intended. The Vera-aligned debugging path is "extract closure to top-level helper, vera test, IO.print from caller" -- same workaround needed for #614/#615 anyway. General future answer is #294 (effect row polymorphism). A Debug effect adds a parallel mechanism redundant with both -- principle 6 violation. * #622 (SKILL polish) -- Closed. Both proposed additions are already in SKILL.md: string_join is in the bolded prefix-convention block at line 729 plus a worked example at line 982; the decreases-with-+1 idiom is shown in a worked example at line 1614. The friction-doc author themselves admitted they "didn't read carefully enough first time". Padding SKILL.md with redundant cross-references would violate principle 6's documentation analogue. Net result of the Tetris experiment after design review: * Two real codegen bugs filed and added to KNOWN_ISSUES.md (#614, #615) + stabilisation-tier entries. * Zero of the seven friction features survive design review: - 5 closed (#617 De Bruijn, #619 mandatory contracts, #620 dup of #183, plus #616, #618, #621, #622 from this commit). - 1 reframed earlier and now also closed (#616). - 1 reframed earlier and now also closed (#621). The friction document was a useful map of where agents hit Vera's design constraints, but every feature it proposed either: - Solved a documentation problem (#607 / #622) - Was already considered and rejected (#620 dup of #183) - Contradicted a load-bearing design principle (#617, #619, #621) - Was redundant with an existing or planned mechanism (#616, #618) ROADMAP cleanup: removed entries for the four newly-closed issues (Phase 2c #618, Phase 3c #621 + #622, Phase 4c #616). Co-Authored-By: Claude <noreply@anthropic.invalid>
Daisy correctly pushed back on the close. Two errors: 1. I overstated the implementation cost. Raw-mode terminal input is ~5 lines on Unix (termios.tcsetattr already in Python stdlib), msvcrt.getch on Windows, JSPI-bridged keypress events in browser. The runtime can enter raw mode implicitly per read_char call; no separate set_raw_mode operation needed. User-facing API is a single new IO operation. 2. I treated --target browser as a substitute for portable terminal input. That violates Vera's "write once, run anywhere" target commitment (DESIGN.md: "WebAssembly (native + browser)" -- both first-class). Restricting real-time CLI games to browser-only is the symmetric anti-pattern to restricting Conway's Life to terminal-only because sleep doesn't work in browser. The project already accepted the symmetric work for timing (#609 JSPI sleep); the same logic applies to single-character input. Reframed #618 to the minimum proposal: single new IO.read_char operation in the existing IO effect, with two host implementations. Out-of-scope items (set_raw_mode, enable_alternate_screen, get_size) called out as separable filings if real demand emerges. Title updated: "IO.read_char -- single-character input portable across terminal and browser targets". Added to stabilisation tier as item 9, alongside #609 (timing) and #610 (rendering) -- together those three close the input/timing/ rendering trio that real-time programs need. Agent-integration tier renumbered 10/11/12 to 11/12/13. Issue body now carries explicit DESIGN.md target-commitment citation, the symmetry argument with #609, and the trajectory of filing -> reframe -> erroneous close -> reopen. Net result of the Tetris experiment after this revision: * Two real codegen bugs (#614, #615) -- stabilisation tier 1+2 * One stdlib-write-once-run-anywhere addition (#618) -- stabilisation tier 9 * Six items closed after design review (#616, #617, #619, #620, #621, #622) Co-Authored-By: Claude <noreply@anthropic.invalid>
…ry for #595 Two of five CodeRabbit findings valid: * #595 (macOS malloc abort) closed 2026-05-07 -- upstream wasmtime-py PR #337 merged. Removed from ROADMAP stabilisation tier (was item 10); added one-line entry to HISTORY.md Stage 12 table. * #478 (check_changelog_updated.py) closed 2026-04-16, already in HISTORY.md line 247. Removed the residual ROADMAP CI tooling table row that should have been deleted at close time. Three findings skipped: * Doc-counts (line 7) -- check_doc_counts.py reports counts consistent at 3766 tests / 34 examples; CodeRabbit comparing against a stale README revision. * #470 / #471 / #466 lineage refs under #509 / #507 -- these aren't roadmap entries, they're "Phase 2 of [#X]" lineage citations under the current phase-2 work. The cross-refs to closed phase-1 predecessors are intentional context. * Stray pipe on line 125 -- moot. The <Debug> entry that contained the pipe was deleted entirely when #621 was closed. Line 125 is now blank. Co-Authored-By: Claude <noreply@anthropic.invalid>
|
@coderabbitai full review |
✅ Actions performedFull review triggered. |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@HISTORY.md`:
- Line 286: Remove the non-versioned housekeeping row (the table entry with "— |
7 May | Closed [`#595`] — macOS malloc abort in wasmtime trampoline on Ctrl-C;
upstream bytecodealliance/wasmtime-py#337 merged") from HISTORY.md and instead
add that same note to CHANGELOG.md under the [Unreleased] section (or record it
in the ROADMAP tracker), keeping HISTORY.md strictly tied to tagged release
versions only.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 2101e179-240d-46f3-9cbe-f1c5d31b69f6
📒 Files selected for processing (3)
HISTORY.mdKNOWN_ISSUES.mdROADMAP.md
CodeRabbit's stated rule ("HISTORY.md strictly tied to tagged release
versions") is incorrect -- non-versioned `| -- |` rows appear
throughout HISTORY.md, accepted convention for changes that landed
between version bumps. But the underlying point is valid: existing
`| -- |` rows all describe work that shipped (bug fixes, CI tooling,
GC widening, etc). The #595 close-note I added is qualitatively
different: nothing of ours shipped, only an upstream wasmtime-py PR
merged. The issue's own close-comment is the canonical record;
HISTORY duplicating it just adds noise.
Removed the row from HISTORY. Folded a brief mention into the
existing CHANGELOG [Unreleased] "Changed: ROADMAP.md" entry which
already documents this PR's roadmap edits, so the close-note lives
alongside the rest of the ROADMAP-cleanup record.
Co-Authored-By: Claude <noreply@anthropic.invalid>
Summary
Two distinct themes bundled in one PR (per project convention — both share a release target):
Part 1 — ROADMAP refactor: strip retrospective, keep forward-looking only
ROADMAP is forward work; HISTORY is what we did; CHANGELOG is the detail. On review the file had drifted into a wall of retrospective evidence and meta-explanation. This PR strips ROADMAP back to a primarily forward-looking document:
Part 2 — Tetris experiment: 2 codegen bugs + 1 portability gap
An agent attempting to write terminal Tetris on Vera 0.0.138 surfaced two new closure-codegen bugs and a substantial friction list. After hard design review against
DESIGN.mdprinciples — including one mid-review correction — three items survive: the two bugs and one real "write once, run anywhere" capability gap.Items kept (added to KNOWN_ISSUES.md and ROADMAP)
Intcapture in closures miscompiles. Silent wrong result or trap depending on body shape. Stabilisation tier item 1.dataADT and passing it to a function call emits malformed WASM. Hypothesised same root cause as Non-contiguous capture of outer Int slots in closure miscompiles (trap or silent wrong result) #615. Stabilisation tier item 2.IO.read_charportable across terminal and browser targets. Stabilisation tier item 9. Symmetric to Browser runtime: implement IO.sleep via JSPI (or Asyncify fallback) so animations don't freeze the tab #609 (sleep portability) — single-character input has to work on both targets, just as timing does. Single new operation in existingIOeffect; raw-mode handled implicitly per call.Friction items closed after design review
Nat + Nat -> NatandNat * Nat -> Natwork directly today viaInt <: Natsubtyping (Tier 1 verified, tested). Friction is a documentation gap tracked by #607. New built-ins would violate DESIGN.md principles 6 + 3.let (x, y) = ...is the name-binding form principle 4 prohibits.vera check --explain-slots, shipped in v0.0.108.pureis principle 2 working as intended. Vera-aligned debugging is "extract closure to top-level helper". General future answer is #294 (effect polymorphism). A<Debug>effect adds a parallel mechanism redundant with both.string_joinexample, line 1614decreases-with-+1 example). Friction-doc author admitted reading-discipline gap.ROADMAP changes (Part 2)
KNOWN_ISSUES.md (Part 2)
Gains entries for #614 and #615 in the Bugs section.
Net result of the Tetris experiment
The friction document was a useful map of where agents hit Vera's design constraints. After empirical testing and hard design review, the project-relevant output is:
The other six features were either solving documentation problems, duplicating already-rejected proposals, or contradicting load-bearing design principles.
Test plan
unknown table 0: table index out of boundsat offset 1374fits = falseinstead oftruenat_addredundancy empirically verified —add_natstest program type-checks, Tier 1 verifies, runs (3 + 5 = 8)python scripts/check_doc_counts.py— consistentpython scripts/check_limitations_sync.py— consistent (38 entries)python scripts/check_site_assets.py— up to dateSummary by CodeRabbit
Release Notes