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`.
PŘIPRAVENO vlna 0 · p1 · profil implementation · bezpečné souběžně
Součást development-runtime — The runtime has a development surface.
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I3836 bude přijato.
Cíl
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`.
Proč
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.
Aktuální stav
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.
Cílový stav
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.
Rozsah
- apps/majordomus-cli/src/offload
- scripts/generate-site-data
- docs/WORKTREES.md
Mimo rozsah
- Changing what delivery.json observes for a clean tree derived locally
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- 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
Validace
- bash test/run.sh 3846_an_offload_derive_observes_its_base_commit
- bin/majordomus plan validate
Požadované důkazy
- an_offload_derive_observes_its_base_commit_test
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3836.yaml. Read it back with majordomus plan show I3836.