Archived — see roadmap.md for live planning¶
This file is preserved as a historical audit trail of what was deferred at the close of Phase 10 (the plugin-audit pass). The live forward-planning source of truth has moved to
docs/roadmap.md(version × theme organized; evolves continuously).Every deferred item below (P11-XX-XN, 56 live) has been re-homed in the roadmap with its original ID preserved. The 7 cross-cutting themes are also carried over. Use this file only to understand the Phase 10 audit context and per-critic grouping. For "what's planned next", read
roadmap.md.
Phase 11 backlog (and beyond)¶
Source: Phase 10 audit Audit date: 2026-05-26 Auditors: agent-critic, skill-critic, hook-critic, mcp-critic, structure-critic (fakoli-crew v2.1.0) Subject: anvil v1.9.0 (post Phase 10 MUST-FIX welder pass) Companion: phase-9-backlog.md (v2.x roadmap + earlier carry-forward)
This file catalogs the 57 deferred items from the Phase 10 plugin audit — every finding the five critics raised at SHOULD FIX, CONSIDER, or NIT severity. The 8 MUST FIX items are closed under Phase 10 T2–T6 welder tasks and are not duplicated here.
Update (Phase 10 release prep, 2026-05-26): 1 item from the catalog has been
closed as a bonus during Phase 10 — see P11-SK-S5 below ([CLOSED in Phase 10
Fix #6]). Net live count: 56 deferred (24 SHOULD FIX | 21 CONSIDER | 11 NIT).
The summary tables below reflect the original 57-item audit baseline for
provenance; the live count is tracked here.
Status legend: items default to Phase 11 unless explicitly deferred further.
Cross-cutting batch fixes are surfaced under Cross-cutting themes below.
Summary¶
57 deferred items total: 25 SHOULD FIX | 21 CONSIDER | 11 NIT.
| Critic | SHOULD FIX | CONSIDER | NIT | Total |
|---|---|---|---|---|
| agent-critic | 5 | 4 | 1 | 10 |
| skill-critic | 9 | 6 | 4 | 19 |
| hook-critic | 3 | 5 | 3 | 11 |
| mcp-critic | 4 | 3 | 2 | 9 |
| structure-critic | 4 | 3 | 1 | 8 |
| Totals | 25 | 21 | 11 | 57 |
Per-critic detail anchors in the source audit: agent-critic · skill-critic · hook-critic · mcp-critic · structure-critic.
Suggested Phase 11 scope¶
Two viable execution shapes — user picks:
Option A — five sub-phases (one per critic). Each critic's deferred set becomes its own welder pass with cohesive expertise. The skill-critic batch (19 items) is largest and benefits most from concentration; the structure-critic batch (8 items) is the cheapest standalone closeout. Total: 5 sub-phases.
Option B — single Phase 11 with welder fan-out. One planner pass scopes all 57 items into one Phase 11 plan; planner dispatches up to 5 welders in parallel, each scoped to one critic's findings. Total: 1 phase, ~5 parallel welder tasks.
Recommended: Option B with carve-outs. The four "no-fuzzy-detection" SHOULD FIX items (skill-critic) and the six "non-empty actor" SHOULD FIX items (mcp-critic) are mechanical copy-paste fixes that one welder can close in a single hour. The remaining work has more design surface and benefits from focused passes. See Cross-cutting themes for batching opportunities.
All NIT items can be picked up opportunistically by any welder touching the file for a higher-severity reason — no dedicated pass needed.
Items by critic¶
agent-critic deferred items¶
SHOULD FIX¶
- P11-AG-S1 ·
agents/critic.md:12-22— Description has only 1<example>block (rubric floor 2; convention 3). Action: add 2 more<example>blocks: one for fakoli-crew fallback path, one for SHOULD-FIX-only verdict. Each needs its own<commentary>. Target: Phase 11. - P11-AG-S2 ·
agents/planner.md:12-40— Description has only 2<example>blocks; below 3-example fakoli-crew convention. Action: add a third example covering re-planning after PRD rejection / incremental conflict. Target: Phase 11. - P11-AG-S3 ·
agents/sentinel.md:12-19— Description has only 1<example>block AND example lacks<commentary>. Action: add 2 more examples +<commentary>to every example covering (a) standalone fallback, (b) merge-with-fakoli-crew:sentinel scorecards, (c) FAIL path with conflicting evidence. Target: Phase 11. - P11-AG-S4 ·
agents/sentinel.md:23-28—allowed-tools:used instead oftools:(graded SHOULD because tool list coincides with read-only needs). Action: rename key totools:. Target: Phase 11. Reviewer may upgrade to MUST FIX for systemic consistency with the five Phase 10 MUST FIX agents. - P11-AG-S5 ·
agents/sentinel.md:1-103— File is 103 lines — at proportionality floor; missing Composition, Inputs, "NOT" boundary, Status File Output sections. Action: expand to ~140-180 lines mirroring critic.md structure. Target: Phase 11.
CONSIDER¶
- P11-AG-C1 ·
agents/docs-scribe.md:1-366— 366 lines (near 400 ceiling); ~60 lines duplicate marketplace-scribe.md and state-keeper.md composition prose. Action: extract shared "three doc/state specialists" composition intodocs/specs/internal-agents.md; link from all three agents. Target: Phase 11 (batch with C2/C3). - P11-AG-C2 ·
agents/marketplace-scribe.md:1-308— Same composition duplication (lines 144-161, 292-308). Action: same as C1. Target: Phase 11. - P11-AG-C3 ·
agents/state-keeper.md:1-293— Same duplication pattern (lines 94-107 restate fakoli-crew composition). Action: same as C1. Target: Phase 11. - P11-AG-C4 ·
agents/planner.md:76-80— Composition mentions onlyfakoli-crew:guidoas defer-to; missing scout/critic acknowledgment. Action: add a one-line note acknowledging scout for codebase recon OR explicit "out of planner's responsibility". Target: Phase 11.
NIT¶
- P11-AG-N1 ·
agents/sentinel.md:103— Missing trailing newline. Action: add trailing newline. Target: Phase 11 (drive-by during P11-AG-S3/S4/S5).
skill-critic deferred items¶
SHOULD FIX¶
- P11-SK-S1 ·
skills/execute/SKILL.md:8,15,256— Fuzzy detection forfakoli-flow:execute— no shell check. Action: add Step 0claude plugin list 2>/dev/null | grep -q "fakoli-flow"; branch on exit code; document fall-through. Mirror start-prd/SKILL.md:48. Target: Phase 11 (batch with S2/S3/S4/S5/S6 — see no-fuzzy-detection theme). Note: the grep pattern must NOT use a leading^anchor —claude plugin listindents each row with❯so the anchored form never matches. - P11-SK-S2 ·
skills/finish/SKILL.md:8,245-246— Fuzzy detection forfakoli-flow:finish. Action: add explicitclaude plugin list 2>/dev/null | grep -q "fakoli-flow"check at top of Step 1 (no^anchor — see S1 note). Target: Phase 11. - P11-SK-S3 ·
skills/claim/SKILL.md:15,250— Fuzzy detection forfakoli-flowandfakoli-crew:welder/scout. Action: wrap each "when X is installed" section inclaude plugin list 2>/dev/null | grep -q "fakoli-..."check (no^anchor) or move prose toreferences/composition.md. Target: Phase 11. - P11-SK-S4 ·
skills/finish/SKILL.md:177-212— Fuzzy detection for sync provider availability — Step 5 prose-only "if configured" with no shell checks. Action: replace prose withtest -n "$GITHUB_REPOSITORY",gh auth status >/dev/null 2>&1,anvil sync github --health. Target: Phase 11. - P11-SK-S5 ·
skills/finish/SKILL.md:247-252— Fuzzy detection forfakoli-crew:sentinel— no shell check. Action: addclaude plugin list 2>/dev/null | grep -q "fakoli-crew"gate. Target: ~~Phase 11~~ [CLOSED in Phase 10 Fix #6] — welder closed this as a bonus while fixing the dangling/anvil:sentinelslash-command reference at the same lines. The closure: removed the broken slash-command snippet entirely AND added theclaude plugin list 2>/dev/null | grep -q "fakoli-crew"shell gate (mirroring start-prd/SKILL.md:48), with explicit branches for exit-0 (dispatch fakoli-crew:sentinel) vs non-zero (fall through to plugin-local sentinel agent). The PR-B fix-cycle subsequently dropped the^anchor from this pattern once it was discovered thatclaude plugin listindents each row (so^fakoli-...never matched). Seedocs/plans/agent-welder-t11-status.md§ "Fix 6 approach" for the welder's full decision rationale. - P11-SK-S6 ·
skills/start-prd/SKILL.md:194-197— Fuzzy detection for LLM availability — notest -n "$ANTHROPIC_API_KEY"check. Action: add explicit shell check; document branches; or move toreferences/llm-augmentation.md. Target: Phase 11. - P11-SK-S7 ·
skills/state-ops/SKILL.md:119-132— Phase-availability tables contradict execute/SKILL.md —anvil conflicts"pending" here but "available" there. Action: reconcile phase tables across skills; consider singlereferences/phase-status.md. Target: Phase 11 (batch with S8 — see phase-status-drift theme). - P11-SK-S8 ·
skills/state-ops/SKILL.md:67-96— Steps 2 and 3 labeled "Phase 3 — pending" but every other skill useslist/showas available. Action: update Steps 2/3/4/5 to "available" matching rest of plugin. Target: Phase 11. - P11-SK-S9 ·
skills/state-ops/SKILL.md:1-4— Description is longest in plugin (60+ words), weak trigger phrase; missing real user phrasings. Action: add concrete trigger phrases in quotes ("show project status", "list ready tasks", "what's blocking T012", "are there file conflicts", "show me active claims"); trim capability list. Target: Phase 11.
CONSIDER¶
- P11-SK-C1 · All 7
SKILL.mdfiles — Noreferences/,examples/, orscripts/subdirectories; bodies bundle phase-status tables and composition prose. Action: extract toreferences/phase-status.md,references/composition.md, etc. Closes ~20-30% of SKILL.md body weight. Target: Phase 11 (high leverage — closes S7/S8 simultaneously). - P11-SK-C2 ·
skills/start-prd/SKILL.md:70-110— Six-question discipline explicit but stopping rule "material" is interpretive. Action: add concrete stopping rule — max 1 follow-up if under 5 words, never chain more than 8 total. Target: Phase 11. - P11-SK-C3 ·
skills/plan/SKILL.md:107-137— Step 3 documents Phase 7 limitation as 4-step workflow buried in paragraph. Action: promote to### Step 3a — Author subtasks manuallyblock or extract toreferences/manual-task-expansion.md. Target: Phase 11. - P11-SK-C4 ·
skills/prd/SKILL.md:76-84— Step 1 lacks explicit one-question-per-message discipline (weaker than start-prd). Action: mirror start-prd — "Ask one question per message. Wait for the answer before asking the next." Bound the topic count. Target: Phase 11. - P11-SK-C5 ·
skills/execute/SKILL.md:70-84— Step 2 abort flow happens after packet fetch — dishonest agent skips it. Action: move Step 2 ahead of packet fetch OR merge into Step 1; make ambiguous-criteria detection a precondition for Step 3. Target: Phase 11. - P11-SK-C6 ·
skills/finish/SKILL.md:109-116—--reasonrequirement forapply --rejectburied in prose. Action: promote requirement to callout at top of section. Target: Phase 11.
NIT¶
- P11-SK-N1 ·
skills/start-prd/SKILL.md:228— Phase 7 Notes table cell has\|escape that may render literally. Action: use HTML entity|in code span or rephrase. Target: Phase 11 (drive-by). - P11-SK-N2 ·
skills/claim/SKILL.md:138-143— Example ISO timestamp drifts vs execute/SKILL.md:121 (2026-05-24vs2026-05-25). Action: pick one wall-clock date or use placeholder<ISO_TIMESTAMP>. Target: Phase 11 (drive-by). - P11-SK-N3 ·
skills/state-ops/SKILL.md:22— "State-ops is NOT for" sentence repeats 4x in one paragraph. Action: format as bulleted "Do not use this skill for:" list. Target: Phase 11 (drive-by during P11-SK-S9). - P11-SK-N4 ·
skills/prd/SKILL.md:200-215— Phase 3 Limitations section duplicates content at lines 39-46. Action: delete one table or merge columns. Target: Phase 11 (drive-by).
hook-critic deferred items¶
SHOULD FIX¶
- P11-HK-S1 ·
hooks/check-claim.sh:36-59— Hot-path perf budget violation — spawnspython3twice (100-300ms) on every Edit/Write/NotebookEdit; exceeds declared 200ms. Action: consolidate into singlepython3 -cprinting both fields; mirrorrecord-file-change.sh:35-58pattern. Target: Phase 11. - P11-HK-S2 ·
hooks/record-file-change.sh:95-106— Hot-path perf budget violation —_escape_json()spawns 4python3instances on fallback path; 5-6 total spawns. Action: move JSON escaping into original extractionpython3block (line 35); emit pre-escaped values. Target: Phase 11. - P11-HK-S3 ·
README.md/ newhooks/README.md— Non-blocking contract undocumented at plugin/doc level; future maintainer will reintroduceset -e. Action: add hook-contract section tohooks/README.md(new) ordocs/hooks.md(new) or README "Hooks" row. Single-paragraph copy: "All anvil hooks are non-blocking: mustexit 0regardless of internal failure, must not useset -e/set -u/set -o pipefail, must wrap CLI calls with|| true, and must complete in < 200ms on hot events. SessionStart hook may take up to 1s." Target: Phase 11. High-leverage — single fix closes the documentation gap.
CONSIDER¶
- P11-HK-C1 ·
hooks/capture-evidence.sh:232+hooks/record-file-change.sh:113— Race-prone append on shared files (events.jsonl,orphan.json); JSON records can exceed PIPE_BUF when STDOUT_EXCERPT is near MAX_EXCERPT=4000. Action: addflockguard OR document at-most-rare interleave and have replay tolerate truncation. Target: Phase 11 or deferred to v2.x sync-hardening pass. - P11-HK-C2 · All four
.shfiles (2>/dev/nullthroughout) — No diagnostic fallback when hook silently fails; no production trail at 3am. Action: supportANVIL_HOOK_DEBUG=1env var redirecting stderr to.anvil/.hook-debug.log(or${TMPDIR}). One-line wrapper at top of each hook. Target: Phase 11. - P11-HK-C3 ·
hooks/detect-state.sh:29—$("$CLI" status --hook-format 2>&1)merges stderr into status line shown to Claude. Action: drop2>&1; capture stdout only on success branch; capture stderr separately for diagnostic-fallback branch on lines 36-39. Target: Phase 11. - P11-HK-C4 ·
hooks/capture-evidence.sh:27+hooks/check-claim.sh:17+hooks/record-file-change.sh:14— Implicit assumption hook cwd is project root via relativeSTATE_DIR=".anvil". Action: replace withSTATE_DIR="${CLAUDE_PROJECT_DIR:-$PWD}/.anvil"in all three hooks. Target: Phase 11. - P11-HK-C5 ·
hooks/detect-state.sh:14-20— Language detection uses sequential overwrites — last match wins; polyglot projects mislabeled. Action: either emit comma-joined list OR guard each line with[ "$DETECTED_LANG" = "unknown" ]. Target: Phase 11. Note: same logic exists infakoli-flow/hooks/detect-context.sh— consider cross-plugin coordination.
NIT¶
- P11-HK-N1 ·
hooks/record-file-change.sh:55-57— Threeprintf … | sed -n 'Np'invocations; eachsedis a fork. Action: replace with singleread/mapfileover captured output. Target: Phase 11 (drive-by during P11-HK-S2). - P11-HK-N2 ·
hooks/check-claim.sh:95—>/dev/null || truediscards CLI stdout; future structured JSON warning silently dropped. Action: add inline comment cross-referencing CLI subcommand contract docs. Target: Phase 11 (drive-by during P11-HK-S1). - P11-HK-N3 ·
hooks/capture-evidence.sh:119-128— Hardcoded verification-command pattern list; Phase 6+ TODO already flagged. Action: track as deferred config-driven matcher; no change in this audit. Target: deferred (v2.x or aligned withtech-debt-backlog.mdCL-10).
mcp-critic deferred items¶
SHOULD FIX¶
- P11-MC-S1 ·
bin/src/anvil/mcp_server.py:459-464,526-530,572-576,679-684,733-741,972-977— All 6 mutating tools accept actor as plainstrwith no non-empty validation; empty actor persists into audit trail at every emitted event (claim.created,progress.noted,evidence.submitted,task.status_changed,claim.released,claim.renewed). Action: add_require_actor(name: str, field: str = "actor") -> strhelper near_resolve_state_dir; call as first line of every mutating tool body. Target: Phase 11. Highest forensics-criticality; single helper closes 6 sites. - P11-MC-S2 ·
bin/src/anvil/mcp_server.py:327-332—list_tasks.status: str | Nonenot constrained — typo like"in-progress"or"DONE"returns silently empty list. Action: replace withLiteral["proposed","drafted","reviewed","ready","claimed","in_progress","blocked","needs_review","accepted","done","rejected"] | NonematchingTaskCountsByStatusfields verbatim. Target: Phase 11. - P11-MC-S3 ·
bin/src/anvil/mcp_server.py:327-352,360-376,384-450— Return typelist[dict[str, Any]]/dict[str, Any]/dict[str, Any] | Nonestrips field-level schema from Claude's view (3 task-shaped tools —list_tasks,get_task,get_next_task). Action: defineTaskSummaryor reuseTaskPydantic model fromstate.models; dropjson.loads(model_dump_json())shim. Closes P11-MC-N1 simultaneously. Target: Phase 11. - P11-MC-S4 ·
bin/src/anvil/mcp_server.py:384-389—get_next_taskacceptsactorparameter but never uses it — contract lie. Action: removeactorfrom signature. Target: Phase 11. Trivial fix, schema-truthfulness win.
CONSIDER¶
- P11-MC-C1 ·
bin/src/anvil/mcp_server.py:215-221+1-17— Every tool re-resolvesPath.cwd()per call; futureos.chdir()would silently address different project. Action: capture_STATE_DIRat module import as_STATE_DIR = Path.cwd().resolve() / _STATE_DIR_NAME; helpers return cached path. Target: Phase 11. - P11-MC-C2 ·
bin/src/anvil/mcp_server.py:249-257—_reap_staleswallows all exceptions silently; no surfacing inclaude --debugtraces. Action: addlogger.warning("stale-claim reaping failed: %s", exc)inside except; keep swallow contract. Target: Phase 11. - P11-MC-C3 ·
bin/src/anvil/mcp_server.py:105-112—WorkPacketResponse.content: Anyallowed but narrower union possible. Action: switchAny→str | dict[str, Any]. Target: Phase 11.
NIT¶
- P11-MC-N1 ·
bin/src/anvil/mcp_server.py:350,374,448—json.loads(t.model_dump_json())triple-roundtrips data through JSON. Action: replace witht.model_dump(mode="json")or return Pydantic model directly. Closed automatically by P11-MC-S3. Target: Phase 11 (drive-by). - P11-MC-N2 ·
bin/src/anvil/mcp_server.py:162-169+940-945—DependencyEdgeconstructed with**{"from": dep_id, "to": t.id}splat to dodge keyword; future reader will trip. Action: add comment OR switch toDependencyEdge.model_validate({"from": dep_id, "to": t.id}). Target: Phase 11 (drive-by).
structure-critic deferred items¶
SHOULD FIX¶
- P11-ST-S1 ·
README.md:37-48— Install section says "not yet in marketplace" but root.claude-plugin/marketplace.jsoncontains v1.9.0 entry (lines 83-88). Action: replace manual-clone paragraph with/plugin marketplace add fakoli/fakoli-plugins && /plugin install anvil@fakoli-pluginsflow, keeping manual-clone as fallback. Target: Phase 11. - P11-ST-S2 ·
CHANGELOG.md:7-14—[Unreleased]opens with past-tense summary of v1.9.0; content already lives under dated section. Action: trim leading "v1.9.0 closes…" sentence; keep forward-looking v2.x notes (lines 11-14). Target: Phase 11. - P11-ST-S3 ·
.gitignore:7— Coversbin/.pytest_cache/but plugin-root.pytest_cache/not ignored locally; relies on repo-root.gitignore. Action: add.pytest_cache/(nobin/prefix) so rule is local and survives a future repo split. Target: Phase 11. - P11-ST-S4 ·
README.md:17,39,49,190— Internally inconsistent install messaging — 4 different phrasings about "once published". Action: settle on single install story (/plugin install anvil@fakoli-plugins); sweep all 4 sites. Batches with P11-ST-S1. Target: Phase 11.
CONSIDER¶
- P11-ST-C1 ·
README.md(new section near top) — No top-level surface-count table; counts scattered across deep tables. Action: add header table: "ships 6 agents, 7 skills, 4 hooks, 0 commands, 1 CLI, 1 MCP server with 13 tools." Target: Phase 11. - P11-ST-C2 ·
CHANGELOG.md:9-14— Forward-looking v2.x items name LinearIssuesProvider/MondayBoardsProvider/webhooks without issue/PR links. Action: append(see docs/phase-9-backlog.md § "v2.x roadmap" — P9B-1 / P9B-2 / P9B-5)or equivalent anchor links. Target: Phase 11. - P11-ST-C3 ·
README.md:5-7— Minimal badge set (license, version, alpha); no CI / test-count badges. Action: add CI status badge (once live-GitHub nightly workflow public) andtests: 967count badge. Target: Phase 11.
NIT¶
- P11-ST-N1 ·
README.md:132— "Phase 9 (this release, v1.9.0)" parenthetical will stale on v1.10.0 ship. Action: replace with "Phase 9 shipped in v1.9.0" for tense-stability. Target: Phase 11 (drive-by during P11-ST-S1/S4).
Cross-cutting themes (high-leverage)¶
Several deferred items share a single underlying gap. Fixing the theme as a batch is cheaper than item-by-item triage and produces stronger lockstep consistency.
Theme 1 — No-fuzzy-detection rule across skills¶
Closes: P11-SK-S1, P11-SK-S2, P11-SK-S3, P11-SK-S4, ~~P11-SK-S5~~, P11-SK-S6 (originally 6 SHOULD FIX items; 5 live — P11-SK-S5 [CLOSED in Phase 10 Fix #6]).
Pattern: every skill that conditionally bridges to fakoli-flow, fakoli-crew, a sync provider, or LLM augmentation uses prose-only "when X is installed" framing without a claude plugin list 2>/dev/null | grep -q "X" shell check (no ^ anchor — claude plugin list indents each row, so the anchored form never matches). start-prd/SKILL.md:48 and finish/SKILL.md:249-254 are the reference implementations that every other skill should mirror.
Welder effort: ~3 lines per site, 5 sites — single welder pass, ~50 minutes.
Theme 2 — Non-empty actor validation across MCP mutating tools¶
Closes: P11-MC-S1 (1 SHOULD FIX, 6 sites).
Pattern: all 6 mutating MCP tools accept actor: str / claimed_by: str with no .strip() non-empty check; empty actor persists into the audit trail.
Fix shape: single _require_actor(name: str, field: str = "actor") -> str helper near _resolve_state_dir; call as first line of every mutating tool body.
Welder effort: define helper + 6 one-liners — single welder pass, ~30 minutes.
Theme 3 — Hot-path perf budget on hook scripts¶
Closes: P11-HK-S1, P11-HK-S2 (and P11-HK-N1 as drive-by).
Pattern: check-claim.sh spawns python3 twice; record-file-change.sh spawns python3 5-6 times. Each cold python3 spawn is 50-150ms; declared budget is 200ms on hot events. Pattern in record-file-change.sh:35-58 already proves the consolidation works (1 spawn).
Welder effort: consolidate each script's extraction + escaping into single python3 round-trip — ~2 hours per script, 2 scripts.
Theme 4 — Hook contract undocumented at plugin level¶
Closes: P11-HK-S3 (1 SHOULD FIX).
Pattern: the non-blocking contract lives only in script-header comments (3/4 hooks have identical "Rules: no set -e, no piped grep, always exit 0, complete in < 200ms" comments) but is absent from README and docs/. Future maintainer who hasn't read every script will reintroduce set -e and silently break PreToolUse.
Fix shape: new hooks/README.md OR docs/hooks.md section OR README "Hooks" row expansion. Single paragraph.
Welder effort: ~15 minutes.
Theme 5 — Phase-status table drift across skills¶
Closes: P11-SK-S7, P11-SK-S8 (2 SHOULD FIX); enabled by P11-SK-C1 (extract to references/).
Pattern: anvil conflicts is "pending" in state-ops, "available" in execute. list/show are "pending" in state-ops Step 2/3 but available in every other skill. State-ops is the laggard; the plugin is at v1.9.0 / Phase 10 per the brief.
Fix shape: single source of truth at references/phase-status.md (or docs/phase-status.md); skills link to it instead of inlining tables.
Welder effort: create reference doc + update 7 SKILL.md references — ~2 hours.
Theme 6 — Composition duplication across three doc/state agents¶
Closes: P11-AG-C1, P11-AG-C2, P11-AG-C3 (3 CONSIDER).
Pattern: docs-scribe, marketplace-scribe, and state-keeper each carry near-identical "three doc/state specialists inside anvil" composition tables. If the split ever changes, three files need to update in lockstep.
Fix shape: extract to docs/specs/internal-agents.md; agents link to it.
Welder effort: ~1 hour.
Theme 7 — Install messaging drift in README + CHANGELOG¶
Closes: P11-ST-S1, P11-ST-S2, P11-ST-S4, P11-ST-N1 (3 SHOULD FIX + 1 NIT).
Pattern: README has 4 different phrasings about "once published"; CHANGELOG [Unreleased] narrates the just-shipped v1.9.0; README has stale "Phase 9 (this release)" parenthetical. All four are downstream effects of v1.9.0 shipping without a docs-scribe sweep.
Fix shape: single README sweep + CHANGELOG trim. Single docs-scribe pass.
Welder effort: ~1 hour.
Carry-forward from earlier backlogs¶
Reviewed phase-9-backlog.md for items still open after
Phase 9 → 10 work. The Phase 10 audit scope was plugin-dev quality (agents,
skills, hooks, MCP, structure) — it did not address the v2.x roadmap items
(P9B-1..P9B-9) or the carry-forward CL/TQ/PS items from PR #41.
Open from phase-9-backlog.md (not addressed by Phase 10)¶
All items below remain OPEN or TARGETED-V2.x per phase-9-backlog.md and are
not subsumed by any Phase 11 deferred item:
| ID | Title | Status | Notes |
|---|---|---|---|
| P9B-1 | LinearIssuesProvider | OPEN, v2.0 | Sync-provider expansion |
| P9B-2 | MondayBoardsProvider | OPEN, v2.0 | Sync-provider expansion |
| P9B-3 | JiraIssuesProvider | OPEN, v2.1 | Sync-provider expansion |
| P9B-4 | GitHubProjectsProvider | OPEN, v2.1 | Sync-provider expansion |
| P9B-5 | Webhook-based sync | SPEC-FIRST, v2.0 | Needs design doc |
| P9B-6 | Immediate-apply *_applied resolution variants |
TARGETED-V2.0 | Spec'd in agent-welder-honesty-status.md |
| P9B-7 | anvil snapshot subcommand |
OPEN, v2.1 | sqlite3 .backup wrapper |
| P9B-8 | MCP sync tools surface | OPEN, v2.1 | 4 new MCP tools (sync_run/sync_health/sync_status/sync_reconcile) |
| P9B-9 | Provider config schemas in config.yaml |
SPEC-FIRST, v2.0 | Co-required with P9B-1 |
Open from tech-debt-backlog.md (cross-referenced via phase-9-backlog.md)¶
| ID | Source | Status |
|---|---|---|
| CL-1, CL-2, CL-3, CL-4, CL-5, CL-8, CL-10, CL-11, CL-12, CL-13 | PR #41 critics | OPEN |
| TQ-1, TQ-2, TQ-3, TQ-4, TQ-6, TQ-7, TQ-8 | PR #41 Critic-4 | OPEN |
| PS-1 | PR #41 Critic-2 | OPEN |
These items remain owned by tech-debt-backlog.md and are not duplicated into
Phase 11 scope unless a Phase 11 SHOULD FIX naturally touches the same file.
The MCP-critic Phase 10 finding P11-MC-C2 (silent _reap_stale swallow) is
adjacent to CL-3 (_reap_stale_claims bare except) — Phase 11 welder closing
P11-MC-C2 should consider also closing CL-3 in the same patch.
Notes for Phase 11 planner¶
- Phase 10 closes 8 MUST FIX items. Phase 11 picks up where T2-T6 of the Phase 10 plan stops. Do NOT re-grade audit items — the severity is fixed by the auditors' decisions documented in
audits/2026-05-26-plugin-audit.md. - Use Themes 1-7 as task boundaries. Each theme is welder-sized and self-contained. Cross-theme dependencies are minimal: Theme 5 enables better fix shape for Themes 1 (skill SKILL.md hygiene) and 6 (composition extraction), but neither blocks Theme 5.
- NIT items are drive-by work. Do not schedule dedicated NIT tasks. Any welder touching a file for a SHOULD/CONSIDER reason takes its NITs as part of the same patch.
- Severity upgrade candidate: P11-AG-S4 (
agents/sentinel.mdallowed-tools:antipattern) could justifiably move from SHOULD FIX to MUST FIX for consistency with the 5 Phase 10 MUST FIX agent fixes. The auditor (agent-critic) graded it SHOULD because sentinel's tool list happens to coincide with read-only needs. If Phase 11 picks up the whole sentinel.md overhaul (P11-AG-S3 + S5), upgrading S4 to MUST FIX in the same patch costs nothing. - Cross-plugin coordination opportunity: P11-HK-C5 (language detection logic in
hooks/detect-state.sh) mirrorsfakoli-flow/hooks/detect-context.sh. A unified fix across both plugins keeps the detection surface consistent. Coordinate with fakoli-flow maintainer.