fix(lane): recover active generation after restart #148

Open
triform-admin wants to merge 3 commits from agent/lane-restart-continuity into main

Root cause

The active lane generation and immutable member roster existed only in process memory. A pod replacement therefore let Forgejo replay the durable queue into a fresh lane while the already-dispatched exact build continued without a caller, selecting a second batch and spending the first compile.

Repair

  • atomically journal the blocking generation before executing the remote build
  • reload and re-dispatch the exact generation before accepting fresh events after boot
  • rely on the dispatcher exact identity to reattach rather than start duplicate work
  • fail closed on a corrupt recovery journal instead of arming an empty lane
  • clear the journal only once the build leaves Building
  • add recovery and corruption tests

Scope

Forgejo remains the durable source for queued members. This journal intentionally covers the non-replayable blocking generation only.

Root cause The active lane generation and immutable member roster existed only in process memory. A pod replacement therefore let Forgejo replay the durable queue into a fresh lane while the already-dispatched exact build continued without a caller, selecting a second batch and spending the first compile. Repair - atomically journal the blocking generation before executing the remote build - reload and re-dispatch the exact generation before accepting fresh events after boot - rely on the dispatcher exact identity to reattach rather than start duplicate work - fail closed on a corrupt recovery journal instead of arming an empty lane - clear the journal only once the build leaves Building - add recovery and corruption tests Scope Forgejo remains the durable source for queued members. This journal intentionally covers the non-replayable blocking generation only.
fix(lane): recover active generation after restart
Some checks failed
ci / rust-analyzer latency harness (S1 / AC#2) (pull_request) Has been skipped
ci / lane policy mutation proof (pull_request) Failing after 1m0s
ci / test (pull_request) Failing after 5m10s
ci / clippy (pull_request) Failing after 5m15s
ci / build (pull_request) Failing after 8m57s
ci / fmt (pull_request) Successful in 14m1s
647fab6a4b
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
fix(lane): require durable generation before dispatch
Some checks failed
ci / rust-analyzer latency harness (S1 / AC#2) (pull_request) Has been skipped
ci / lane policy mutation proof (pull_request) Failing after 1m57s
ci / build (pull_request) Failing after 3m36s
ci / fmt (pull_request) Successful in 3m31s
ci / test (pull_request) Failing after 3m36s
ci / clippy (pull_request) Failing after 10m38s
5cb6e23cae
fix(lane): keep recovery journal MSRV-compatible
Some checks are pending
ci / build (pull_request) Waiting to run
ci / test (pull_request) Waiting to run
ci / lane policy mutation proof (pull_request) Waiting to run
ci / fmt (pull_request) Waiting to run
ci / clippy (pull_request) Waiting to run
ci / rust-analyzer latency harness (S1 / AC#2) (pull_request) Waiting to run
5bcdff956f
Some checks are pending
ci / build (pull_request) Waiting to run
ci / test (pull_request) Waiting to run
ci / lane policy mutation proof (pull_request) Waiting to run
ci / fmt (pull_request) Waiting to run
ci / clippy (pull_request) Waiting to run
ci / rust-analyzer latency harness (S1 / AC#2) (pull_request) Waiting to run
This pull request has changes conflicting with the target branch.
  • crates/cargoless/src/serveapi.rs
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin agent/lane-restart-continuity:agent/lane-restart-continuity
git switch agent/lane-restart-continuity

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff agent/lane-restart-continuity
git switch agent/lane-restart-continuity
git rebase main
git switch main
git merge --ff-only agent/lane-restart-continuity
git switch agent/lane-restart-continuity
git rebase main
git switch main
git merge --no-ff agent/lane-restart-continuity
git switch main
git merge --squash agent/lane-restart-continuity
git switch main
git merge --ff-only agent/lane-restart-continuity
git switch main
git merge agent/lane-restart-continuity
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
triform/cargoless!148
No description provided.