Skip to content

fix(roadmap): PMAT-1072 — main RED: drop 12 legacy nested subtask records pmat 3.39.0 refuses as duplicate ids; in-repo pin-independent id-uniqueness guard - #3030

Merged
noahgift merged 1 commit into
mainfrom
agent/pp-066-roadmap-ids
Sep 6, 2026
Merged

Conversation

@noahgift

@noahgift noahgift commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Fixes #3028. Fleet drift: paiml/infra#468.

Ticket

PMAT-1072 (mint rides the session docs commit — A is the only minter there). Andon: main @ 3792afa push run 34049248452 is RED at the upstream roadmap-valid step (sovereign-ci.yml:1207, bare PATH pmat work validate, now 3.39.0 on every runner host); the merge queue evicted #3021 and will evict every entry until main is green.

Claim

Every id: in docs/roadmaps/roadmap.yaml names one ticket, nested records included — and the rule lives in the repo through the parsed tree, so the version of pmat on a runner's PATH is never the only guard between main and a duplicate id.

Root cause (measured)

fact measurement
roadmap unchanged between the green and red main heads git diff --stat b0a0a51b2 3792afa3d -- docs/roadmaps/roadmap.yaml empty
the 3.37.0 pin passes, PATH pmat 3.39.0 fails the same bytes $PMAT work validate → passed · pmat work validate → 12 duplicates, the CI log verbatim
PATH pmat moved today intel ~/.cargo/bin/pmat 3.39.0 mtime 17:30:02Z (auditd cargo install pmat 17:26–17:30Z); lambda 17:33:38Z; green PR run 34041439234 at 15:10Z, red main run at 17:38Z
the rule is deliberate pmat 3.39.0 CHANGELOG (PMAT-674 / pmat PR #1196): every id: line, subtask ids included
the duplicates are legacy nested child copies 12 subtasks: records {id, github_issue, title: <id>, status, completion} under APR-ANTIGRAVITY-PARITY-001 (2), PMAT-710 (5), PMAT-716 (4), PMAT-719 (1); pmat 3.39.0 work add has no parent/subtask flag

RED test

bash scripts/check_roadmap_ids_unique.sh on main @ 3792afa's roadmap → FAIL 12 duplicate id(s) naming each path and line (e.g. PMAT-719: $.roadmap[505].subtasks[3] (line 10498), $.roadmap[508] (line 10560)). On this branch → PASS 809 ids, all unique.

Acceptance

  • bash scripts/check_roadmap_ids_unique.sh --self-test → 6/6 rows (nested dup RED, top-level dup RED, block-scalar id ignored, unparsable = 1, missing = 2)
  • pmat work validate (3.39.0) and $PMAT work validate (3.37.0 pin) → Validation passed
  • bash scripts/check_roadmap_diff_additive.sh origin/main HEADadded=0 lifecycle=4 reserialised=0 deleted=0 PASS; its self-test 18/18 (row 3b new)
  • check_guards_are_wired.sh, check_baseline_ratchets.sh, check_complexity_ratchet.sh, check_shell_lint_ratchet.sh (8 → 8), check_no_claim_literals.sh, check_perf_claims_cite_receipts.sh, check_roadmap_completion_is_cited.sh, check_row_pr_write_set.sh (orchestrator branch) → all PASS

Mutation

  • RMID-F-001 walk() skips lists → self-test rows 1–4 RED (restored)
  • RMID-F-003 both ci.yml lines deleted → check_guards_are_wired.sh RED: NEW: check_roadmap_ids_unique.sh (restored)
  • CI pair for the andon itself: main push run 34049248452 (RED, roadmap-valid) → this PR's run (GREEN, same step) — the second id lands in a comment when the run completes.

Contract

contracts/apr-roadmap-ids-unique-v1.yaml (kind: pattern; RMID-OB-001..003 ↔ RMID-F-001..003); pv validate through scripts/pv_bin.sh: valid.

Quorum

NOT RUN — andon hotfix to restore main (the queue is blocked); the case table and two RED mutations above are the evidence. A review-only lane on this diff is queued in the session docs.

Receipt

docs/audits/impl-PMAT-1072-receipt.mdstatus: complete (written .tmp then mv).

Writes

docs/roadmaps/roadmap.yaml (64 deletions, 0 insertions: the 12 nested records → subtasks: [] on four parents), scripts/check_roadmap_ids_unique.sh (new), contracts/apr-roadmap-ids-unique-v1.yaml (new), scripts/lib/roadmap_diff.py (+subtasks in LIFECYCLE_KEYS), scripts/check_roadmap_diff_additive.sh (+row 3b), .github/workflows/ci.yml (+2 steps in guard-runner-labels, after the roadmap-citation case table), docs/audits/impl-PMAT-1072-receipt.md.

Overlap with #3027

#3027 (PMAT-246-roadmap-repair, 17:12Z, the BSE-001 convergence brief's H4) carries the identical byte-for-byte dedup of the same twelve ids plus a PMAT-1060 mint; I opened this PR without re-listing PRs (an I0 miss, recorded). The two deletions are the same bytes, so they merge cleanly in either order. What only this PR carries: the pin-independent guard, its contract, the G-6 lifecycle change (which is also what #3027's guard-runner-labels currently fails on), and the receipt. PMAT-1060 collides with #3025's hand-minted PMAT-1060 (R-0b); #3025 renumbers its own.

Not in this PR

The upstream step still runs bare PATH pmat (infra#468 decides the pin); scripts/pmat_bin.sh PMAT_PIN=3.37.0 is now behind the fleet — moving it is a G-10a re-stamp, its own ticket.

🤖 Generated with Claude Code

…fuses as duplicate ids; in-repo pin-independent id-uniqueness guard; G-6 treats subtasks as lifecycle (PMAT-1072, #3028)

Pmat-Ticket: PMAT-1072
@noahgift noahgift added pp-066 PP-066 (0.66) DAG row inst:A PP-066 instance claim (I14): inst:A labels Sep 6, 2026
@noahgift
noahgift enabled auto-merge September 6, 2026 18:10
@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown

§13.11 rung 1 — quorum shadow verdict

S13-SHADOW pr=3030 head=af51b97b24455611138d0625110ff171d42248a0 verdict=REFUSE class=Q1 arm_rc=1

Shadow mode: this records a verdict and merges nothing. A refusal
to arm is not a block (§13 adds zero rows to §7) — the pull request is
exactly as green as it was.

noahgift added a commit that referenced this pull request Sep 6, 2026
…0 is minted by #3027, BSE-001 H4); mint PMAT-1072 for the #3028 main-red hotfix (PR #3030)

Pmat-Ticket: PMAT-1071
@noahgift

noahgift commented Sep 6, 2026

Copy link
Copy Markdown
Contributor Author

Re-ran the failed jobs (gh run rerun --failed on run 34050876211) — guard-runner-labels and the local gate were failing on a fleet-wide ENV gap unrelated to this PR's diff: scripts/pmat_bin.sh (PMAT-1059) reports "no analyser at the pin 3.37.0" on at least runner hosts -3 and -7 (the versioned root ~/.local/pmat/3.37.0/bin/pmat is simply absent there, distinct from paiml/infra#468's PATH-version-drift finding). Filed as a comment on paiml/infra#468 rather than a new issue. Rerunning in case this attempt lands on a runner host that has the pin (confirmed present on the Lambda Vector host). This PR is currently the only thing that can clear ci / security's roadmap-duplicate-id RED (#3028) for the whole merge queue, so flagging it as high-value to get green.

@noahgift
noahgift added this pull request to the merge queue Sep 6, 2026
Merged via the queue into main with commit e4b4237 Sep 6, 2026
29 of 34 checks passed
@noahgift
noahgift deleted the agent/pp-066-roadmap-ids branch September 6, 2026 23:39
noahgift added a commit that referenced this pull request Sep 7, 2026
…ed tree — main gained analyser mentions (#3020, #3030) after the first stamp; the baseline is introduced by this PR, so its initial count is the merged tree's

Pmat-Ticket: PMAT-1063
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

inst:A PP-066 instance claim (I14): inst:A pp-066 PP-066 (0.66) DAG row

Projects

None yet

1 participant