fix(C0-2): pin sovereign-ci.yml by sha; CB-2100 reachability finding filed (#3029) — PMAT-976 - #3031
Open
noahgift wants to merge 5 commits into
Open
fix(C0-2): pin sovereign-ci.yml by sha; CB-2100 reachability finding filed (#3029) — PMAT-976#3031noahgift wants to merge 5 commits into
noahgift wants to merge 5 commits into
Conversation
…s sovereign-ci.yml reference is not pinned Guard is added standalone, before the fix, so its self-test case table and its live check both run against the current (unpinned) ci.yml: the live check fails, naming `@main` as "not a full 40-char commit sha". Fixed in the next commit. Pmat-Ticket: PMAT-976
…ire the guard into CI (PMAT-976, #2891) .github/workflows/ci.yml's `ci` job now calls paiml/.github@4453399 instead of @main — content-identical to @main at pin time (diffed), so this is a pure provenance change: a mutable ref no longer re-resolves on every push with no diff in this repository to review. check_ci_reusable_workflow_pinned.sh (added RED in the prior commit) is now wired into the guard-runner-labels job, self-test then live-check, following the existing convention (e.g. check_test_fixture_paths.sh immediately above). contracts/apr-required-checks-v1.yaml (the contract the DAG names for C0-2) gains equation c0_2_reusable_workflow_pinned_by_sha, proof obligation RC-OB-008, and falsification test RC-F-008 bound to the guard's --self-test. What this does NOT do: close CB-2100. Read directly from pmat 3.39.0 source (services/gate_effect/resolve.rs::local_reusable_path), an external `uses:` reference is `Resolution::Opaque` regardless of ref shape — branch, tag, or sha. Confirmed empirically too: pinning left `pmat comply check`'s CB-2100 line byte-for-byte unchanged. The only mechanism CB-2100 currently recognizes is a required, local job invoking `pmat comply check`/`comply status` unsuppressed, and wiring that in today would red `ci / gate` / `workspace-test` for every PR on six untracked pre-existing failures (CB-040, CB-081, CB-400, CB-1305, CB-1308, CB-1650) that own no ticket in the PP-066 DAG — see the header comment above `uses:` in ci.yml and #2891 (filed alongside this PR) for the full finding and the follow-up it blocks on. Pmat-Ticket: PMAT-976
…ty finding filed as #3029 Pmat-Ticket: PMAT-976
… turns CI RED Registered mutation (RC-F-008 in contracts/apr-required-checks-v1.yaml). Reverted in the next commit once CI is observed RED. Pmat-Ticket: PMAT-976
|
§13.11 rung 1 — quorum shadow verdict Shadow mode: this records a verdict and merges nothing. A refusal |
…he guard turns CI RED" This reverts commit a642a60.
noahgift
enabled auto-merge
September 6, 2026 21:30
Contributor
Author
|
Auto-merge armed. Currently |
noahgift
disabled auto-merge
September 7, 2026 11:53
noahgift
added a commit
that referenced
this pull request
Sep 8, 2026
…dogfood `pmat work add` was not used, for the two reasons this ticket exists: 1. It allocates from the roadmap it can see. Max across origin/main and every open pp-066 head is PMAT-1079, and three instances are minting concurrently, so an auto-mint races. 1090 leaves 1080-1089 as headroom. A gap is opaque; a collision is data loss (and 12 duplicate ids on stale heads is what turned `ci / security` red on #3031 and #3001). 2. It re-serialises the whole file — the defect this ticket fixes. The new `--staged` mode judged its own commit, which is the point: $ bash scripts/check_roadmap_diff_additive.sh --staged === roadmap.yaml STAGED diff is additive: base=c04eda87d (merge-base(origin/main, HEAD)) head=8e4ceee37 (index tree) === roadmap-diff: base=818 head=819 added=1 lifecycle=0 reserialised=0 deleted=0 PASS $ git diff --cached --stat docs/roadmaps/roadmap.yaml | 19 +++++++++++++++++++ added=1, reserialised=0, 0 deletions. That is the diff the rule asks for, and `pmat work add` cannot produce it — which is why the remedy script exists and why nothing calling it made the rule unenforceable in practice. Refs #3047, PMAT-1090. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EeUX4ymyt8XhjXbtTuNH8L
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ticket
PMAT-976 · DAG row C0-2 · epic #2873 · issue #2891 ·
pp-066inst:CC0-2Claim
Pins
.github/workflows/ci.yml's sovereign-ci.yml reference to a commit sha(real, independent supply-chain-provenance value) and wires a guard proving it
stays pinned. Does not close CB-2100 — filed as #3029 with the full finding
(pinning does not change pmat's gate-effect reachability verdict; closing it for
real needs either six new ratchet-baseline rows for untracked comply debt, or
cross-repo manifest tooling in
paiml/.github+pmat, neither in scope here).Receipt is
status: partial.RED test (sha)
f46824526—scripts/check_ci_reusable_workflow_pinned.shadded standalone(ci.yml still
@main); live check fails naming@mainas "not a full 40-charcommit sha".
Acceptance (accept.sh output — re-run at HEAD)
pmat comply check | grep CB-2100shows ✓…sovereign-ci.yml@<sha>, not@main@4453399ee3794714800ff8db316ea7e1d3705a00Reproduced against the real pre-fix tree directly (not only synthetic fixtures):
git show origin/main:.github/workflows/ci.ymlswapped in → guard FAILs naming@main; restored → PASSes.Mutation (RED → GREEN)
Commit-level:
f46824526(guard only, ci.yml unpinned) is RED;2e6a3805b(pin + wiring) is GREEN. CI-level: mutant commita642a6077(reverted the pin to
@main) →guard-runner-labelsjob101535304151
RED, step "ci.yml must pin sovereign-ci.yml by commit sha, not @main" failed
naming
@main. Reverted atd06b21dc5→guard-runner-labelsjob101548517884
GREEN, both new steps passed.
Contract
contracts/apr-required-checks-v1.yaml(the DAG's named contract for this row)— extended, not replaced: equation
c0_2_reusable_workflow_pinned_by_sha,proof obligation
RC-OB-008, falsification testRC-F-008bound tocheck_ci_reusable_workflow_pinned.sh --self-test.Quorum (teamwork, per DAG)
paiml-agy-delegate, lane=teamwork width=1, two runs (primary + mechanism-checkretry): both PROCEED/PASS, no dissent, on the plan (pin now, file the CB-2100
finding, receipt partial, continue to C0-4). The delegate's own receipt flags
this as a weak quorum — agy 1.1.27 headless
-pmode did not engage true/teamwork-previewfan-out (2 turns, ~27s each, zero child agents, everyfinding
grounding=asserted). Load-bearing evidence in this PR is theorchestrator's own direct pmat-source reading and empirical reproduction (RED
against
origin/main's realci.yml, GREEN against the fix), not the quorumlane. Recorded as a lesson in the delegate's agent-memory
(
feedback_teamwork_lane_does_not_fan_out.md) for future sessions.Receipt
docs/audits/impl-PMAT-976-receipt.md—status: partial. A2 met, A1 not;follow-up tracked in #3029.
Writes
.github/workflows/ci.yml(sha pin + guard wiring)contracts/apr-required-checks-v1.yaml(extended)scripts/check_ci_reusable_workflow_pinned.sh(new)docs/audits/impl-PMAT-976-receipt.md(new)No shared file touched (
check_row_pr_write_set.shPASS): notdocs/specifications/pp-066-dag.yaml, notdocs/roadmaps/roadmap.yaml, notdocs/specifications/PP-066-release-spec.md, no README count line.Follow-up
#3029 — CB-2100 remedy (ratchet-baseline 6 untracked comply debts, or cross-repo
manifest tooling). Linked from #2891.