Skip to content

I3836 — An offload derive observes the bundle's base commit, not its throwaway snapshot, so what it derives passes CI's check

Make `majordomus offload derive` hand the host derive the commit the worktree's HEAD names (the snapshot's first parent) as the commit every derived file may observe, so site/data/generated/delivery.json names a commit that exists on the branch and origin, never the `git stash create` snapshot or the `commit-tree` merge input apps/majordomus-cli/src/offload/run.rs writes; scripts/generate-site-data takes that commit through one declared input instead of `git rev-parse HEAD`.

READY wave 0 · p1 · implementation profile · parallel safe

Part of development-runtime — The runtime has a development surface.

Ready. Every dependency is done, so majordomus plan start I3836 will be accepted.

Objective

Make `majordomus offload derive` hand the host derive the commit the worktree's HEAD names (the snapshot's first parent) as the commit every derived file may observe, so site/data/generated/delivery.json names a commit that exists on the branch and origin, never the `git stash create` snapshot or the `commit-tree` merge input apps/majordomus-cli/src/offload/run.rs writes; scripts/generate-site-data takes that commit through one declared input instead of `git rev-parse HEAD`.

Why

PR #1759 (head 34ca69681f3) went red in CI's site job on 2026-10-21, run 39535247244: `STALE site/data/generated/delivery.json` because its observed.commit was d1485feb7793, the snapshot macbook-2 derived, which never reached origin. generate-site-data --check cannot find that commit, falls back to its own HEAD and calls the file stale, and the site job's fail-fast then cancels ten other jobs, which reads as a cancelled run. Every branch derived by offload is red the same way, and a local derive with MERGE_HEAD present (#1753) fails for the same reason. Filed by dev-03 at a3's ruling.

Current state

offload/run.rs sends HEAD when the worktree is clean, a `git stash create` snapshot when it is not, and a `commit-tree` merge commit during a merge; scripts/generate-site-data writes delivery.json --at `git rev-parse HEAD` (lines 1904-1919) and its --check re-reads the commit the committed file names.

Desired state

A derive, local or offloaded, writes delivery.json at a commit that is an ancestor of the commit the derived files land in, and CI's --check of an offload-derived branch is green.

Scope

  • apps/majordomus-cli/src/offload
  • scripts/generate-site-data
  • docs/WORKTREES.md

Out of scope

  • Changing what delivery.json observes for a clean tree derived locally

Dependencies

None. This issue is a root of the graph.

Acceptance criteria

  • An offload derive of a dirty worktree writes delivery.json whose observed.commit is the worktree's HEAD, and generate-site-data --check of the committed result is clean in a fresh clone that never saw the snapshot
  • An offload derive during a merge observes HEAD as well, never the merge input commit
  • A local derive with a dirty tree is unchanged
  • Case 3846 proves both with a fixture host, and fails against the offload of master 573df967bb5

Validation

  • bash test/run.sh 3846_an_offload_derive_observes_its_base_commit
  • bin/majordomus plan validate

Evidence required

  • an_offload_derive_observes_its_base_commit_test

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Timeline

started
—
verified
—
completed
—

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I3836.yaml. Read it back with majordomus plan show I3836.

Searches the titles and descriptions of every page this site publishes.