-
Notifications
You must be signed in to change notification settings - Fork 0
Certify pm CLI 2026.9.21, move merge drivers onto the canonical pm-ops launcher, and fix release visibility #121
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
unbraind
merged 6 commits into
main
from
pm-cli-2026-9-21-canonical-merge-driver-release-window
Sep 22, 2026
Merged
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
2e7a497
Certify pm CLI 2026.9.21 and install merge drivers through the canoni…
unbraind bbffdb2
State the real install contract of the canonical merge-driver launcher
unbraind 67627f7
Let CI prove that npm ci's prepare hook installs the merge drivers
unbraind 74e16f1
Drop the release backfill step until it can verify provenance ancestry
unbraind ed65864
Declare max_attempts before use and correct the wave's pm records
unbraind 73584bf
Make every closure field of the release Issue match the final scope
unbraind File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| id: pm-linear-seq7 | ||
| title: A publish that npm accepts late is reported as failed and the GitHub Release is skipped on bun mirror lag | ||
| description: "Companion item pm-cli-website-3y5d. Two changes to this repository's own release.yml: (1) a 10-minute npm visibility window after a reported publish error, read with --prefer-online, and an honest message when nothing becomes visible (the unattested-occupant refusal is unchanged; max_attempts is declared before the function that expands it); (2) the GitHub Release depends only on the publish and tag-push outcomes, and bun gets a 21-attempt 10-minute window with a final re-check, failing the job visibly through a separate gate step. A backfill step was proposed and removed after review: an npm attestation alone does not prove a tag's commit produced the artifact, and this fleet's provenance names the trigger commit (pm-cli-website-nodo), so provenance-ancestry verification moves to pm-cli-website-mxrp." | ||
| type: Issue | ||
| status: closed | ||
| priority: 1 | ||
| tags[2]: release,reliability | ||
| created_at: "2026-09-22T05:57:38.475Z" | ||
| updated_at: "2026-09-22T06:27:42.445Z" | ||
| closed_at: "2026-09-22T06:07:25.384Z" | ||
| completed_at: "2026-09-22T06:07:25.384Z" | ||
| author: fleet-wave-script | ||
| resolution: "Widened the npm visibility window after a reported publish error to 10 minutes and made the GitHub Release depend only on the publish and tag-push outcomes, with bun verification failing the job visibly through a gate step. A proposed backfill step was removed after review (provenance-ancestry verification tracked as pm-cli-website-mxrp)." | ||
| expected_result: "A publish that npm accepts late is reconciled instead of reported as failed, and the GitHub Release is created whenever the publish and the tag push succeed, even when bun's mirror lags; a bun failure still fails the job visibly." | ||
| actual_result: "Final release.yml is byte-identical to a fresh run of the anchored applier on origin/main (identical), names only unbraind/pm-linear, and passes the stub harness 5/5 (the unpatched file fails the four fix scenarios). Review follow-ups folded in: bun end-of-window re-check, backfill removed, max_attempts declared before use." | ||
| comments[1]{created_at,author,text}: | ||
| "2026-09-22T06:17:24.124Z",fleet-wave-script,"Review follow-up (Greptile on pm-brief#124 and pm-linear#121): the backfill step is removed from this wave. It treated any npm attestation as proof that a tag's artifact was ours. The right check is not attested-commit equals tag-commit: this fleet's provenance records the workflow trigger commit (companion item pm-cli-website-nodo), measured as the tag's direct parent on pm-linear 2026.9.18, pm-github 2026.9.11 and pm-todos 2026.9.11. The check has to be repository plus workflow path plus ancestry, and it returns in the canonical pm-ops release verifier (companion pm-cli-website-mxrp). The other two changes, the 10-minute npm visibility window and the Release decoupled from bun lag, fix the root causes on their own. The three historical orphans were backfilled by hand on 2026-09-22." | ||
| files[1]{path,scope}: | ||
| .github/workflows/release.yml,project | ||
| tests[1]{command,scope,provenance{author,created_at,source_kind,source_ref}}: | ||
| "npm run release:check",project,fleet-wave-script,"2026-09-22T05:57:48.762Z",local_mutation,pm-cli-2026-9-21-canonical-merge-driver-release-window | ||
| close_reason: "Final release.yml is byte-identical to a fresh run of the anchored applier on origin/main and names only unbraind/pm-linear. The stub harness passes the 5 applicable scenarios on it (late-visible publish, never-visible, unattested occupant, bun failure with Release plus red job, bun resolving at the 10-minute mark), and the unpatched file fails the four fix scenarios. The backfill was removed in review." | ||
| body: "" | ||
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| id: pm-linear-em7w | ||
| title: Certify pm CLI 2026.9.21 and install merge drivers through the canonical pm-ops launcher | ||
| description: "Fleet wave 2026-09-22 (companion epic pm-cli-website-5s6z). Pins @unbrained/pm-cli 2026.9.21, pm-ops 2026.9.18 and pm-changelog 2026.9.18 exactly. The prepare hook becomes a thin launcher over pm-ops/merge-driver instead of a vendored implementation. CI runs pm health --strict-exit --require-merge-drivers right after npm ci, with no separate install step, so the gate proves the prepare hook installed the drivers (verified on a fresh clone: 0 merge.pm keys before npm ci, 10 after; health exits 1 once they are removed). The README states the real install contract: registry installs never run prepare, and a production install of a clone must pass --ignore-scripts (guarded launcher tracked as pm-cli-website-xy19)." | ||
| type: Task | ||
| status: closed | ||
| priority: 1 | ||
| tags[4]: certify,merge-driver,multi-agent,pm-cli-2026.9.21 | ||
| created_at: "2026-09-22T05:57:37.869Z" | ||
| updated_at: "2026-09-22T06:23:42.403Z" | ||
| closed_at: "2026-09-22T06:07:22.661Z" | ||
| completed_at: "2026-09-22T06:07:22.661Z" | ||
| author: fleet-wave-script | ||
| acceptance_criteria: "package.json and package-lock.json pin pm-cli 2026.9.21, pm-ops 2026.9.18, pm-changelog 2026.9.18; scripts/prepare-merge-driver.ts is the thin pm-ops/merge-driver launcher; no vendored implementation remains; CI runs pm health --strict-exit --require-merge-drivers after npm ci with no separate install step" | ||
| resolution: Pinned the fleet toolchain and moved the prepare hook onto pm-ops/merge-driver; CI now requires the drivers. | ||
| expected_result: "A fresh clone registers the merge drivers from npm ci, and CI fails if they are missing." | ||
| actual_result: "Pins: @unbrained/pm-cli 2026.9.17 -> 2026.9.21, pm-changelog 2026.9.16 -> 2026.9.18, pm-ops 2026.9.13 -> 2026.9.18 (package.json and package-lock.json verified). Launcher replaces scripts/prepare-merge-driver.mjs; removed: scripts/prepare-merge-driver.mjs. git config lists the pm merge drivers after npm ci; pm health --strict-exit --require-merge-drivers exits 0; release:check exits 0." | ||
| comments[2]{created_at,author,text}: | ||
| "2026-09-22T06:10:06.902Z",fleet-wave-script,"Review follow-up (Greptile P1 + Sourcery on pm-starter#113): the launcher statically imports the devDependency pm-ops, so the README's promise that production / --omit=dev installs cannot break held only for registry installs, which never run prepare. README now states the real contract: a production install of a clone must pass --ignore-scripts. Canonical guarded launcher tracked as companion item pm-cli-website-xy19." | ||
| "2026-09-22T06:14:43.359Z",fleet-wave-script,"Review follow-up (Greptile P2 on pm-github#93, 'driver check is tautological'): CI no longer runs an explicit pm merge install before pm health --require-merge-drivers, because that made the gate verify only the step before it and would have masked a broken prepare hook. Proven on a fresh git clone of a wave branch: 0 merge.pm* keys before npm ci, 10 after (the prepare launcher installs them), health exits 0; with every merge.pm* key removed, pm health --strict-exit --require-merge-drivers exits 1. So the CI gate now proves the mechanism a fresh clone actually relies on." | ||
| files[5]{path,scope}: | ||
| .github/workflows/ci.yml,project | ||
| package-lock.json,project | ||
| package.json,project | ||
| README.md,project | ||
| scripts/prepare-merge-driver.ts,project | ||
| tests[1]{command,scope,provenance{author,created_at,source_kind,source_ref}}: | ||
| "npm run release:check",project,fleet-wave-script,"2026-09-22T05:57:47.443Z",local_mutation,pm-cli-2026-9-21-canonical-merge-driver-release-window | ||
| close_reason: "Pins: @unbrained/pm-cli 2026.9.17 -> 2026.9.21, pm-changelog 2026.9.16 -> 2026.9.18, pm-ops 2026.9.13 -> 2026.9.18 (package.json and package-lock.json verified). Launcher replaces scripts/prepare-merge-driver.mjs; removed: scripts/prepare-merge-driver.mjs. git config lists the pm merge drivers after npm ci; pm health --strict-exit --require-merge-drivers exits 0; release:check exits 0." | ||
| body: "" |
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.