Skip to content

release: safely consolidate duplicate draft releases - #531

Merged
blove merged 58 commits into
mainfrom
blove/duplicate-draft-consolidation
Sep 2, 2026
Merged

release: safely consolidate duplicate draft releases#531
blove merged 58 commits into
mainfrom
blove/duplicate-draft-consolidation

Conversation

@blove

@blove blove commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a fail-closed inspect, perform, and verify workflow for the two duplicate v0.8.22 draft releases
  • bind deletion to exact proposal evidence, fresh authority, a durable hash-chained journal, and one-use permits
  • add canonical receipts, independent verification, crash recovery, realistic rehearsals, and workflow isolation
  • enumerate the complete paginated asset set for every remaining release, propagate shared request cancellation, and make hard DELETE responses terminal

Verification

  • DAWN_REQUIRE_DOCKER=1 pnpm ci:validate
  • focused consolidation tests: 584 passed
  • full source tests: 5,623 passed, 218 skipped
  • release-controller tests: 1,972 passed
  • framework, runtime, and smoke harness lanes passed

No live receipt is included in this pull request.

blove added 30 commits September 1, 2026 09:31
@vercel

vercel Bot commented Sep 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
dawnai Ready Ready Preview Sep 2, 2026 11:37am UTC

Request Review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Automated approval: this PR received an intelligent (AI) code review. See the review comments on this PR.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Changes recommended

There are internal inconsistencies in newly added tests/docs (e.g., confirmation string format and spec status) that should be corrected to keep the safety workflow accurately specified and exercised.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Adds a dedicated, fail-closed operator workflow to consolidate the known duplicate v0.8.22 GitHub draft releases into a single preserved survivor, with durable journaling/receipts and extensive rehearsal + recovery testing to ensure the process is resumable and verifiable.

Changes:

  • Introduce a strict, incident-scoped duplicate-draft-consolidation CLI with inspect / perform / verify modes and bounded output/error handling.
  • Add canonical journal + receipt mechanics and test harnesses that simulate crashes, lost responses, SIGKILL, and output flooding.
  • Document the consolidation design/spec and wire a release:consolidate-drafts package script for local operator use.
File summaries
File Description
scripts/release/test/support/duplicate-draft-consolidation-process-loss-child.mjs Child-process helper to simulate hangs/flooding/SIGKILL boundaries for crash-recovery rehearsal.
scripts/release/test/support/duplicate-draft-consolidation-fixture.mjs Deterministic fixture for 3 equivalent draft releases, assets, and attestation verification behavior.
scripts/release/test/support/duplicate-draft-consolidation-authorized-delete.mjs Harness for exercising delete authorization/permits/journal integration around a single target delete.
scripts/release/test/duplicate-draft-consolidation-rehearsal.test.mjs End-to-end rehearsal covering inspect/perform/verify plus process-loss and bounded-output behavior.
scripts/release/test/duplicate-draft-consolidation-journal.test.mjs Journal schema/state machine tests, hash-chain integrity, replay/resume legality rules.
scripts/release/test/duplicate-draft-consolidation-files.test.mjs File safety/atomicity tests for private envelopes, locks/quarantine, tracked receipts, and bounds.
scripts/release/test/duplicate-draft-consolidation-evidence.test.mjs Evidence capture/parity validation tests for releases/assets/timestamps/bounds and hostile shapes.
scripts/release/test/duplicate-draft-consolidation-cli.test.mjs CLI contract tests for exact argv acceptance, safe summaries, and stderr/stdout failure containment.
scripts/release/duplicate-draft-consolidation-release-classifier.mjs Classifier for selecting only the approved managed releases per authority stage and incident identity.
scripts/release/duplicate-draft-consolidation-journal.mjs Production journal creation/parsing/replay + resume decision logic and final receipt construction.
scripts/release/duplicate-draft-consolidation-cli.mjs Incident-scoped operator CLI entrypoint with strict argv parsing and hardened sink writing.
scripts/release/duplicate-draft-consolidation-authority.mjs Safe wrapper around adapter-provided authority capture entrypoint (descriptor/frozen/proxy checks).
package.json Adds release:consolidate-drafts script to run the consolidation CLI.
docs/superpowers/specs/2026-09-01-duplicate-draft-consolidation-design.md Design/spec writeup describing safety model, evidence/journal/receipt formats, and live procedure.
Review details
  • Files reviewed: 19/26 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread scripts/release/test/duplicate-draft-consolidation-journal.test.mjs

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

Token-shaped placeholder strings (e.g. ghp_...) and a related doc claim mismatch can trigger secret-scanning and make the documentation factually inaccurate.

Review details

Suppressed comments (2)

Previously missed (2) — in code that hasn't changed since the last review.

docs/superpowers/specs/2026-09-01-duplicate-draft-consolidation-design.md:149

  • The design doc says “tokens never appear in … source files”, but this PR’s test fixtures include token-shaped placeholders (e.g. ghp_…). Either avoid token-shaped strings in tests or clarify that the restriction applies to real credentials / production surfaces only, to keep the doc accurate.
    scripts/release/test/duplicate-draft-consolidation-rehearsal.test.mjs:617
  • This test fixture token uses the ghp_ prefix, which may be detected as a GitHub PAT by secret-scanning and contradicts the doc claim that tokens never appear in source files. Prefer a neutral placeholder token string that doesn’t match real token prefixes.
  • Files reviewed: 19/26 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

It introduces a large, incident-critical release-deletion workflow (plus extensive safety logic) where a final human review is warranted due to operational blast radius.

Review details
  • Files reviewed: 19/26 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

@blove
blove merged commit 9985bac into main Sep 2, 2026
26 of 27 checks passed
@blove
blove deleted the blove/duplicate-draft-consolidation branch September 2, 2026 12:05
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.

2 participants