Skip to content

fix(develop): #1440's locals rule broke four CI jobs: FV runs stage 1; two probes and one fixture mark their locals - #1441

Merged
shd101wyy merged 2 commits into
developfrom
fix/develop-verifier-test-d47
Oct 18, 2026
Merged

shd101wyy merged 2 commits into
developfrom
fix/develop-verifier-test-d47

Conversation

@shd101wyy

@shd101wyy shd101wyy commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

Summary

Develop has been red since #1440 (00eddd3e4, battery 39087983359), and that blocks v0.2.65. Four jobs fail. All four come from #1440's new syntax or its locals rule reaching Yo source that its sweep and its tree-binary gate could not see:

  1. "Formal verification (pinned Z3)": the seed runs migrated test files. Explained below.
  2. "Static musl Linux bundle": the probe in scripts/bootstrap/probe-stack-sizing.sh lends &mut local from an unmarked binding (E0917).
  3. "Docker default-seccomp epoll fallback": test.yml's inline probe calls &mut self as_ptr() on the unmarked sv_uninit and b_uninit (E0917).
  4. "Compiler internal tests, shard 5": tests/internal/compile.test.yo embeds a fixture program in a string, and its k/i counters are reassigned (E0917). A yo subprocess on PATH compiles it. Locally that was the seed, so VBD decision 47 step 2, Generation A: bindings are immutable unless declared mut(name) (locals, patterns, comptime) #1440's gate passed it.

Items 2–4 mark the written locals. Those three programs are compiled only by tree-built binaries.

Item 1 in detail.

Root cause. The verify job ran tests/internal/verifier*.test.yo with the v0.2.64 seed. #1440's Generation A sweep marked those files' written locals mut(cfg) := …, and the seed cannot parse that: mut(x) is its deleted borrow word. The error is Invalid binding to "mut", expected identifier or operator, and 0 of 29 tests ran. I reproduced it locally with the seed and the job's environment.

The markers cannot be reverted. The tree compiler would then reject those files with E0917, and every other job runs tests/internal on the tree compiler. A tests/internal file is written in the tree's syntax, so only the tree compiler can run it.

Fix:

  • verify now needs stage1. Its five yo test steps download yo-stage1 and run /tmp/yo-stage1 test …, the same pattern compiler-internal-tests-selfhosted uses. The tests and their assertions are unchanged.
  • The yo verify steps stay on the seed, because their inputs (std/spec, std/collections, tests/spec) carry no new syntax. The verify-src comment that said "like every other step in the verify job" is corrected.
  • AGENTS.md's Tier 1 list gains the lesson: when a change gives tests/ syntax the seed cannot parse, run every seed-run yo test step with the seed. A tree-binary Tier 1 cannot see this, and that is how VBD decision 47 step 2, Generation A: bindings are immutable unless declared mut(name) (locals, patterns, comptime) #1440's gate missed it.
  • issues/fixed/2026-10-18-the-fv-job-runs-generation-a-test-files-with-the-seed.md (S2) covers all four.
  • AGENTS.md's Tier 1 lesson names the three blind spots: seed-run yo test steps, workflow and shell-embedded probes, and test-embedded programs compiled through PATH.

Verification

  • Reproduced the failure locally: the v0.2.64 seed with YO_STD=$PWD/std and YO_TEST_Z3=1 on verifier.test.yo fails to compile the batch (log ~/Workspace/Yo-wt/vbd-logs/fixfv/vt2.log).
  • Ran the five files on the tree compiler (yo-d47loc-3d1afa693, whose src/std match 00eddd3e4) with the pinned Z3 5.1.0 and the job's leak-verdict settings. This is also the first run of these files under a real solver since VBD decision 47 step 2, Generation A: bindings are immutable unless declared mut(name) (locals, patterns, comptime) #1440: on this machine, Z3 was missing during its gate. All five passed: verifier 29/29, verifier_negative 10/10, verifier_assumed 5/5, verifier_refine 6/6, verifier_list_len 25/25 (logs ~/Workspace/Yo-wt/vbd-logs/fixfv/s1-*.log).
  • CI, first run (b8fdc7acd): the verify job passed every step on stage 1, including the five verifier test steps and the four yo verify steps.
  • Sweep for items 2–4: I extracted all 124 multi-line Yo programs embedded in tests/ string literals and checked each with the tree compiler. The only other E0917 is a formatter.test.yo input, which is formatted and never compiled. scripts/check-embedded-yo.sh passes 7 of 7 sites with the tree compiler, and both probes and the fixture now pass check.
  • Workflow YAML parses. scripts/check-issue-refs.sh is green. No .yo file changed, so no fmt or check run was needed.
  • yo check ./src --std-path ./std — not needed, no src change
  • yo check ./std --std-path ./std — not needed, no std change
  • Tests covering the change: this PR's own verify job runs the new steps; it must be green before merge
  • yo fmt --check on tests/internal/compile.test.yo (tree binary)
  • Bug has an issues/ entry with a severity
  • Docs — not user-facing

LLM attribution

  • Model: Claude Opus 5.5
  • Agent harness (optional): Claude Code

Deferred

Nothing.

🤖 Generated with Claude Code

…age 1, not the seed (#1440's mut(x) := is unparseable to v0.2.64)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy added a commit that referenced this pull request Oct 18, 2026
…with the seed); #1441 fixes it; the lesson in §1.1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d compile.test.yo's embedded fixture (E0917 since #1440)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@shd101wyy shd101wyy changed the title fix(develop): the FV job runs its tests/internal verifier files on stage 1, not the seed fix(develop): #1440's locals rule broke four CI jobs: FV runs stage 1; two probes and one fixture mark their locals Oct 18, 2026
@shd101wyy
shd101wyy merged commit e34b6b0 into develop Oct 18, 2026
58 checks passed
@shd101wyy
shd101wyy deleted the fix/develop-verifier-test-d47 branch October 18, 2026 05:06
shd101wyy added a commit that referenced this pull request Oct 18, 2026
…with the seed); #1441 fixes it; the lesson in §1.1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy added a commit that referenced this pull request Oct 18, 2026
…elop battery 39099399553

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy added a commit that referenced this pull request Oct 18, 2026
…with the seed); #1441 fixes it; the lesson in §1.1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shd101wyy added a commit that referenced this pull request Oct 18, 2026
…elop battery 39099399553

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant