Skip to content

ci: roadmap.yaml generated from roadmap-base.yaml + entries/ (Refs #5897) - #5901

Closed
noahgift wants to merge 12 commits into
mainfrom
ci/5897-roadmap-generated
Closed

noahgift wants to merge 12 commits into
mainfrom
ci/5897-roadmap-generated

Conversation

@noahgift

@noahgift noahgift commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

What

docs/roadmaps/roadmap.yaml is now GENERATED (gitignored; make roadmap-aggregate), from the frozen roadmap-base.yaml plus entries/. It stopped going stale after main merges (#5862 twice, #5876).

  • CI: x86-main generates it; fat_driver.setup_workspace generates it in each section clone.
  • Guards: G1 untracked, G2 base frozen, G3/G3b aggregate + one entry per fragment, G4/G4b never delete/rename/nest, G5 Pmat-Ticket trailer as sov reads it. diff_additive judges the aggregates; completion_is_cited skips the base.
  • Self-tests: 29/29, 29/29, 36/36.

Review

One-commit re-cut of #5898 (quorum 3/3 AGREED at 3e87640, two seats posted; receipt handoff/triage-quorum-5898-*). Gate content: needs arbiter sign-off before arming. Not armed.

Rust port of roadmap_fragments.py (never rule: no new Python): #5902. G3b uses its fragment-ids subcommand, no inline python. Non-blocking follow-ups: setup_workspace row, shallow-checkout note, fragment-writer shim for pmat work add.

Python growth (measured vs the merge-base; quorum ACCEPT-WITH-CONDITIONS, handoff/triage-quorum-5901-python-growth.md): this PR does not remove python3 from ci.yml (12 -> 12 lines; the generate step now runs make roadmap-aggregate). scripts/lib/roadmap_fragments.py +48 net, scripts/ci/fat_driver.py +8, 4 new python3 call sites (fat_driver +1, check_roadmap_diff_additive +1, check_roadmap_fragment_required +2), 0 new .py files. It grows existing gate-path Python only; the Rust port is #5902.

🤖 Generated with Claude Code
keep-open: #5902 is the follow-up Rust port of roadmap_fragments.py; this PR only routes the call site through make and does not port it.

…5897)

roadmap.yaml went stale against entries/ after every main merge and
check_roadmap_fragment_required.sh failed (#5862 twice, #5876). The
aggregate is now gitignored and generated (make roadmap-aggregate; CI
x86-main step; fat_driver setup_workspace per section clone). The old file
is frozen as roadmap-base.yaml (G2). Guards added: G1 aggregate untracked,
G2 base frozen, G3/G3b aggregation and one-entry fragments, G4/G4b
fragments never deleted/renamed/nested, G5 Pmat-Ticket trailer as sov reads
it. diff_additive judges the aggregates; completion_is_cited skips the base.
Quorum #5898 agreed 3/3 at 3e87640; this is its one-commit re-cut.

Pmat-Ticket: PMAT-5897
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat opus-5-5-lane APPROVE @3aa9d4fab4 (carried by patch-id from #5898 @3e876403e9: patch-id cdccc9eb01ca identical; self-test 29/29 re-run at this head).

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat argon-high-lane APPROVE @3aa9d4fab4 (carried by patch-id from #5898 @3e876403e9, identical patch-id).

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

quorum 3/3 AGREED PASS @3aa9d4fab4 (carried by patch-id from #5898 @3e876403e9; receipt handoff/triage-quorum-5901-3aa9d4fab4.md). Not armed; arbiter sign-off next.

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

§13.11 rung 1 — quorum shadow verdict

S13-SHADOW pr=5901 head=f3b8f8dce85798a9a36e6b77ef54569a7803246a 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 noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

REQUEST-CHANGES @3aa9d4fab4 (never-rule). Planted question 'do new python3 call sites of an existing .py count as new Python': 3 of 3 lanes (opus x2, argon, no Sonnet) answer A: NOT new Python, because C301 bans adding .py files and this PR adds none. CONDITION from all 3: remove the inline python3 -c in check_roadmap_fragment_required.sh (new Python logic outside an existing tool); put the check in roadmap_fragments.py or shell. Also name the Rust-port ticket for roadmap_fragments.py in the PR body and say it gains ~20 lines. Receipt: handoff/triage-quorum-5901-python-3aa9d4fab4.md

…n (Refs #5897)

Arbiter hold on #5901 (never rule: new Python): the inline `python3 -c` in
check_roadmap_fragment_required.sh is replaced by a `fragment-ids`
subcommand of the existing roadmap_fragments.py. Rust port: #5902. The
self-test also unsets GITHUB_EVENT_NAME (26/29 under merge_group before).

Pmat-Ticket: PMAT-5897
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat opus-5-5-lane APPROVE @1a788257cd. Inline python3 -c gone; fragment-ids matches old behaviour; no other new python. Non-blocking: add a fragment-ids missing-id/invalid-YAML row.

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat argon-high-lane APPROVE @1a788257cd. Same findings; no new .py or inline python.

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

quorum 3/3 AGREED PASS @1a788257cd (opus-5-5 + argon-high + executed run by triage-worker). Never-rule condition (inline python3 -c) closed. Not armed; arbiter sign-off next. Receipt: handoff/triage-quorum-5901-1a788257cd.md

@noahgift

Copy link
Copy Markdown
Member Author

arbiter-cop gate sign-off @1a788257cd (bound to this head; any new push voids it). The inline python3 -c is gone: G3b now calls fragment-ids, a subcommand of the existing roadmap_fragments.py. It fails closed: an rc≠0 becomes '(unparseable)', which is a violation. The additive-diff guard judges the base+entries aggregates at both refs. --staged exits 0 only when roadmap-base.yaml is staged, and hands that case to G2. The G5 trailer check skips on merge_group by design: it is PR-time only, and no reuse rule consumes that skip. No new .py file and no new inline Python; the never-rule quorum (3/3 A, handoff/triage-quorum-5901-python-3aa9d4fab4.md) holds. Diff quorum 3/3 is in handoff/triage-quorum-5901-1a788257cd.md. SIGNED.

@noahgift

Copy link
Copy Markdown
Member Author

arbiter-cop gate sign-off @2cb969e7c5: SIGNED (merge delta only; it replaces my 22:13Z sign-off at 1a78825).

Note for whoever arms: the 3/3 quorum quoted to me was at 3e876403e9, and that object does not exist in this repo's fetched refs. That quorum is not bound to this head, so re-seating and running the quorum at 2cb969e7c5 is required before arming. Any further push voids this sign-off.

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat tw-opus APPROVE @2cb969e7c5302b3f0e723cd6c652e779bbb545c3 — merge delta vs 1a78825 = main content + PMAT-5843/5846; guards green; receipt /mnt/nvme-raid0/cop-inbox/handoff/triage-quorum-5901-20261022T0232Z.md

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat tw-argon APPROVE @2cb969e7c5302b3f0e723cd6c652e779bbb545c3 — merge delta vs 1a78825 = main content + PMAT-5843/5846; guards green; receipt /mnt/nvme-raid0/cop-inbox/handoff/triage-quorum-5901-20261022T0232Z.md

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

quorum 3/3 AGREED @2cb969e7c5302b3f0e723cd6c652e779bbb545c3 — receipt /mnt/nvme-raid0/cop-inbox/handoff/triage-quorum-5901-20261022T0232Z.md (opus first read NOT AGREED on brief scope only; restated claim AGREE)

@noahgift

Copy link
Copy Markdown
Member Author

arbiter-cop gate sign-off @ff8ea546c9: SIGNED. This is a merge-delta sign-off and replaces the one at 2cb969e.

  • ff8ea546c9 is a merge of 2cb969e7c5, the head I last signed, with 47e84db06c, which is origin/main. There was no force-push.
  • The PR diff against its merge-base is unchanged: git patch-id --stable gives 9675719094, the same 11 files and +348/-14 as before. So this push adds nothing but main.
  • Re-run at this head (GIT_NO_REPLACE_OBJECTS=1), all rc 0:
    • check_roadmap_fragment_required.sh --self-test
    • check_roadmap_diff_additive.sh --self-test
    • check_ci_draft_skip.sh (live)

The 3/3 quorum receipt is bound to 2cb969e7c5. Its PR diff has the same patch-id as this head. Whether that carries over is for the armer to decide under the quorum-at-head rule; it is not mine to waive. Any further push voids this sign-off.

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat tw-opus APPROVE @ff8ea546c917a90bc50ef6ceb71cacfaae512579 — merge of main only; nothing outside main's content changed (git show --cc empty, PR diff unchanged, ci.yml/sections.yml unchanged); receipt /mnt/nvme-raid0/cop-inbox/handoff/triage-quorum-5901-ff8ea546c9.md

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat tw-argon APPROVE @ff8ea546c917a90bc50ef6ceb71cacfaae512579 — merge of main only; nothing outside main's content changed (git show --cc empty, PR diff unchanged, ci.yml/sections.yml unchanged); receipt /mnt/nvme-raid0/cop-inbox/handoff/triage-quorum-5901-ff8ea546c9.md

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

quorum 3/3 AGREED @ff8ea546c917a90bc50ef6ceb71cacfaae512579 — receipt /mnt/nvme-raid0/cop-inbox/handoff/triage-quorum-5901-ff8ea546c9.md

t and others added 2 commits October 22, 2026 06:17
@noahgift

Copy link
Copy Markdown
Member Author

arbiter-cop gate re-sign: SIGNED @a9dff66a16. This replaces my sign-off @ff8ea546c9 and keeps its conditions.

The patch-id changed (9675719094 → d57184e20f), so I reviewed the delta:

Run at this head on lambda-labs (~04:28Z):

  • check_roadmap_diff_additive.sh --self-test: 29/29.
  • check_roadmap_fragment_required.sh --self-test: 29/29, 0 failed.
  • check_ci_draft_skip.sh --self-test: rc 0.
  • ci_mg_reuse.sh --self-test: 105/0.

A non-author arms it once the required checks at this head are green.

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat tw-opus APPROVE @a9dff66a1690a144b1f7e967ec28a0e2d09d9fde

Delta from seated ff8ea54 = 62fee23 (3-line fname/commit_all rewrite, behaviour-preserving) + clean main merge (git show --cc empty; PR-own diff vs main parent unchanged, 11 files +348/-14). Opus lane AGREE.

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat tw-argon APPROVE @a9dff66a1690a144b1f7e967ec28a0e2d09d9fde

Argon lane AGREE Q1-Q3. Mutation fname="$name" turns both patched scripts' self-tests RED (rc1).

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

quorum 3/3 AGREED @a9dff66a1690a144b1f7e967ec28a0e2d09d9fde (opus + argon + triage-worker). bashrs 7.4.1 (CI pin) lint of the 4 roadmap/batch scripts: 0 errors; check_roadmap_* self-tests rc0; mg_reuse/push_reuse/draft_skip rc0; no inline python3 -c added. arbiter-cop sign-off owed. Not armed.

@noahgift
noahgift disabled auto-merge October 22, 2026 04:44

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat tw-opus APPROVE @45be85dff598b6c4993e11700f22dd155750686e

main-merge delta from seated a9dff66: git show --cc empty; PR-own diff identical (11 files +348/-14); ci.yml +35/-1 and roadmap-base.yaml +19 equal main's own deltas (roadmap-base carried across the rename). Opus lane AGREE.

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat tw-argon APPROVE @45be85dff598b6c4993e11700f22dd155750686e

Argon lane AGREE: approval carries over; merge introduces only main content.

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

quorum 3/3 AGREED @45be85dff598b6c4993e11700f22dd155750686e (opus + argon + triage-worker), main-merge delta. Self-tests rc0 (check_roadmap_*, mg_reuse, push_reuse, draft_skip), bashrs 7.4.1 0 errors, monorepo_invariants 17/17. arbiter-cop sign-off owed. Not armed.

@noahgift

Copy link
Copy Markdown
Member Author

arbiter-cop gate re-sign: SIGNED @45be85dff5 by patch-id. This replaces my sign-off @a9dff66a16 with the same conditions.

45be85d only merges main 2443cec (#5908) into the branch. The PR's patch-id is unchanged at d57184e20f.

Self-tests at this head (lambda-labs, ~04:57Z) all returned rc 0:

  • check_roadmap_diff_additive.sh
  • check_roadmap_fragment_required.sh
  • ci_mg_reuse.sh
  • check_ci_draft_skip.sh

A non-author arms it once the required checks at this head are green.

@noahgift
noahgift enabled auto-merge October 22, 2026 05:06
… if/then instead of inline rm group)

x86-main guard-cargo#m16 failed on 45be85d: check_roadmap_diff_additive.sh:712 and check_roadmap_fragment_required.sh:161.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat tw-opus APPROVE @3dd61fa843c503ba0750272cbcf806dcc949214f — delta is SEC010 fix only (install -d; if/then for case rewrite), behaviour-equivalent, both self-tests green, invariants 17/17.

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat tw-argon APPROVE @3dd61fa843c503ba0750272cbcf806dcc949214f — delta is SEC010 fix only (install -d; if/then for case rewrite), behaviour-equivalent, both self-tests green, invariants 17/17.

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

quorum 3/3 AGREED @3dd61fa843c503ba0750272cbcf806dcc949214f (light path; own run as evidence). Not armed.

@noahgift

Copy link
Copy Markdown
Member Author

arbiter-cop gate sign-off: RE-SIGNED @3dd61fa843 (2026-10-22 ~06:00Z)

The only change since my last sign @45be85dff5 is 3dd61fa, in two places:

  • mkdir -p → install -d in check_roadmap_diff_additive.sh.
  • The inline || { rm; return 2; } group in check_roadmap_fragment_required.sh is now an explicit if ! …; then rm; return 2; fi.

Behaviour is the same: the guard still returns 2 on a failed git show, after cleaning up ${td:?}.

Checks at the head:

  • bashrs lint check_roadmap_fragment_required.sh: 0 errors. At @45be85dff5 it reported 161 [error] SEC010 in rm, so the release gate's blocker is cleared.
  • check_roadmap_diff_additive.sh --self-test: 29/29.
  • check_roadmap_fragment_required.sh --self-test: 29/29, 0 failed.

Arm only on a full green run at this head, by a non-author.

t and others added 2 commits October 22, 2026 10:28
…e, no pipe into grep -q, ticket trailer (Refs #5897)

guard-tree#m0 failed on three guards: comparator_pin_citations.txt still listed
docs/roadmaps/roadmap.yaml (now roadmap-base.yaml, same 18:38afc7a5fac9 pin);
check_roadmap_fragment_required.sh:202 piped into grep -q (43 sites, ceiling 42);
G5 wants a Pmat-Ticket: PMAT-5897 trailer in the range.

Pmat-Ticket: PMAT-5897
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Member Author

arbiter-cop gate sign-off @ 03262a1: REQUEST-CHANGES (one red guard)

Run in a scratch clone at the head (origin/main 70d9601 already merged into it):

guard head main
check_roadmap_fragment_required --self-test rc 0 (29/29) —
check_roadmap_diff_additive --self-test rc 0 (29/29) —
check_roadmap_completion_is_cited --self-test rc 0 —
check_no_pipe_into_grep_q rc 0 —
check_comparator_pin_citations rc 0 —
check_ci_draft_skip --self-test rc 0 —
check_tree_reader_tests rc 0 —
ci_test_tier --self-test rc 1, 121 checks, 1 failed rc 0, 0 failed

The failing row is 58 (scripts/ci_test_tier.sh:613-614): pull_request, roadmap + audit only -> tier=none. Its fixture diff still names docs/roadmaps/roadmap.yaml. That file is now generated and untracked, so the classifier fails closed. Measured at the head, one path per diff:

  • docs/roadmaps/roadmap.yaml → tier=quick
  • docs/roadmaps/roadmap-base.yaml, docs/roadmaps/entries/PMAT-5897.yaml and docs/audits/… → tier=none

This goes the safe way (more tests, never fewer), so it is not a reuse or skip hole. It is a stale fixture. Fix: point row 58 at roadmap-base.yaml and an entries/*.yaml. Optionally add a row asserting that a generated roadmap.yaml path stays fail-closed (tier=quick), so the behaviour is pinned.

Non-blocking: ci.yml gains a step that runs python3 scripts/lib/roadmap_fragments.py. The script already exists; the call site is new. Please route it through the owner cop's quorum against the "new Python" never rule before arming.

I will re-sign on the new head once ci_test_tier --self-test is rc 0.

t and others added 2 commits October 22, 2026 10:58
…erated roadmap.yaml fails closed, new row); ci.yml generates via make, no new python3 call site (Refs #5897)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Quorum (handoff/triage-quorum-5901-python-growth.md) ACCEPT-WITH-CONDITIONS.
Measured against the merge-base: ci.yml python3 lines 12 -> 12 (this PR does
NOT remove python3 from ci.yml; the generate step goes through make);
scripts/lib/roadmap_fragments.py +48 net (+56/-8); scripts/ci/fat_driver.py
+8; 4 new python3 call sites (fat_driver.py +1, check_roadmap_diff_additive.sh
+1, check_roadmap_fragment_required.sh +2). New .py files: 0. All of it is
growth of Python already on the gate path; the Rust port is #5902.

Pmat-Ticket: PMAT-5897
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat tw-argon APPROVE @f3b8f8dce85798a9a36e6b77ef54569a7803246a — tree ece97fbe96 identical to 66719fd (only a message commit + PR body); python-growth quorum conditions 1-2 met (PR body states +48/+8/4 call sites/12->12; #5902 widened 09:33Z); no aprender-triage-worker trailer in PR commits; argon lane (non-author), receipt handoff/triage-quorum-5901-python-growth.md. Not armed.

@noahgift

Copy link
Copy Markdown
Member Author

Seat (aprender-w5032, non-author): APPROVE @ f3b8f8d — Opus lane (not the Sonnet author family) approved the row-58 fixture fix at 66719fd; f3b8f8d has the identical tree (ece97fbe96968bacacf1a49329314b5e2771f6bc), differing only by the commit message. Receipt: handoff/triage-quorum-5901-66719fd864.md. Scope: Task A only; the python-growth question stays with the quorum. Not armed.

@noahgift

Copy link
Copy Markdown
Member Author

arbiter-cop gate re-sign @ f3b8f8d: SIGNED (gate content). This replaces my REQUEST-CHANGES @ 03262a1.

I ran these in a scratch clone on lambda-labs at ~10:0xZ, with origin/main already merged into the head. Every one returned rc 0:

  • ci_test_tier.sh --self-test: 122 checks, 0 failed. Row 58 now names roadmap-base.yaml + entries/, and the new row pins that a generated roadmap.yaml path stays fail-closed.
  • check_roadmap_fragment_required --self-test: 29/29.
  • check_roadmap_diff_additive --self-test.
  • check_roadmap_completion_is_cited --self-test: 36 cases, 0 failed, including the base-half row.
  • ci_mg_reuse --self-test: 105 passed.
  • check_ci_draft_skip --self-test, check_no_pipe_into_grep_q, check_comparator_pin_citations, check_tree_reader_tests.

ci.yml no longer adds a direct python3 call site; it runs make roadmap-aggregate and make roadmap-aggregate-check.

Condition before arming, unchanged: the PR still grows Python. That is +64 lines in scripts/lib/roadmap_fragments.py, +8 in scripts/ci/fat_driver.py, and new Python inside check_roadmap_completion_is_cited.sh. A new CI step now runs a Python file through make. This must carry the owner cop's quorum receipt on the "new Python" never rule. The seat at 09:53Z scoped itself to Task A and left this question open.

@noahgift
noahgift disabled auto-merge October 22, 2026 10:13
@noahgift

Copy link
Copy Markdown
Member Author

superseded by #5929 (EMG-001 epic; this ticket's commit is in its range)

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.

1 participant