Repository navigation
fix(lastcode): publish checkpoints when work merges mid-run - #294
Conversation
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8875b8b4da
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
4c10f7f to
c69c2b8
Compare
The promotion lock reference cannot prove that its writer is active. Propagate lock acquisition failures after tag publication so abandoned locks, authentication failures, and transport errors still alert maintenance. Keep successful deferral when a concurrent merge advances main, and preserve the published tag for a later promotion attempt. Carry-Group: tooling Carry-Fix: #294 Carry-Observation: Review found that treating every lock acquisition error as an active merge silently suppressed persistent promotion failures. Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
8875b8b to
c27cd52
Compare
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c27cd522cd
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
The promotion lock reference cannot prove that its writer is active. Propagate lock acquisition failures after tag publication so abandoned locks, authentication failures, and transport errors still alert maintenance. Keep successful deferral when a concurrent merge advances main, and preserve the published tag for a later promotion attempt. Carry-Group: tooling Carry-Fix: #294 Carry-Observation: Review found that treating every lock acquisition error as an active merge silently suppressed persistent promotion failures. Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
Capture the validated recovery selection in a constant before the deferred promotion callback. This preserves the non-optional selection type without changing checkpoint publication or promotion behavior. Carry-Group: tooling Carry-Fix: #294 Carry-Observation: GitHub CI found TS18048 when the promotion callback captured the mutable optional selection. Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
Require the competing main to contain the pinned checkpoint source before reporting successful deferred promotion. Fetch the competing head after a rejected push so commits created elsewhere can be checked. Unrelated rewrites preserve the published tag and rewritten main while failing promotion visibly. Carry-Group: tooling Carry-Fix: #294 Carry-Observation: Review found that unrelated main rewrites could be mistaken for merged work and suppress the stale-promotion alert. Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
c27cd52 to
d04eb68
Compare
The promotion lock reference cannot prove that its writer is active. Propagate lock acquisition failures after tag publication so abandoned locks, authentication failures, and transport errors still alert maintenance. Keep successful deferral when a concurrent merge advances main, and preserve the published tag for a later promotion attempt. Carry-Group: tooling Carry-Fix: #294 Carry-Observation: Review found that treating every lock acquisition error as an active merge silently suppressed persistent promotion failures. Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
Capture the validated recovery selection in a constant before the deferred promotion callback. This preserves the non-optional selection type without changing checkpoint publication or promotion behavior. Carry-Group: tooling Carry-Fix: #294 Carry-Observation: GitHub CI found TS18048 when the promotion callback captured the mutable optional selection. Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
Require the competing main to contain the pinned checkpoint source before reporting successful deferred promotion. Fetch the competing head after a rejected push so commits created elsewhere can be checked. Unrelated rewrites preserve the published tag and rewritten main while failing promotion visibly. Carry-Group: tooling Carry-Fix: #294 Carry-Observation: Review found that unrelated main rewrites could be mistaken for merged work and suppress the stale-promotion alert. Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
d04eb68 to
8d001f7
Compare
|
@codex review |
|
Codex Review: Didn't find any major issues. Swish! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
A merge that landed while a checkpoint was validating discarded the run: repaired checkpoints published tag and main in one atomic push, so the validated tag was rejected and the repair had to be reselected and revalidated by hand; ordinary checkpoints published their tag but failed the run at promotion. Publish the validated tag and source ref without touching main, and have promotion defer, instead of failing, when main advanced or a guarded merge holds the main write lock. The merge's own service request then publishes a revision that replays it onto the new tag and promotes that. Merges after recovery selection no longer invalidate it; only a main that no longer descends from the selected source does. Carry-Group: tooling Carry-Observation: On 2026-10-05 the merges of #280 and #282 each forced a manual fold-in and full revalidation of a repaired checkpoint. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The promotion lock reference cannot prove that its writer is active. Propagate lock acquisition failures after tag publication so abandoned locks, authentication failures, and transport errors still alert maintenance. Keep successful deferral when a concurrent merge advances main, and preserve the published tag for a later promotion attempt. Carry-Group: tooling Carry-Fix: #294 Carry-Observation: Review found that treating every lock acquisition error as an active merge silently suppressed persistent promotion failures. Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
Capture the validated recovery selection in a constant before the deferred promotion callback. This preserves the non-optional selection type without changing checkpoint publication or promotion behavior. Carry-Group: tooling Carry-Fix: #294 Carry-Observation: GitHub CI found TS18048 when the promotion callback captured the mutable optional selection. Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
Require the competing main to contain the pinned checkpoint source before reporting successful deferred promotion. Fetch the competing head after a rejected push so commits created elsewhere can be checked. Unrelated rewrites preserve the published tag and rewritten main while failing promotion visibly. Carry-Group: tooling Carry-Fix: #294 Carry-Observation: Review found that unrelated main rewrites could be mistaken for merged work and suppress the stale-promotion alert. Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
8d001f7 to
082c8f6
Compare
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 082c8f616a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Carry-Group: tooling
|
@codex review |
|
Codex Review: Didn't find any major issues. You're on a roll. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Merging a PR while a checkpoint was validating threw the run away. Repaired checkpoints published the tag and
lastcode/mainin one--atomicpush, so a mid-run merge rejected the validated tag too. The repair then had to be reselected, with the merge folded in by hand, and fully revalidated. Ordinary checkpoints published their tag but failed the run at promotion, which alerted the maintenance thread. On 2026-10-05, #280 and #282 each cost a manual fold-in and a 10–15 minute revalidation.The validated tag no longer depends on main:
You can merge at any time. The build can start from the checkpoint tag immediately, and merged work follows minutes later as a revision.
Runbook text in
fork-conventions.md,release.md,nightly-workflow.mdand thelastcode-prskill is rewritten to match.Validation: focused checkpoint and recovery tests, selected-recovery lifecycle tests, and carry lifecycle tests pass. Lifecycle regressions cover descendant merges after selection, during validation, and during the promotion push; unrelated remote-only rewrites retain the selected repair and fail visibly while preserving the published tag and rewritten main. They also verify blocked retries preserve that repair, restored-source retries promote the existing tag, and promotion-lock failures retain recovery until a successful retry. The scripts typecheck and scoped format/lint checks pass. GitHub CI and Codex review are required on the final head and base. Quick CI was skipped at the maintainer's request; GitHub CI is the gate.
Includes merged #293 as its current base.
Implemented with Claude Opus 5.5 in the Claude Code harness. Refreshed and repaired with GPT-6.1-Sol in the Codex harness.
🤖 Generated with Claude Code