Skip to content

install-tools.sh regenerated estate-wide WITHOUT the #678 cure — fake exit-0 gate re-propagated to 245/248 copies (fix the template, not the copies) #702

Description

@hyperpolymath

Claim

The estate-wide regeneration of .machine_readable/scripts/lifecycle/install-tools.sh (post-#678) shipped without the #678 cure. The fake exit-0 gate was re-propagated: of 248 copies on disk today, 245 have no mise branch and no non-zero exit path — the else-path still ends echo "Installer complete." and exits 0. On a bare CI runner every one of the 245 no-ops green.

Evidence (measured 2026-08-31, during #678 re-verification)

  • New script generation hashes: 9d60ab91 ×193, 07914100 ×36. The generation Estate: 132 repos track files their own .gitignore hides; template-sync sweep (92 repos) left a SILENT fake gate in 29 #678 measured (a0b3846b/7d3b7536/191227c7) is gone — so a regeneration definitely ran after the issue was filed, and did not include the fix.
  • 31 repos are the sweep-victim shape (.mise.toml present, .tool-versions absent, script still tests .tool-versions, no mise support). 26 of them fire the no-op unconditionally today (no branch file present at all): stateful-artefacts, methodologies, session-sentinel, boj-server, idrisiser, somethings-fishy, hermeneia, cicd-squabbler, dictask, iseriser, ideas-to-alphas, knot-rider, patch-bridge, snifs, natsci-studio, lithoglyph, contractiles, bofj-kitt, hybrid-automation-router, nesy-solver, game-server-admin, fraying-model-computational-testbed, cookie-rebound, gv-clade-index, road-skate, proof-burrower.
  • The remaining 5 (bitfuckit, recon-silly-ation, panoply, scaffoldia, trope-checker) match a branch locally via flake.nix/guix.scm, but still exit 0 on a runner with neither.

The one lesson

Fixing individual copies is futile until the template source is cured. Any per-repo sweep will be overwritten by the next regeneration, exactly as happened here.

First step

Cure the generator/template copy of install-tools.sh (rsr-template-repo lifecycle scripts): add a mise branch (.mise.toml/mise.toml) and make the no-match path exit 1 with a loud message. Only then sweep the 248 deployed copies.

Found while re-verifying #678; filed per the discoveries-become-issues rule.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken or behaves incorrectlycicdCI/CD: workflows, actions, lockfiles, pins, runners, release gatespriority:p1High - schedule nextscaffoldingRSR templates, repo init, instantiation, project skeletonsscope:estateAffects many or all repos across the estate

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions