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.

I3310 — majordomus start refuses a task, owner or reason that the task record cannot hold, and writes nothing

Refuse at entry, with a usage exit and no write, any task description, --owner or --because value that is multi-line, carries a control character, or would not round-trip through the layer's YAML reader; adr propose, decision add, knowledge observe and question add/resolve already refuse multi-line text through mj_is_multiline.

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

Součást failure-is-visible — Každé selhání, které může runtime potkat, je omezené, testované nebo uvedené a mění zdraví, které hlásí.

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

Cíl

Refuse at entry, with a usage exit and no write, any task description, --owner or --because value that is multi-line, carries a control character, or would not round-trip through the layer's YAML reader; adr propose, decision add, knowledge observe and question add/resolve already refuse multi-line text through mj_is_multiline.

Proč

lib/start.sh:144 and :150 write task, owner and exemption_because into .ai/local/state/current.yaml as double-quoted scalars, escaping the double quote in task and because and nothing in owner, and lib/start.sh never calls mj_is_multiline (lib/common.sh:1788). The layer's YAML reader rejects multi-line scalars (lib/common.sh:767), so a task started with an embedded newline, a trailing backslash or a quote in --owner writes a record that the next check, handover or finish cannot parse. The refusal belongs at the boundary that accepts the text (2026-09-04 archive review). Sources: chatgpt-majordomus:c003#4.

Aktuální stav

At 707a04c, start accepts any argument text. grep -n mj_is_multiline lib/*.sh lists the callers: adr propose, decision add, knowledge observe and question add/resolve refuse multi-line text; lib/start.sh is not among them.

Cílový stav

One shared predicate judges every scalar a task command writes, start applies it to task, owner and because, and a refused start leaves no state behind.

Rozsah

  • lib/start.sh
  • lib/common.sh
  • docs/CLI.md

Mimo rozsah

  • Changing the task record's schema
  • Rewriting existing task records

Závislosti

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

Kritéria přijetí

  • majordomus start with a newline in the task exits with the usage code and writes no current.yaml
  • The same refusal covers --owner and --because
  • A quote, a backslash and a non-ASCII letter in the task are stored and read back unchanged by check
  • A case drives each refusal and each round trip in a disposable repository

Validace

  • bash test/run.sh 04_start_check

Požadované důkazy

  • case_start_refuses_unsafe_scalars

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

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