Skip to content

馃悰 fix: a rebased landing names its commit, and a landed task reads landed - #32

Merged
Misery7100 merged 3 commits into
mainfrom
fix/landing-record-and-board
Oct 6, 2026
Merged

Misery7100 merged 3 commits into
mainfrom
fix/landing-record-and-board

Conversation

@Misery7100

Copy link
Copy Markdown
Contributor

Two engine defects from the 0.2 list. Both break an existing promise, so they ship as fixes rather than a design document.

1. A rebased landing names the commit that landed (lane.py). Source: a-rebased-landing-records-the-pre-rebase-commit, from bloomery T-0270.

  • Cause: the runner writes the landing file at the attempt, naming the work commit. A rebase replays that file unchanged while giving the work commit a new sha, so the record named a commit no branch holds.
  • Fix: after every rebase onto a moved base, in _land_rebased and _rebase_document, _restate_landings points each replayed landing file at its work commit's new sha, which is the parent of the commit that added the file. The rebased tip is then amended to carry the change. Fast-forward landings are untouched.
  • Signing: the amend follows the host's git config, exactly as the rebase it follows does. It loses nothing the plain git rebase didn't already.

2. A landed candidate reads landed, not ready (projections.py, cli/manager.py).

  • Cause: the state machine ends a candidate at ready and records its landing only beside it. So torve status and manager board showed landed tasks as ready, for days.
  • Fix: a shared projections.landed_ids collects landed tasks from three sources: the board's landed_sha, the lane's landings, and landings shipped in the tree. status and manager board show landed for any ready task in that set, in text and JSON. _document_waits now uses the same helper.
  • State machine: unchanged.
  • JSON consumers: they now see landed as a state value.

Tests:

  • Two new lane tests: a rebased landing names an ancestor of the tip, and a fast-forward landing is untouched.
  • A new status test, and a board assertion added to an existing manager test.
  • Full suite: 2261 passed. ruff, mypy and spec check are clean.

The third commit closes the source with "Fixed at 8b9d337". I'll correct that sha to the squash commit after merge, as with #4.

馃 Generated with Claude Code

https://claude.ai/code/session_01EabbhASMvWNhC7x4K9NJMF

Misery7100 and others added 3 commits October 6, 2026 21:48
The runner writes the landing file before the lane ever rebases, naming
the attempt's work commit, and a rebase replays the file unchanged while
giving that commit a new sha, so the record named a commit no branch
holds (bloomery T-0270). After a rebase onto a moved base, each replayed
landing file now names its work commit's new sha, the parent of the
commit that added it, and the rebased tip is amended to carry that.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EabbhASMvWNhC7x4K9NJMF
The state machine ends a candidate at ready and records its landing beside
it, so the board and torve status showed tasks that landed weeks ago as
still waiting to land. Both now show landed for a ready task whose
landing the board, the lane or the tree records; the state machine is
unchanged, and the board's document-wait set reads the same helper.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EabbhASMvWNhC7x4K9NJMF
@Misery7100
Misery7100 merged commit cecce07 into main Oct 6, 2026
5 checks passed
@Misery7100
Misery7100 deleted the fix/landing-record-and-board branch October 6, 2026 19:10
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.

1 participant