Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

I2863 — A derive does not run while a merge is uncommitted

scripts/derive refuses to run while the worktree holds an uncommitted merge (MERGE_HEAD present), and names the commit to make first, so no derived file is computed from the history of a HEAD the commit is about to leave.

PŘIPRAVENO vlna 0 · p1 · profil implementation · bezpečné souběžně

Součást derived-data-integrity — Commitnuté odvození popisuje něco, čeho může být projekcí.

Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I2863 bude přijato.

Cíl

scripts/derive refuses to run while the worktree holds an uncommitted merge (MERGE_HEAD present), and names the commit to make first, so no derived file is computed from the history of a HEAD the commit is about to leave.

Proč

On 2026-10-21, #1753 (I2845) merged master 573df967bb5 and was derived before the merge was committed. Several derived values read history from HEAD. The released_in rule (lib/project.sh mj_pj_m_released_in, and released_in in apps/majordomus-cli/src/plan.rs) runs `git log -S <completed_at>` and `git log --merges --grep`. HEAD was still the branch's old base 05e17a5c4a8, so idd-workspace's completion commit c2b6d98cd8c was outside it, and the fallback matched an older merge. The milestone was committed as released in v0.30.0, where master and CI compute unreleased. CI's site job reported roadmap.json and roadmap-graph.json STALE, and its fail-fast cancelled the other eight jobs of validate run 39534292871 after 40 minutes. The same trap is recorded from an earlier session, so a habit does not prevent it; the tool must.

Aktuální stav

scripts/derive runs with MERGE_HEAD present and writes derived data computed from the pre-merge HEAD's history. The pre-commit gate then accepts that data, because it compares it with a derive run in the same state.

Cílový stav

scripts/derive exits non-zero before any stage when the git directory holds MERGE_HEAD (also CHERRY_PICK_HEAD or REVERT_HEAD), saying to commit the merge and derive again. The message names that HEAD and the commit it would merge.

Rozsah

  • scripts/derive
  • .ai/repo/project/issues/I2863.yaml

Mimo rozsah

  • Making the released_in rule independent of HEAD's history; it reads the commit, which is correct once the commit exists
  • Refusing a derive during a rebase, which has no such ambiguity once each commit is applied

Závislosti

Žádné. Tento úkol je kořenem grafu.

Kritéria přijetí

  • scripts/derive in a worktree with MERGE_HEAD present exits non-zero before stage A and names MERGE_HEAD
  • The same derive after the merge is committed runs as before

Validace

  • bin/majordomus plan validate

Požadované důkazy

  • a_derive_refuses_mid_merge_case

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/I2863.yaml. Read it back with majordomus plan show I2863.

Prohledává názvy a popisy všech stránek, které tento web publikuje.