type: meta

topic: P0 of autonomy epic — test/chaos fault-injection harness + chaos adapter per spec/CHAOS-SUITE.md

exec_mode: ship

scheduler: sequential

land_mode: merge-to-main

base_branch: main

gate0_mode: strict

status_enum: BLOCKED PENDING WORKING WRITTEN REVIEWED COMMITTED

truth_rule: this file is ground truth for INTENT (goals/task list); git is ground truth for DONE-NESS — reconcile statuses against git, never trust a COMMITTED line with no commit

report_rule: at session end emit brief: done / blocked / deferred / canceled


type: goal

text: executable chaos acceptance harness: fault-injecting wrapper + scenario runner + all C1-C15 scenarios authored with phase-gated assertions; ungated set green against existing engine


type: anchor

what: canonical spec — wrapper vocabulary, scenario format, assertions, phase gate map


what: READ FIRST — identity model, invariants, working protocol


what: plan — pinned per-task contracts (### Task N)


type: task

seat: coder

tier: medium

desc: chaos wrapper test/chaos/wrappers/chaos.sh — wrapper-contract-conformant, CHAOS_* env fault vocabulary per spec/CHAOS-SUITE.md; no vars = trivially-succeeding agent (plan Task 1)

status: PENDING


desc: scenario runner test/chaos/run.sh + fixture builder test/chaos/lib.sh — declarative scenarios, journal+git assertions only, phase-gated skip support, fail-closed on unknown keys (plan Task 2)


tier: low

desc: register chaos preset in presets/adapters.json; dialect must exist in events.schema enum; presets/_validate.mjs green (plan Task 3)

blocker: waiting on w1.t1


tier: high

desc: author ALL scenarios C1-C15 from spec/CHAOS-SUITE.md verbatim (spec is test source); currently-ungated assertions must PASS against existing engine, later-phase assertions marked gated (plan Task 4)

blocker: waiting on wave 1


desc: wire chaos suite into run-tests.sh; full suite green, zero unexplained warnings (plan Task 5)

blocker: waiting on w2.t2