Repository navigation
VBD V4: Pattern is a value enum with Box children (Generation B, after the v0.2.65 seed) - #1439
Merged
Merged
Conversation
shd101wyy
added a commit
that referenced
this pull request
Oct 17, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 17, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 17, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 17, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 17, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 17, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 17, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 17, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 17, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 17, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 18, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 18, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 18, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 18, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 18, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 18, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
added a commit
that referenced
this pull request
Oct 18, 2026
* docs(handover): VBD handover 2026-10-17 (living until v0.2.65) The v0.2.65 gate, every open PR and pushed branch with what is left, #1408's verdicts, the recursive E0916 structural-clone exemption, the open S1s and the portable process rules learned this cycle. The plan, the plans index and the 2026-10-15 handover point here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): pin head SHAs, add the stale-doc safeguard, the stop sequence and a v0.2.65 notes draft Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(plans): the index lists only the current VBD handover Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(plans): drop the v0.2.51 release handover from the index Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): #1435 landed; d47loc and #1432 heads Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): status checks every 50 minutes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs: 40-minute cache-warm pings for background sub-agents (AGENTS.md, handover) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): #1412 landed; #1421 head Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): derive Clone PR B is #1437 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): #1438 landed (v0.2.65 gate item 3); notes draft Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): #1409 landed; its two new issues; #1421 head Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs: #1432 landed (handover; plan cites #1432 instead of the deleted branch); A4's S1 as a known issue Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): Pattern is #1439, Generation B after the v0.2.65 seed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): no rebase after the final gate; SHAs from git output; #1437 head Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): #1424 and #1420 landed; #1424's new issues Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): #1439 state and post-seed steps; #1433 landed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): #1437 landed; its open S2 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): #1419 landed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): MERGE_FREEZE for v0.2.65; decision 47 locals is #1440 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): #1414 Tier 1 green, held by the freeze Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): #1429 landed (v0.2.65 gate item 2) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): #1429's user-visible changes and maintainer questions Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(issues): retire the three VBD questions decided 2026-10-18; file the two projection-forwarding gaps (S2 ref receiver, S3 bare-tail E0601) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): record the 2026-10-18 verdicts; roadmap from v0.2.65 to the end of VBD; refresh branch resume points - VALUES_BY_DEFAULT: decision 21 amended (Rc by sharing, Box when built once); §9 lists the decided questions; decision 47 step 2 records #1440's two accepted departures - PARALLELISM_RULES D9: recommend a capture-free closure for a named function until function-item types land - handover: §3.4 verdicts, §4 rewritten as the ordered path to finishing VBD, §2.4 resume points after the WSL crash Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): v0.2.65 notes draft names #1440's surface and the Q5 known issues; D9 names the plain-local closure Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): #1440 merged (00eddd3); v0.2.65 gate waits on develop battery 39087983359 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): develop red after #1440 (FV job ran Gen A test files with the seed); #1441 fixes it; the lesson in §1.1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): final v0.2.65 release-notes text; held branches need a mut-bindings pass after rebasing onto #1440 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): #1441 merged (e34b6b0); the v0.2.65 gate waits on develop battery 39099399553 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): the four held branches re-gated on #1440 (wip/*-on-d47 heads); std stays unmarked until its sweep Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): v0.2.65 gate met (battery 39099399553 green on e34b6b0); Release run 39106358669 dispatched Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): #1442 joins the post-release stop sequence Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): ci/fmt-check-plans joins the post-release sequence (after #1442) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(handover): final — v0.2.65 published, #1442 and #1443 merged, freeze removed, nothing running Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy
force-pushed
the
feat/vbd-v4-pattern-box
branch
from
October 18, 2026 11:55
44d9ec5 to
e4473ee
Compare
shd101wyy
marked this pull request as ready for review
October 18, 2026 11:55
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…x-enum pitfalls Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ssues/fixed/ (refs gate)
shd101wyy
force-pushed
the
feat/vbd-v4-pattern-box
branch
from
October 18, 2026 13:19
e4473ee to
661efba
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
VBD V4 (
plans/VALUES_BY_DEFAULT.md§6 V4, decisions 21 and 31):Pattern(src/pattern.yo) becomes a value enum with uniqueBoxchildren. It follows #1435 (Z3Sexpr) and #1438, the unwind S1 that this conversion exposed.At's andThroughBox'ssubareBox(Self); the sub-pattern lists stayArrayList(Self).derive(Clone)refuses an enum that mixesBox(Self)withArrayList(Self), soPatternhas a manualClone. It deep-clones throughBox.cloneandclone_patterns, and shares thefield_idx/elem_tyshandles.Box(sub), which the seed carries. Constructions usebox(...).get,.clone()of the list,for(&xs, …)andmatch(&xs(i), …)are E0901. The tree therefore reads elements as&subs(i)arguments andsubs(i).clone()._specialize_variant_row,_specialize_aggregate_row,_expand_row_headand the_head_*predicates._useful_atdelegates to_useful_head.src/pattern.yo,src/evaluator/exprs/match.yo,src/evaluator/exprs/pattern_compile.yo,src/codegen/exprs/match.yoandsrc/verifier/vc.yo.issues/2026-10-17-a-match-through-a-borrowed-element-copies-the-element.md.match(&xs(i), …)is E0901 even though E0901 names that form as its repair..github/instructions/yo-syntax.instructions.mdgets theBox-enum pitfalls, and the plan gets V4's "as built" note.Verification
Tier 1 re-gate on the v0.2.65 seed (2026-10-18; first at develop
5eed91253/ heade4473ee22, then rebased clean over develop057420e4a— #1445, #1447's match-trap hardening, #1434, #1446, #1430 — to head661efba12, full re-gate re-run):Stage 1
yo build --std-path ./stdwith the v0.2.65 seed: rc=0 — the step that crashed on the v0.2.64 seed. The first re-gate needed--cc zig(the box's GCC 15.2 rejected the then-seed's exhaustive-enum-switch emission under yo's-Werror=return-type, identically on clean develop); after fix(codegen): a statement-position match in a non-void function no longer falls off the end under gcc (S1) #1447's trap closers merged, the plain default-cc (gcc) build is rc=0 — the workaround is retired.The fix(codegen): a statement-position match in a non-void function no longer falls off the end under gcc (S1) #1447 interaction: this branch's codegen changes (the pattern walks in
_collect_place_names/_collect_bind_decls/_emit_pattern_chain/_lookthrough_switch_cell, lines ~121-2300) and fix(codegen): a statement-position match in a non-void function no longer falls off the end under gcc (S1) #1447's construct-level trap closer ingenerate_match_expression(~2480) are disjoint; the trap keys on the evaluator'scontrol_flowstamping, which this branch does not touch (0 references).match_nested— the file fix(codegen): a statement-position match in a non-void function no longer falls off the end under gcc (S1) #1447 extended with trap tests — passes 28/28 through this branch'sPatternlowering.Stage 2 (the binary stage 1 produced):
check ./srcrc=0;check ./stdrc=0.Feature tests, one file per call,
--parallel 1(head661efba12):move_only55/55,match_nested28/28 (25 pre-fix(codegen): a statement-position match in a non-void function no longer falls off the end under gcc (S1) #1447 + its 3 new),match_at_binding4/4,algebraic_effects79/79;internal/match_binding_shadow3/3 in CI mode (YO_TEST_LEAK_VERDICT=0), the file fix(codegen): a statement-position match in a non-void function no longer falls off the end under gcc (S1) #1447 names.yo fmt --checkwith the tree-built binary on every changed file: rc=0.scripts/check-issue-refs.sh: rc=0, after repointing one citation the branch had added to its moved home (issues/fixed/a-hashmap-of-a-move-only-key-or-value-does-not-compile.md).Leak comparison against develop's binary (
YO_TEST_LEAK_VERDICT=1, ASan+LSan test binaries, branch stage 2 vs develop5eed91253built the same way, same test files; measured at heade4473ee22— the develop move to057420e4atouches none of the three files, so the table stands):tests/internalfilee4473ee22)5eed91253)verifier_quantifiersmodule_invalidationverifier_loopsVerdict: identical leak counts and byte/allocation signatures on every file — the "identical or fewer" criterion holds; every leak pre-exists on develop. (Method: test binaries built with gcc +
-fsanitize=addressthrough a wrapper appending-Wno-error=return-type, which only downgrades the GCC-15-only switch-fallthrough severity back to the warning CI's compilers emit; the LSan verdict was verified live — it fails leaking tests and prints full reports.module_invalidationis 12/12 in CI mode (YO_TEST_LEAK_VERDICT=0), so all 11 failures are verdict-only.)Earlier A/B, same-input against develop's binary (both built from
5425cd7bfwith seed v0.2.63, both stage-2 binaries linking mimalloc):compile src/main.yo --emit-c --skip-c-compiler): 0 lines.check src/main.yo: 1,828,286,478 calls against develop's 1,823,309,567 (+0.27%, from the row and arm-pattern clones). That is within ±5% of the baseline 1,799,052,684.yo verify ./tests/spec --format json: identical output.Tier 1 on the earlier rebased tree (develop
fbd79fc90plus this branch, stage 1 built with seed v0.2.64 — superseded by the re-gate above; kept as the record):yo build --std-path ./std: rc=0match_nested25,match_or_variants6,match_at_binding4,match_structs9,gadts10,recursive_enum6,spec/verify_match_patterns6,internal/verifier29,internal/match_binding_shadow3,rc114;internal/verifier_match: 1 failure, a LeakSanitizer report only (see the leak comparison below);move_only: the batch crashes, because this stage 1 is compiled by a seed without fix(codegen): an unwind through a frame whose destructor makes a call is no longer lost (S1) #1438 (see the banner);match(o, (w := .Some(f)) => …)on a move-onlyOption) now reports its E0901 instead of SIGSEGV.move_onlypassed 55,match_nested25,match_at_binding4 andalgebraic_effects79.5425cd7bf(pat-S1, before fix(codegen): an unwind through a frame whose destructor makes a call is no longer lost (S1) #1438), 29 files:move_onlycrashed: that was the unwind S1, fixed by fix(codegen): an unwind through a frame whose destructor makes a call is no longer lost (S1) #1438, and it is in the gate above;tests/internalfiles (verifier_quantifiers,module_invalidation,verifier_loops,verifier_match) failed on LeakSanitizer reports only. CI runs these withYO_TEST_LEAK_VERDICT=0.tests/internal/verifier_match.test.yo, solver-free datatype test: develop's binary (the63a43b8f8tree and its stage 1) fails the same one test with the same report, 22,805 bytes in 340 allocations, identical to this branch's. It predates this change.yo fmt --checkwith the tree-built binary on every changed filescripts/check-issue-refs.shon the final rebased headdocs/: not applicableTiming. The
check ./srctime and stage-2 RSS A/B (exclusive, medians of 3) is pending, measured after merge. It was cancelled at the coordinator's request while the heavy queue was 35 deep. Given a byte-identical emission and a +0.27% allocation delta, no measurable change is expected.LLM attribution
Deferred
VcSort/VcTermwait onissues/questions/2026-10-17-should-the-verifier-terms-take-box-or-rc-children.md.match(&xs(i), …)S2 above is not fixed here.🤖 Generated with Claude Code