Skip to content

ci: pin just@1.34.0 in build-gossamer-gui — Tooling Version Integrity (cf. burble#39)#270

Open
hyperpolymath wants to merge 1 commit into
mainfrom
claude/pin-just-version-tooling-integrity
Open

ci: pin just@1.34.0 in build-gossamer-gui — Tooling Version Integrity (cf. burble#39)#270
hyperpolymath wants to merge 1 commit into
mainfrom
claude/pin-just-version-tooling-integrity

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

What

build-gossamer-gui.yml installed tool: just unversioned via taiki-e/install-action. That action's bundled manifest can ship an old just (e.g. 1.14.0). hypatia/Justfile:10 uses import? "contractile.just" — an optional-import feature requiring just ≥ 1.19.0. An old just dies at parse time (error: Unknown start of token) before any recipe runs, silently breaking the build.

This is the exact root cause of the long-misdiagnosed dead Elixir test gate in burble#39 (fixed there by pinning just@1.34.0), here found armed in another repo by an estate-wide sweep.

Fix

Pin tool: just@1.34.0 (≥ 1.19.0, supports import?) with an explanatory comment referencing the estate Tooling Version Integrity policy.

Context

P0 of a full rollout institutionalising this lesson (policy doc in standards, must check, lint rule, canonical-template propagation). Immediate stop-the-bleeding fix for the only live armed instance found.

🤖 Generated with Claude Code

Unversioned `tool: just` resolves via taiki-e/install-action's bundled
manifest, which can ship an old just (<1.19.0). The Justfile uses
`import? "contractile.just"` (just >= 1.19.0), so an old just dies with
`error: Unknown start of token` and the build silently breaks — the
exact root cause of the dead Elixir gate in burble#39, here armed in
another repo.

Estate Tooling Version Integrity policy: never install a rhyming-family
tool unversioned.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/standards that referenced this pull request May 17, 2026
…sson (#94)

## Why

For months a burble Elixir test gate was bolted open on the belief the
suite was failing. It never ran: CI installed an unpinned `just`
(1.14.0), the Justfile used `import?` (needs ≥1.19.0), so `just` died at
parse time. A runner-layer crash misdiagnosed as inner-layer test
failure, frozen by a `continue-on-error` on a wrong root cause. This PR
makes that class of failure structurally impossible estate-wide.

## What

- **`TOOLING-VERSION-INTEGRITY-POLICY.adoc`** — 5 rules + post-mortem:
pin family tools; declare the min-version floor in-file; gates prove
execution not exit-0; every soft-gate explained (dated suppression *or*
`by-design:`); resolve at source.
- **`tasks/tooling-integrity-lint.sh`** — R0 `just ≥ 1.19.0` floor
(blocking when `just` present — the execution-proof check an in-file
guard structurally *cannot* do, since `import?` fails at parse time), R1
unversioned family-tool install (blocking), R4 unexplained
`continue-on-error` (**advisory-first** per the estate's own gating
doctrine, `--strict` to enforce). Self-tested against
standards/burble/hypatia.
- **`contractiles/must/Mustfile`** — canonical dependency-free
`tooling-version-integrity` check; propagates to every repo adopting the
canonical `must` contract.
- **`Mustfile`** — this repo dogfoods the full lint.
- **`Justfile`** — Rule-2 floor annotation.

## Rollout context

P1+P2 of a full rollout. P0 (live armed instance) shipped:
hyperpolymath/hypatia#270. Remaining: propagate the pinned-install
snippet through canonical CI templates + estate re-adoption sweep
(tracked separately). The `contractile` generator repo is out-of-band —
`contractiles/` source edited here; regen/propagation tracked in the
sweep issue.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: hyperpolymath <hyperpolymath@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hyperpolymath hyperpolymath enabled auto-merge (squash) May 17, 2026 05:26
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