Skip to content

Canon / spine lockstep red on main: constitution hash drift since #1041 + rsr spine dogfood red #1094

Description

@hyperpolymath

What is red

Canon / spine lockstep (Gate A, scripts/check-canon-lockstep.sh) fails on standards main itself (5fb9ad19), not only on PRs that wake it. Surfaced by #1088 (run 36737173709, job 109961819824); reproduced locally against a clean checkout of main and a fresh clone of rsr-template-repo at 8256a6e7:

FAIL  constitution  0-canon/constitution/
       declared e0f2c790f01b05bd…
       actual   be48496f7f786d9a…
FAIL  dogfood-gate is 'failure' at spine@8256a6e
GATE A FAILED — the canon and the spine are not in lockstep.

The gate is path-filtered, so main never runs it and the drift stayed invisible until a PR touching the filtered paths woke it.

Cause (measured)

  1. Constitution hash drift. canon.lock was last bumped by release(canon): canon-v2.1.1 — ADR-0003 ratification (lifecycle flip) #861 (canon-v2.1.1, 2026-09-19). 0-canon/constitution/ was then edited by docs(canon): open CHANGE-PROCEDURE step 1 for "Always leave it working" (PROVISIONAL — merging opens the proposal, does not adopt it) #1041 (2026-09-23, CHANGE-PROCEDURE step 1 for "Always leave it working") without a matching canon.lock version bump and hash rewrite.
  2. Spine dogfood red. rsr-template-repo main at 8256a6e has its dogfood gate in failure. Related: julia-library archetype: children cannot go green (invalid actions.lock ⇒ startup_failure, linter, allowlist, canon lockstep) + arrival pack still CLADE-only rsr-template-repo#211 (archetype children cannot go green, canon lockstep among the listed causes).

Acceptance criteria

  • canon.lock carries the current 0-canon/constitution/ hash under a bumped canon version, per the canon CHANGE-PROCEDURE (not a bare hash rewrite).
  • The rsr-template-repo dogfood gate is green on its main, or the lockstep gate's spine pin moves to a spine commit whose dogfood gate is green.
  • bash scripts/check-canon-lockstep.sh --canon . --spine <rsr-template-repo checkout> --base origin/main exits 0 on standards main.
  • Positive control: the same command, with one byte of 0-canon/constitution/ changed and canon.lock left alone, exits non-zero naming constitution.
  • Follow-up decided: should this gate also run on push to main (or on a schedule), so drift is caught at the commit that causes it instead of by the next unrelated PR?

Per the standing stopping rule this is an issue, not a blocker for #1088.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QYY8Gp4v4x2J7iSNn1vZ57

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    scaffoldingRSR templates, repo init, instantiation, project skeletonstech-debtKnown shortcut, drift, or hygiene owed - includes cleanup

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions