Implement durable resumable PR publication (stacked on #119) - #120
Protonmatter merged 1 commit into
Conversation
Protonmatter
left a comment
There was a problem hiding this comment.
Pre-merge review pass for the owner's approved #120 -> #119 -> master integration.
Reviewed the six publisher modules, operator/agent instructions, and regression suite from the retained source packet (SHA-256 436ed0a0ceff96a0acfe37313ccfaefd9322a9663cfd604bef11428238e99f59). Fresh execution: PYTHONPATH=tools python -m unittest discover -s tests/python -p 'test_pr_publication*.py' -v -> 98 tests, zero failures/skips, 17.441 s. Reviewed expected-head/ancestry checks, binary packet validation, immutable checkpoint writes, lost-response reconciliation, PR identity, and CI/source SHA separation. No additional blocking issue identified in this pass. This is an author-side review, not an independent approval or live transport qualification.
Fresh GitHub observation: CI 36154468542, Coverage 36154468193, Docs 36154467819 completed successfully for source head 0759f8dd1fe24e2ff8cfb166f9f61a6684573f09. CI run metadata confirms PR #120 and base 7d843fadcb22de6e23237c12f5661eccb26499d2.
Retained limitations: live native/GraphQL publish-resume qualification, physical Windows/network filesystem durability, and automatic Library bridge integration remain unqualified; the previously disclosed post-capture subprocess output bound remains a deferred minor. No default activation or removal of these limits is implied by merging source.
The merge will use the reviewed source SHA as its expected-head precondition and a merge commit into #119's branch. #119 must receive fresh combined-head validation before a separate master merge. Rendering PRs and #116 recovery remain held.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
3e6c79e
into
docs/durable-pr-publication-20260925
Outcome
Implements the owner-approved durable PR publication specification and plan from #119. Stacked on #119: this PR targets
docs/durable-pr-publication-20260925, not master. Source publication tooling is implemented; the original missing Earth candidate for #116 remains unrecovered and unchanged. No merge or deployment is requested or performed.The entry point is
tools/publish_pr_candidate.pywithinspect,prepare,execute, andresume. Six production modules separate strict intent/reconciliation, binary recovery packets and immutable journals, native Git transport, API object staging, concrete GitHub CLI integration, and operator commands. Contributor instructions and the existing PR template now require verified publication evidence.Specification and traceability
docs/superpowers/specs/2026-09-25-durable-pr-publication-design.mdanddocs/superpowers/plans/2026-09-25-durable-pr-publication.md.Correctness and risk
updateRefs/beforeOidfor existing heads. A bridge without CAS may create only an explicitly absent new branch and never silently downgrades an existing-ref update.source_published: null) rather than claiming that no remote side effect occurred.Limitations: the concrete store is an operator-declared persistent filesystem; ChatGPT Library persistence still requires an authorized bridge, not hidden access from the script. API parents must already exist remotely; native Git carries otherwise unpublished history. API mode rejects unsupported signed/encoding commit headers. The authoring runtime must actually use the helper; CI cannot recover bytes that were never uploaded.
Deferred minor: subprocess output is bounded after capture, not streamed; unusually noisy local hooks may consume memory before rejection. Physical Windows/network-filesystem durability is unqualified; a simulated lock test is not physical-device evidence.
Rollback: remove these new tool/test/doc files and the appended PR-template section. No application or data migration occurs.
UI and UX
No application UI change. Operator output exposes prepared, persisted, remote-ref verified, PR verified and CI states separately. Documentation includes PowerShell usage and same-operation resume without copying SHAs manually.
Validation evidence
tools/validate_docs.pyandtools/validate_sdlc.pyfailed because those files were unavailable there; logs retained. No Rust, Node, full-repository or live GraphQL success is claimed.Commands:
Publication identity and recovery
The exact 16-file overlay was stored outside the execution container before GitHub mutation. It was read back and checksum verified. Each subsequent tree/commit/ref result has a retained immutable checkpoint. Rebuilding the final tree from the recorded parent tree and all 16 locally verified blob OIDs returned the identical staged tree.
7d843fadcb22de6e23237c12f5661eccb26499d20759f8dd1fe24e2ff8cfb166f9f61a6684573f09cc183af075df907196e2148aa2a5658b75373010durable-pr-implementation-20260925436ed0a0ceff96a0acfe37313ccfaefd9322a9663cfd604bef11428238e99f59Documentation
docs/PR_PUBLICATION.md, rootAGENTS.mdand PR-template publication fields added.