Skip to content

feat(ci): proactively detect submodule-pin drift + maintainer parity - #16

Merged
hyperpolymath merged 1 commit into
mainfrom
claude/coordination-hubs-rebuild-476h7v
Jun 27, 2026
Merged

feat(ci): proactively detect submodule-pin drift + maintainer parity#16
hyperpolymath merged 1 commit into
mainfrom
claude/coordination-hubs-rebuild-476h7v

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Fundamental, in-scope hardening against the submodule pin-drift failure class — the root cause of the membership-integrity failures this hub hit earlier. When a member repo squash-merges, the commit the hub pinned is orphaned; the gate then fails hard with upload-pack: not our ref (fixed reactively in #13 by re-pinning). This makes the hub detect drift before it becomes fatal and on a schedule rather than only on push. Also closes a small maintainer-doc parity gap.

Changes

.github/workflows/anchor-drift.yml

  • Proactive runs — add a weekly schedule (cron: '17 6 * * 1') and workflow_dispatch. The membership-integrity pin-resolution gate now runs even when nobody pushes.
  • Early-warning advisory step — a new, non-failing (continue-on-error: true) step compares each member's pinned commit to its current main tip and emits a ::warning:: for any pin that is behind — the precursor state, caught before the pin is fully orphaned. Every member declares branch = main, so the comparison is exact.

QUICKSTART-MAINTAINER.adoc

  • Add the == Maintain governance parity section for parity with the a2ml hub (a2ml already carried it; this was the one structural gap between the two maintainer quickstarts).

Why this is safe

  • continue-on-error means the advisory step can never turn membership-integrity red; the existing hard pin-resolution still gates correctness.
  • No .a2ml files touched → strict governance gate is unchanged.
  • Inner script verified POSIX/dash-clean; workflow re-parses as valid YAML.

Scope note

The source of drift is in the member repos and outside this hub. A self-healing variant (scheduled job opening a re-pin PR) needs pull-requests: write plus the org's "Allow Actions to create PRs" setting — left as an opt-in next step in #14.

Refs #14, #7.

🤖 Generated with Claude Code


Generated by Claude Code

Fundamental hardening against the submodule pin-drift failure class
(members' squash-merges orphan the commit the hub pinned, eventually
breaking the membership-integrity gate with 'not our ref'):

- anchor-drift.yml: add a weekly 'schedule' + 'workflow_dispatch' so pin
  drift surfaces proactively, not only when someone happens to push.
- anchor-drift.yml: add a non-failing advisory step that warns, per member,
  when a pin is BEHIND its main tip — the early-warning precursor state,
  caught before the pin is fully orphaned. 'continue-on-error' keeps the
  gate green; every member declares branch=main so the comparison is exact.

Also adds the 'Maintain governance parity' section to
QUICKSTART-MAINTAINER.adoc, for parity with the a2ml hub (a2ml already
carried it; this was the one structural gap between the two maintainer
quickstarts).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RXXRgbGB2G5oGLJg1CS29T
@hyperpolymath
hyperpolymath marked this pull request as ready for review June 27, 2026 19:26
@hyperpolymath
hyperpolymath merged commit 7f34b14 into main Jun 27, 2026
5 checks passed
@sonarqubecloud

Copy link
Copy Markdown

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.

2 participants