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.

I3118 — The edit guard's contract names every case it lets through, and each row has a test

Write the guard's decision table into docs (server unanswered, policy off, path outside the checkout, local state, no-file tool, own claim, task scope, another session's claim). Make guard.rs tests table-driven over it. Public text calls the guard blocking only for the rows that block.

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

Part of a-claim-stands-only-on-its-evidence — A claim that something is enforced, tested or delivered stands only on recorded evidence that would have caught it being false.

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

Cíl

Write the guard's decision table into docs (server unanswered, policy off, path outside the checkout, local state, no-file tool, own claim, task scope, another session's claim). Make guard.rs tests table-driven over it. Public text calls the guard blocking only for the rows that block.

Proč

On 2026-10-08 (c199#27) the owner's audit asked for an explicit fail-open versus fail-closed policy; the PR that wired the guard admits that writes pass when the server does not answer. On 2026-10-16 (c280#2) an audit found it described as if every unauthorised edit were blocked. This is a public-text-true fix about master's guard and does not wait on I2735 or I2289 (both BLOCKED); I2735 adds rows to the table when it lands. It extends milestone failure-is-visible. Sources: chatgpt-majordomus:c199#27, chatgpt-majordomus:c280#2.

Aktuální stav

I2735 desired_state lists the let-through cases. apps/majordomus-cli/src/guard.rs implements them. A search of docs/ for fail-open finds nothing about the guard.

Cílový stav

One table in the docs; the guard's unit tests iterate it; the mesh guarantee text cites it.

Rozsah

  • apps/majordomus-cli/src/guard.rs
  • docs/MESH.md
  • docs/CLAIMS.yaml
  • .ai/repo/rules/project/work-is-claimed-before-it-is-built.v1.md

Mimo rozsah

  • Changing fail-open to fail-closed (open question for the owner)

Závislosti

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

Kritéria přijetí

  • Every row of the table has a test of the same name
  • No public sentence says every unclaimed edit is refused
  • The table states the decisions guard.rs makes on master at the commit the issue starts from; I2735 adds rows when it lands

Validace

  • cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib guard
  • cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test guard_hook
  • MJ_TEST_JOBS=4 bash test/run.sh 3069_an_edit_no_claim_covers_is_refused

Požadované důkazy

  • guard_contract_table_tested

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

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