From 462bc37497718e44fd361efd61ad2a44647b3251 Mon Sep 17 00:00:00 2001 From: Peter Bruinsma Date: Sun, 3 May 2026 13:45:03 +0000 Subject: [PATCH 1/2] =?UTF-8?q?chore(aiwf):=20catch=20up=20to=20v0.1.1=20?= =?UTF-8?q?=E2=80=94=20config,=20docs,=20tdd=5Fphase=20adoption?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - aiwf.yaml: drop deprecated actor key; pin aiwf_version to v0.1.1 - CLAUDE.md: extend verb list (update/upgrade/show/whoami/authorize, contract subverbs, --audit-only); add provenance/principal note; add tdd_phase Hard Rule for logic-bearing ACs - M-067, M-068: tighten 4 vague AC titles; add tdd_phase: red to logic-bearing open ACs (selective per the new rule) aiwf check: 0 errors; remaining 8 warnings are historical untrailered-commit findings — addressed in a follow-up PR. Co-Authored-By: Claude Opus 4.7 (1M context) --- CLAUDE.md | 5 ++++- STATUS.md | 9 ++++++--- aiwf.yaml | 3 +-- .../M-067-engine-template-alignment.md | 11 +++++++++-- .../M-068-golden-output-canary.md | 10 ++++++++-- 5 files changed, 28 insertions(+), 10 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 44f9ff52..54f46dcf 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -14,6 +14,7 @@ After `/compact` or a fresh session, this file is re-available via the system pr - **NEVER commit or push without explicit human approval** — "continue" / "ok" do not count - **TDD by default** for logic, API, and data code — red → green → refactor +- **TDD phase tracking** — logic-bearing ACs in `draft` and `in_progress` milestones carry a `tdd_phase: red|green|refactor` field, advanced via `aiwf promote M-NNN/AC-N --phase

`. Non-logic ACs (doc-only, gap-closure, full-suite gates, branch-coverage audit, process discipline) omit the field. Every red-tagged AC must reach green before the milestone wraps. - **Branch coverage** — every reachable conditional branch needs a test before declaring done; perform a line-by-line audit before the commit-approval prompt - **Branch discipline** — do NOT commit milestone work directly to `main` - Conventional Commits format: `feat(api):`, `fix(sim):`, `chore:`, `docs:`, `test:`, `refactor:` — no icons/emoji; subject + short bullet body capturing the milestone and key work/tests touched @@ -55,7 +56,9 @@ Role agents ship via the `aiwf-extensions` plugin (loaded into Claude Code from | `work/archived-epics//` | pre-aiwf historical epics (no E-NN id; out of aiwf's walked roots) | | `.claude/skills/aiwf-*/` | gitignored, materialized by `aiwf init` / `aiwf update` | -`aiwf` verbs: `init`, `add `, `promote`, `cancel`, `rename`, `reallocate`, `move`, `check`, `history`, `status`, `render roadmap`, `doctor`, `import`, `schema`, `template`, `contract verify`. Run `aiwf help` for the full list. Don't edit entity frontmatter status by hand — use `aiwf promote` so the FSM check + commit trailer happen. +`aiwf` verbs: `init`, `update`, `upgrade`, `add `, `promote`, `cancel`, `rename`, `reallocate`, `move`, `check`, `history`, `status`, `show `, `render roadmap`, `doctor`, `import`, `schema`, `template`, `whoami`, `authorize`, `contract verify|bind|unbind|recipes|recipe show|recipe install|recipe remove`. Run `aiwf help` for the full list. Don't edit entity frontmatter status by hand — use `aiwf promote` so the FSM check + commit trailer happen. Use `aiwf promote/cancel --audit-only --reason "..."` to backfill an audit trail for a state already reached via a manual commit (empty-diff audit commit, no FSM transition). + +Provenance: human verbs need no extra flags. Non-human actors (ai/..., bot/...) must pass `--principal human/` and operate inside an active `aiwf authorize --to ` scope; the kernel adds `aiwf-principal:`, `aiwf-on-behalf-of:`, and `aiwf-authorized-by:` trailers automatically. `aiwf authorize` is human-only. Tracking docs (per the `aiwfx-track` skill) are advisory free-form markdown alongside a milestone spec; not aiwf entities, not validated. Older `*-log.md` / `*-tracking.md` files in `work/archived-epics/` are pre-aiwf residue. diff --git a/STATUS.md b/STATUS.md index 49579c55..bbe6acac 100644 --- a/STATUS.md +++ b/STATUS.md @@ -1,6 +1,6 @@ -# aiwf status — 2026-05-02 +# aiwf status — 2026-05-03 -_171 entities · 0 errors · 0 warnings_ +_171 entities · 0 errors · 2 warnings · run `aiwf check` for details_ ## In flight @@ -80,7 +80,10 @@ _(none)_ ## Warnings -_(none)_ +| Code | Entity | Path | Message | +|------|--------|------|---------| +| acs-title-prose | M-067/AC-9 | work/epics/E-25-engine-truth-gate/M-067-engine-template-alignment.md | M-067/AC-9 title looks like prose (long / multi-sentence / contains markdown); shorten the title and move detail prose into the body section under \`### AC-9\` | +| acs-title-prose | M-068/AC-14 | work/epics/E-25-engine-truth-gate/M-068-golden-output-canary.md | M-068/AC-14 title looks like prose (long / multi-sentence / contains markdown); shorten the title and move detail prose into the body section under \`### AC-14\` | ## Recent activity diff --git a/aiwf.yaml b/aiwf.yaml index 4230ca22..a95b6fe1 100644 --- a/aiwf.yaml +++ b/aiwf.yaml @@ -1,2 +1 @@ -aiwf_version: dev -actor: human/peter +aiwf_version: v0.1.1 diff --git a/work/epics/E-25-engine-truth-gate/M-067-engine-template-alignment.md b/work/epics/E-25-engine-truth-gate/M-067-engine-template-alignment.md index 802301be..d23df9ec 100644 --- a/work/epics/E-25-engine-truth-gate/M-067-engine-template-alignment.md +++ b/work/epics/E-25-engine-truth-gate/M-067-engine-template-alignment.md @@ -6,31 +6,38 @@ parent: E-25 depends_on: [M-066] acs: - id: AC-1 - title: Engine reflects the m-E25-01 chosen authority + title: Engine reflects the authority chosen in M-066 status: open + tdd_phase: red - id: AC-2 title: Affected shipped templates edited under default parameters status: open + tdd_phase: red - id: AC-3 title: ExpectedRunWarnings entries reset to zero status: open + tdd_phase: red - id: AC-4 title: Engine + template + baseline reset land in coordinated commits status: open - id: AC-5 title: val-warn delta gate added alongside existing run-warn gate status: open + tdd_phase: red - id: AC-6 title: Both survey gates green simultaneously status: open + tdd_phase: red - id: AC-7 title: No coexistence of old and new authority paths status: open + tdd_phase: red - id: AC-8 title: edge_flow_mismatch warnings are zero across shipped templates status: open + tdd_phase: red - id: AC-9 - title: TDD red-green for engine change + title: Engine change is introduced via a failing test first; the same test passes in the commit that lands the engine change status: open - id: AC-10 title: Branch coverage on val-warn delta gate diff --git a/work/epics/E-25-engine-truth-gate/M-068-golden-output-canary.md b/work/epics/E-25-engine-truth-gate/M-068-golden-output-canary.md index 7f9f4d70..2a921f22 100644 --- a/work/epics/E-25-engine-truth-gate/M-068-golden-output-canary.md +++ b/work/epics/E-25-engine-truth-gate/M-068-golden-output-canary.md @@ -8,27 +8,33 @@ acs: - id: AC-1 title: Canary infrastructure lands as a sibling test class status: open + tdd_phase: red - id: AC-2 title: Fixture serialization format chosen and documented status: open - id: AC-3 - title: Per-fixture directory layout and README + title: Per-fixture directory layout documented in docs/testing/golden-output-canary.md status: open - id: AC-4 title: Numeric tolerance documented and applied status: open + tdd_phase: red - id: AC-5 title: Initial pinning across all 12 shipped templates status: open + tdd_phase: red - id: AC-6 title: Coverage equivalence with Survey_Templates_For_Warnings enforced status: open + tdd_phase: red - id: AC-7 title: Sanctioned regeneration workflow exists and is documented status: open + tdd_phase: red - id: AC-8 title: Deliberate-perturbation failure-mode test fires status: open + tdd_phase: red - id: AC-9 title: docs/testing/golden-output-canary.md committed status: open @@ -45,7 +51,7 @@ acs: title: G-033 closes status: open - id: AC-14 - title: Epic closure housekeeping complete + title: Epic E-25 spec references docs/testing/golden-output-canary.md as the canary contract status: open --- From 3d03b88bce3be62c3a2bc2eb309cf96af592ac3e Mon Sep 17 00:00:00 2001 From: Peter Bruinsma Date: Sun, 3 May 2026 15:18:16 +0000 Subject: [PATCH 2/2] chore(aiwf): clear acs-title-prose findings; sync body headings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - M-067/AC-9: revert title to "TDD red-green for engine change" (body section already covers the cycle in detail) - M-068/AC-14: revert title to "Epic closure housekeeping complete" (body section already enumerates aiwf promote/wrap.md/ROADMAP regen) - M-067 body L72: sync AC-1 heading to match new frontmatter title (m-E25-01 → M-066) - M-068 body L84: sync AC-3 heading to match new frontmatter title (...and README → ...documented in golden-output-canary.md) aiwf check: 0 findings. Co-Authored-By: Claude Opus 4.7 (1M context) --- STATUS.md | 7 ++----- .../M-067-engine-template-alignment.md | 4 ++-- .../E-25-engine-truth-gate/M-068-golden-output-canary.md | 4 ++-- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/STATUS.md b/STATUS.md index bbe6acac..eb727240 100644 --- a/STATUS.md +++ b/STATUS.md @@ -1,6 +1,6 @@ # aiwf status — 2026-05-03 -_171 entities · 0 errors · 2 warnings · run `aiwf check` for details_ +_171 entities · 0 errors · 0 warnings_ ## In flight @@ -80,10 +80,7 @@ _(none)_ ## Warnings -| Code | Entity | Path | Message | -|------|--------|------|---------| -| acs-title-prose | M-067/AC-9 | work/epics/E-25-engine-truth-gate/M-067-engine-template-alignment.md | M-067/AC-9 title looks like prose (long / multi-sentence / contains markdown); shorten the title and move detail prose into the body section under \`### AC-9\` | -| acs-title-prose | M-068/AC-14 | work/epics/E-25-engine-truth-gate/M-068-golden-output-canary.md | M-068/AC-14 title looks like prose (long / multi-sentence / contains markdown); shorten the title and move detail prose into the body section under \`### AC-14\` | +_(none)_ ## Recent activity diff --git a/work/epics/E-25-engine-truth-gate/M-067-engine-template-alignment.md b/work/epics/E-25-engine-truth-gate/M-067-engine-template-alignment.md index d23df9ec..2cfbccd9 100644 --- a/work/epics/E-25-engine-truth-gate/M-067-engine-template-alignment.md +++ b/work/epics/E-25-engine-truth-gate/M-067-engine-template-alignment.md @@ -37,7 +37,7 @@ acs: status: open tdd_phase: red - id: AC-9 - title: Engine change is introduced via a failing test first; the same test passes in the commit that lands the engine change + title: TDD red-green for engine change status: open - id: AC-10 title: Branch coverage on val-warn delta gate @@ -69,7 +69,7 @@ The `val-warn` delta gate is a small extension to the existing test: track valid ## Acceptance criteria -### AC-1 — Engine reflects the m-E25-01 chosen authority +### AC-1 — Engine reflects the authority chosen in M-066 The engine code change implements the authority specified in `D-NNN (the m-E25-01 outcome)`. The cited decision id is filled into this spec, into the implementing PR's description, and into the relevant code comments at the changed sites in `src/FlowTime.Core/`. The change is *exactly* what the decision authorizes — no opportunistic refactoring of `InvariantAnalyzer`, no conservation-tolerance reshaping, no new analyser warning families. Per the epic's "Out of scope" — engine evolution beyond what the design call requires belongs to other epics. diff --git a/work/epics/E-25-engine-truth-gate/M-068-golden-output-canary.md b/work/epics/E-25-engine-truth-gate/M-068-golden-output-canary.md index 2a921f22..5b99cf49 100644 --- a/work/epics/E-25-engine-truth-gate/M-068-golden-output-canary.md +++ b/work/epics/E-25-engine-truth-gate/M-068-golden-output-canary.md @@ -51,7 +51,7 @@ acs: title: G-033 closes status: open - id: AC-14 - title: Epic E-25 spec references docs/testing/golden-output-canary.md as the canary contract + title: Epic closure housekeeping complete status: open --- @@ -81,7 +81,7 @@ A new test class lives in `tests/FlowTime.Integration.Tests/` (sibling to `Templ The canary's fixture serialization format is decided inside this milestone and documented in `docs/testing/golden-output-canary.md`. The decision honors the epic Constraint: *fixtures produce reviewable PR diffs*. JSON-with-stable-key-order is the strawman; alternatives (CSV+JSON-warnings, separate-file-per-series, etc.) are acceptable if reviewability is preserved and the choice is justified. The format choice is recorded in the testing note with a short rationale paragraph. -### AC-3 — Per-fixture directory layout and README +### AC-3 — Per-fixture directory layout documented in `docs/testing/golden-output-canary.md` Each pinned template gets a directory at `tests/fixtures/golden-templates//` containing the serialized fixture (per AC-2's chosen format) plus a `README.md` naming **the parameter set used at capture, the capture date, the capture commit hash**. The README is human-readable and stands alone — a future engineer browsing the fixtures directory understands what each fixture pins without external context. The directory naming uses the same `` convention as the survey canary's enumeration.