Skip to content

fix: bump paired assembler default 0.40.0 → 0.92.0 + released-path smoke (#322) - #323

Merged
apotema merged 2 commits into
mainfrom
fix/322-init-stale-scaffold
Jul 18, 2026
Merged

fix: bump paired assembler default 0.40.0 → 0.92.0 + released-path smoke (#322)#323
apotema merged 2 commits into
mainfrom
fix/322-init-stale-scaffold

Conversation

@apotema

@apotema apotema commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Closes #322. CLI half — paired with labelle-toolkit/labelle-assembler#629 (the scaffold-content fix). Draft until assembler v0.92.0 is released: the new released-path smoke test downloads the paired default from GitHub releases, so it can only pass once that release exists.

What

  • DEFAULT_ASSEMBLER_VERSION 0.40.0 → 0.92.0. The constant sat untouched since the thin-driver migration (Make labelle-cli a thin driver over the assembler binary (drop the build-time dep) #217); every cold labelle init scaffolded via assembler 0.40.0 — no .y_axis, stale pins, MissingYAxis the moment the project met a modern assembler.
  • versions.zon curated set → core 1.26.0 / engine 2.5.0 / gfx 1.28.1 (upgrade-all target; set verified end-to-end from released tarballs: init → generate → zig build = build ok).
  • CI released-path smoke: init with NO local overrides — the exact cold-user path (downloads the paired default, scaffolds its curated pins), asserts .y_axis, generates, and full-builds. The existing Versions Integration test uses local: overrides for everything, which is exactly why this rot was invisible for months.
  • The upgrade downgrade-guard test pinned "0.40.0" (== the then-default) and passed only by coincidence — rewritten version-independently.

Verified

  • Deep root cause found on the assembler side (see #629): the release workflow tag-stamped every scaffold version field; released 0.91.0 scaffolds core_version = "0.91.0" etc., assembler_version = "0.77.0".
  • With a locally-simulated 0.92.0 (fixed assembler seeded into the version cache): cold labelle init scaffolds .y_axis = .down + core 1.26.0 / engine 2.5.0 / gfx 1.28.1 / labelle 1.57.0 / assembler 0.92.0. Full build validated with the identical version set fetched from real releases.
  • zig build test: 502/506 (4 skipped), 0 failed.

Landing order

  1. Merge assembler#629 → cut assembler v0.92.0.
  2. Un-draft this; CI smoke then exercises the real release end-to-end.
  3. After merge: cut CLI v1.58.0 so cold users actually receive the fix.

https://claude.ai/code/session_011szWvquoss1yNX7KWSKCaM


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.

…oke (#322)

DEFAULT_ASSEMBLER_VERSION sat at 0.40.0 since the thin-driver migration
(#217), so every cold `labelle init` scaffolded via a 0.40.0 assembler:
no `.y_axis`, tag-stamped nonsense pins — a project the current
assembler line refuses to build (MissingYAxis on first upgrade).

- DEFAULT_ASSEMBLER_VERSION → 0.92.0 (first release carrying the
  assembler-side scaffold fix, assembler#629: curated pins + .y_axis,
  release workflow no longer tag-stamps package versions).
- versions.zon curated set → core 1.26.0 / engine 2.5.0 / gfx 1.28.1
  (verified end-to-end: init → generate → full compile from released
  tarballs).
- CI: released-path init smoke — init with NO local overrides (the
  exact cold-user path: downloads the paired default from releases),
  assert .y_axis, generate, full build. The existing Versions
  Integration test uses local: overrides for everything, which is
  precisely why this rot was invisible.
- upgrade.zig test: the downgrade-guard test pinned "0.40.0" == the
  then-default and only passed by coincidence; rewritten
  version-independently (newer pin kept, older pin moved forward).

Verified locally with a simulated 0.92.0 cache seed: cold init
scaffolds .y_axis + all five pins correct; full build blocked only on
the not-yet-published release bundle (CI smoke covers it post-release).

Claude-Session: https://claude.ai/code/session_011szWvquoss1yNX7KWSKCaM
@coderabbitai

coderabbitai Bot commented Jul 18, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f1b00c1c-b59f-4a46-9ea0-6fda24c4fa69

📥 Commits

Reviewing files that changed from the base of the PR and between de4f039 and 125b1d2.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml
  • src/cli/upgrade.zig
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/cli/upgrade.zig
  • .github/workflows/ci.yml

📝 Walkthrough

Walkthrough

The CLI assembler default and compatible component versions were updated. Upgrade tests now cover assembler pin handling, and CI adds a released-path smoke test covering project initialization, generation, and desktop build.

Changes

Released-path assembler alignment

Layer / File(s) Summary
Assembler version contract and upgrade validation
src/cli/assembler.zig, src/cli/upgrade.zig, versions.zon
The default assembler version changed to 0.92.0; compatible component pins were updated; tests cover preserving newer pins and upgrading older pins.
Released-path initialization smoke test
.github/workflows/ci.yml
CI initializes cold_game without local overrides, checks .y_axis in project.labelle, runs generation, and builds the generated desktop project.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related issues

  • Issue 322 — Updates the stale assembler default, upgrade behavior, and adds an init-to-build smoke test for the .y_axis scaffold output.

Possibly related PRs

Poem

A rabbit hops through versions bright,
Assembler pins now point just right.
A cold game sprouts with axes true,
Then builds its desktop hull anew.
CI thumps paws: “The path goes through!”

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main changes: bumping the default assembler version and adding released-path smoke coverage.
Description check ✅ Passed The description matches the code changes and explains the version bump, CI smoke test, and guard test updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/322-init-stale-scaffold

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

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the DEFAULT_ASSEMBLER_VERSION to 0.92.0 in src/cli/assembler.zig to ensure new project initializations use a compatible assembler version. It also updates the downgrade guard tests in src/cli/upgrade.zig to be version-independent and adds a test case for moving older pins forward. Additionally, the dependency versions for .core, .engine, and .gfx are bumped in versions.zon. There are no review comments, so no feedback is provided.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@apotema
apotema marked this pull request as ready for review July 18, 2026 15:10
@apotema
apotema requested a review from Copilot July 18, 2026 15:13

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the CLI’s “paired default” and curated compatible-version set so cold labelle init scaffolds match the modern assembler line, and adds a CI guard that exercises the true released-path (no local overrides).

Changes:

  • Bump DEFAULT_ASSEMBLER_VERSION from 0.40.00.92.0 to prevent stale scaffolds (missing .y_axis, outdated pins).
  • Update curated versions in versions.zon to core 1.26.0 / engine 2.5.0 / gfx 1.28.1.
  • Add a released-path CI smoke test (init → .y_axis assertion → generate → build) and make the assembler downgrade-guard test version-independent.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
versions.zon Updates the CLI-bundled compatible set targeted by upgrade/init scaffolding.
src/cli/upgrade.zig Adjusts tests to validate downgrade-guard behavior independent of the default version constant.
src/cli/assembler.zig Bumps the runtime default assembler version used when a project has no pin.
.github/workflows/ci.yml Adds a released-path smoke test to prevent default-version rot from going undetected.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/cli/upgrade.zig Outdated
// broke the moment the stale constant was bumped — labelle-cli#322.)
try testing.expectEqualStrings("99.0.0", pickTarget("assembler_version", "99.0.0", assembler.DEFAULT_ASSEMBLER_VERSION, false));
// An OLDER pin is moved forward to the paired default.
try testing.expectEqualStrings(assembler.DEFAULT_ASSEMBLER_VERSION, pickTarget("assembler_version", "0.40.0", assembler.DEFAULT_ASSEMBLER_VERSION, false));

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 125b1d2.

Comment thread .github/workflows/ci.yml Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: de4f039c63

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread versions.zon
.engine = "1.65.0",
.gfx = "1.19.0",
.core = "1.26.0",
.engine = "2.5.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Update compatibility check for engine 2.x

With this new upgrade all target, a project upgraded to the bundled set gets core_version = "1.26.0" and engine_version = "2.5.0", but every generate/build path calls compatibility.validateCompatibility and that still warns whenever a dependency major differs from the core major (compatibility.zig:39-42). Users who just applied the blessed compatible set will therefore see a spurious “engine 2.5.0 may be incompatible with core 1.26.0” plus a “run labelle upgrade all” hint. Please update the compatibility rule (or the curated set) together with this major-version bump.

Useful? React with 👍 / 👎.

Comment thread src/cli/assembler.zig
/// project the current assembler line refuses to build). The
/// released-path smoke test in ci.yml (init with NO local overrides →
/// generate → build) fails if this constant rots again.
pub const DEFAULT_ASSEMBLER_VERSION = "0.92.0";

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep target dirs in sync with external backends

Pairing unpinned projects with assembler 0.92.0 also pairs the CLI with assembler schema/features that this CLI still ignores: v0.92.0 supports .backend_package and generates into .labelle/{cfg.backendName()}_{platform}, but src/cli/project_config.zig has no backend_package field and pipeline.run still computes/builds .labelle/{@tagName(parsed.backend)}_{platform}. For an external-backend project whose enum backend remains the default (e.g. backend_package.name = "foo"), generation succeeds into foo_desktop and then labelle build tries to build the nonexistent/stale raylib_desktop directory; either mirror the new backend name in the CLI or avoid making 0.92 the default until the CLI can build those projects.

Useful? React with 👍 / 👎.

@apotema
apotema merged commit ac764b9 into main Jul 18, 2026
14 checks passed
@apotema
apotema deleted the fix/322-init-stale-scaffold branch July 18, 2026 15:24
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.

labelle init scaffolds stale projects: pins assembler 0.40.0 / 0.40.0-era packages, no .y_axis (breaks on upgrade)

2 participants