Skip to content

roadmap: push the five tickets minted today (they existed only in a working tree) - #3580

Merged
noahgift merged 2 commits into
mainfrom
PMAT-3577-roadmap-extraction
Sep 20, 2026
Merged

noahgift merged 2 commits into
mainfrom
PMAT-3577-roadmap-extraction

Conversation

@noahgift

Copy link
Copy Markdown
Contributor

Operator ruling 2026-09-20: extraction, not a single-writer rule — "a single-writer rule is a bypass with a name". This is that extraction, with two deviations from the ruling's assumptions, both measured.

What lands

Five ticket entries appended to docs/roadmaps/roadmap.yaml:

ticket issue
PMAT-3567 fleet pv pin has no extract/--gate
PMAT-3568 schema-constrained decoding
PMAT-3569 decision 8 — census.json derived
PMAT-3574 ARB-APR-3 parity receipt
PMAT-3577 receipts under contract

Guards: check_roadmap_ids_unique.sh PASS · check_roadmap_diff_additive.sh PASS · check_roadmap_completion_is_cited.sh PASS.

Deviation 1 — it is five tickets, not 352 insertions

The "352 unpushed insertions" figure I reported was measured with git diff origin/main in a checkout 118 commits behind origin/main. That diff is not a list of new tickets; it is mostly main's own entries showing as removals because the stale tree lacks them:

removal lines in that diff ......... 2134
entries on origin/main ............. 928
entries in the stale working tree .. 839      ← behind, not ahead

Of the 23 added ids in that diff, 19 are absent from main and only 5 were minted today. The other 14 are unpushed work of unknown provenance sitting in someone's tree; they are not mine to sweep into a commit, which is the same reason I declined to commit the file in place earlier.

So the number in my own report was an artifact of measuring against the wrong reference — the identical class as .stderr 195-vs-6 and the rustc host table. Third time today; the pattern is that a measurement taken in the driver checkout is suspect because that checkout is stale by construction.

Deviation 2 — fragment form is NOT used, deliberately

The ruling says fragments under docs/roadmaps/entries/ "are already the form guard-tree requires". They do not exist in this repository — docs/roadmaps/entries/ is empty and roadmap_trim.py is absent. That form lands with PMAT-3427 in the slice M chain (#3447), which is unmerged in Band 0.

Creating a fragment layout here would be a second format racing the one #3447 defines — the duplicate-implementation failure the decision-8 ruling forbids in its own words. So this PR uses the form that exists today, and the fragment migration is #3447's, not a follow-up of mine.

What does not change

The generative defect stays paiml-mcp-agent-toolkit#1370 / #1414: pmat work add writes roadmap.yaml in place and nothing pushes it, so a minted ticket lives only in the tree that minted it. Until that ships, workers verify a ticket against the issue's ## done_when heading, never the roadmap.

🤖 Generated with Claude Code

…n a working tree)

PMAT-3567 fleet pv pin · PMAT-3568 schema-constrained decoding ·
PMAT-3569 decision 8 · PMAT-3574 ARB-APR-3 receipt · PMAT-3577 receipts
under contract.

pmat work add writes roadmap.yaml in place and nothing pushes it, so a
minted ticket lives only in the tree that minted it and vanishes on a
branch switch (paiml-mcp-agent-toolkit#1370, #1414).

Scope is deliberately five, not the 23 the driver checkout's diff shows.
That checkout is 118 behind origin/main, so its roadmap diff reports
2134 removals -- main's own entries, absent locally -- and 14 further
additions of unknown provenance. main carries 928 entries, the stale
tree 839. Only the five minted today are pushed here; the other 14 are
someone's unpushed work and are not mine to sweep into a commit.

Fragment form (docs/roadmaps/entries/<ID>.yaml) is NOT used: it does not
exist in this repo yet and lands with PMAT-3427 in the slice M chain
(#3447). Inventing a second format ahead of it would be the duplicate
implementation that ruling forbids.

Guards: ids_unique PASS, diff_additive PASS, completion_is_cited PASS.

Pmat-Ticket: PMAT-3577
Refs #3577, #3080

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noahgift noahgift added the touches-roadmap PR touches docs/roadmaps/roadmap.yaml — merges in a queue group of one label Sep 20, 2026
@github-actions

github-actions Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

§13.11 rung 1 — quorum shadow verdict

S13-SHADOW pr=3580 head=2e9246e463b7ef5e4f24316bc44bfb28cbf354e9 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.

docs/roadmaps/entries/<ID>.yaml per entry, the form the guard on main
requires. My earlier claim that this form does not exist here was made
from a checkout 118 behind origin/main: entries/ holds 40 fragments on
main and check_roadmap_fragment_required.sh is a guard-tree row there.
The stale tree had neither, so I ran the three guards it did have and
reported the fourth as absent.

Pmat-Ticket: PMAT-3577
Refs #3577

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Contributor Author

Deviation 2 is withdrawn — I was wrong, and the guard is what proved it.

I claimed the fragment form "does not exist in this repository" and deferred it to #3447. Measured against origin/main:

docs/roadmaps/entries/ on main ........... 40 fragments
scripts/check_roadmap_fragment_required.sh  a guard-tree row on main

Both exist. My checkout is 118 commits behind origin/main and had neither, so I ran the three roadmap guards it did have, saw them pass, and reported the fourth as absent. guard-tree caught it on the PR — FAIL ADDED PMAT-3567 … with NO change to docs/roadmaps/entries/PMAT-3567.yaml ×5.

Fixed in 2e9246e46: merged origin/main, wrote the five fragments, and the guard now reports

ok    docs/roadmaps/roadmap.yaml == aggregate(docs/roadmaps/entries/) at head
PASS  5 changed entry/entries, each with its fragment; the aggregate is regenerated

That is the fourth time today a number or a claim of mine came from the stale driver checkout — after .stderr 195-vs-6, the rustc host table, and the "352 insertions". The operator's ruling was right on both halves and my objection to the fragment half was an artifact, not an argument.

The rule I am taking from it, and applying from here: the driver checkout is not a measurement surface. It is 118 behind by construction because the cop does not do feature work in it. Every guard run, file count and existence check goes in a fresh worktree off origin/main — which is what rel-0682 is for, and what I should have used from the first.

Deviation 1 stands as written: this is five tickets, not 352, and the other 14 unpushed entries are not mine to sweep.

@noahgift
noahgift added this pull request to the merge queue Sep 20, 2026
Merged via the queue into main with commit ddb5a15 Sep 20, 2026
25 of 26 checks passed
@noahgift
noahgift deleted the PMAT-3577-roadmap-extraction branch September 20, 2026 15:23
@noahgift noahgift mentioned this pull request Sep 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

touches-roadmap PR touches docs/roadmaps/roadmap.yaml — merges in a queue group of one

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant