{ "defects": [ { "id": "D-01", "summary": "commands/trekplan.md still references TeamCreate/TeamDelete (allowed-tools and the execute-with-team path); both tools were removed in Claude Code 2.1.178, so that path always falls back to sequential", "closesWhen": "trekplan.md no longer names TeamCreate or TeamDelete", "probe": "phrase", "check": [ { "path": "commands/trekplan.md", "pattern": "\\bTeam(Create|Delete)\\b", "expect": "match" } ] }, { "id": "D-02", "summary": "commands/trekresearch.md tells the swarm engine to run the `### Bridge agent` block, but that heading was removed together with gemini-bridge", "closesWhen": "the dangling reference is gone (or the heading exists again)", "probe": "phrase", "check": [ { "path": "commands/trekresearch.md", "pattern": "`### Bridge agent`", "expect": "match" }, { "path": "commands/trekresearch.md", "pattern": "^### Bridge agent", "flags": "m", "expect": "no-match" } ] }, { "id": "D-03", "summary": "commands/trekexecute.md never runs a trekplan's `## Verification` (where the brief's success criteria land) on the single-session path: Phase 7 says 'Skip for trekplans', and only the multi-session wave path runs master verification", "closesWhen": "a runnable plan-verification runner exists in lib/ (behaviour probe: it proves the capability exists and is exercised by a test, not that Phase 7 calls it — the wiring is pinned by tests/lib/doc-consistency.test.mjs)", "probe": "behaviour", "check": [ { "path": "lib/**/*.mjs", "pattern": "export function runPlanVerification", "expect": "no-match" } ] }, { "id": "D-04", "summary": "agents/brief-conformance-reviewer.md must judge whether a success criterion's verification command 'exists and passes', but its tools are Read/Glob/Grep, so it cannot run anything", "closesWhen": "the evidence block the conformance reviewer judges is BUILT IN CODE (behaviour probe: it proves /trekreview can hand over a real exit code instead of asking a Read/Glob/Grep agent whether a command passes; the rubric rewrite and the hand-over are pinned by tests/lib/doc-consistency.test.mjs)", "probe": "behaviour", "check": [ { "path": "lib/**/*.mjs", "pattern": "export function formatCriteriaEvidence", "expect": "no-match" } ] }, { "id": "D-05", "summary": "commands/trekplan.md allowed-tools lists TaskCreate/TaskUpdate, which Claude Code 2.1.233 no longer offers on Opus 4.8 / Sonnet 5 / Fable 5 and newer by default (runtime effect not measured)", "closesWhen": "trekplan.md allowed-tools no longer lists TaskCreate or TaskUpdate", "probe": "phrase", "check": [ { "path": "commands/trekplan.md", "pattern": "^allowed-tools:.*\\bTask(Create|Update)\\b", "flags": "m", "expect": "match" } ] }, { "id": "D-06", "summary": "lib/review/gold-scorer.mjs contains a literal NUL byte, so git treats the file as binary and hides it from diffs and --numstat", "closesWhen": "the file contains no NUL byte (write the separator as an escape sequence)", "probe": "byte", "check": [ { "path": "lib/review/gold-scorer.mjs", "pattern": "\\u0000", "expect": "match" } ] }, { "id": "D-07", "summary": "CLAUDE.md, README.md and commands/trekresearch.md claim the /trek* orchestrators run on opus (README even ships a sed recipe for `model: opus` lines no command has), but since v5.9.0 no command pins model: and the orchestrator follows the session model", "closesWhen": "none of the three files claims an opus orchestrator any more, or the commands pin opus again", "probe": "phrase", "check": [ { "path": [ "CLAUDE.md", "README.md", "commands/trekresearch.md" ], "pattern": "(^\\| `/trek[a-z]+` \\|.*\\| opus \\|\\s*$)|(\\^model: opus\\$)|(default for `/trekbrief`[\\s\\S]{0,80}?is `opus`)|(orchestrator runs on Opus)", "flags": "m", "expect": "match" }, { "path": "commands/*.md", "pattern": "^model:", "flags": "m", "expect": "no-match" } ] } ], "experiments": [ { "id": "E-01", "summary": "STORM dimension discovery + bounded research loop ships default-off behind VOYAGE_STORM_ENABLED; adoption is gated on a pre-registered measurement that has not run", "closesWhen": "the env gate is gone from the pipeline surface: adopted as default, or the loop is removed", "probe": "phrase", "check": [ { "path": [ "commands/*.md", "agents/*.md", "lib/**/*.mjs", "hooks/**/*.mjs" ], "pattern": "VOYAGE_STORM_ENABLED", "expect": "match" } ] }, { "id": "E-02", "summary": "`/trekresearch --engine deep-research` delegates to Claude Code's /deep-research, which is manual-only since 2.1.218, so the opt-in always falls back to the swarm", "closesWhen": "the --engine opt-in is removed from trekresearch.md", "probe": "phrase", "check": [ { "path": "commands/trekresearch.md", "pattern": "--engine\\b", "expect": "match" } ] }, { "id": "E-03", "summary": "the delegated-orchestration head-to-head (T1 §5) is designed but has no recorded decision", "closesWhen": "T1 §5 carries a STATUS block (run, or declined)", "probe": "phrase", "check": [ { "path": "docs/T1-cc26-delegated-orchestration.md", "section": "## 5.", "pattern": "^> \\*\\*STATUS:", "flags": "m", "expect": "no-match" } ] } ], "agents": { "dir": "agents", "spawnSites": "commands/*.md", "referenceMarker": "Reference document, not a spawnable capability" }, "decisions": { "file": "STATE.md", "section": "## Åpne operatørbeslutninger", "open": "^- \\[ \\] ", "closed": "^- \\[x\\] " }, "freeze": { "tag": "end-state-freeze", "featPattern": "^feat(\\(|!|:)" } }