Refresh existing daily release PRs from current main

Merged
UN
4d ago
+431-74

The daily job could fail changelog:check before its existing lease-protected refresh: it generated closed-only history while the canonical package generator also included tagged pending work. A new day selected a different branch and abandoned the older open release PR; numeric suffixes also allowed another same-day publication.

The workflow now fetches current main before preparation, regenerates through the canonical changelog and release-notes scripts, and rebuilds the existing release PR branch with today's stable CalVer. Its pure decision over existing PR, main SHA, last release and today skips after a release dated today. Existing protected-PR, lease, approval, provenance and publication guards remain. Reusable PRs must belong to this repository, have the exact workflow-bot author, and use the planner’s date-shaped branch. The selected PR number flows directly to edits; fresh-branch collisions fail before push or cleanup, and both refresh and deletion use explicit leases.

Before: PR #144 retained an older base/version while later runs failed before refresh. After: an eligible run rebuilds that branch from current main, generates matching history and updates the PR metadata to today. A concurrent main change still fails safely and is rebuilt on the next run.

The decision/workflow/publication suite passes 27/27. Removing only each safety predicate independently makes its cross-repository, foreign-author or non-date regression fail with ERR_ASSERTION; legitimate stale PR reuse and unpadded dates still pass. Workflow-boundary tests also cover GitHub lookup failure propagation and refusal to overwrite an existing ref without a verified workflow PR. The earlier stale-PR and once-per-day revert proofs remain documented.

Real public dry-run evidence covers all eight historical imports in pm-csv, pm-brief and pm-context, with no durable tracker writes or importer defect. Six incorrect Unreleased entries become zero. The actual pm-brief export reads historical dates and changes the documented eight-record seven-day cohort from eight apparent recent closures to one. The dry-run schema omits completed_at; its value is explicitly a projection of the existing persistence assignment, backed by the real-SDK fidelity regression. No real import apply occurred.

Both npm run release:check and bun run release:check exited 0 at code head febd1215f941369be9e2de2e69dcfc0fc84f25be. Each passed 903/903 tests with zero failures/skips/cancellations and exact 100/100/100/100 over 15 authored modules. Lines/statements 10471/10471, functions 275/275, branches 3177/3177 (npm) and 3175/3175 (Bun invocation). All stages passed with unchanged thresholds and pins.

The final receipt head is 7b61575b5e1a29ed929358f188456412f6b3b769. An independent fresh --no-local clone passed strict health with required merge drivers, validation and privacy (2954 reachable Git objects; no findings), and has a clean checkout. Final-head Node22/26 CI passed, each with 903/903 Node tests, 903 native Bun tests across 41 files and exact 100/100/100/100 authored-source coverage. CodeQL and Semgrep passed: https://github.com/unbraind/pm-github/actions/runs/39179989399 . Checks were polled every 60 seconds and completed within 40 minutes.

Full field-by-field public-data evidence and 25 copied sibling workflows. No shared pm-ops release template was found. The separate attribution change is PR #150; combined merge acceptance remains with the orchestrator.

Claims are released and items remain unclosed. No merge, release workflow dispatch, tag or publication was performed. Caller pin adoption still follows publication. The two requested review findings are addressed in code and documentation; review threads remain unanswered and unresolved as requested.

PM: release pm-github-l1ot, fidelity pm-github-c093, copied workflow follow-up pm-github-sagl.