kh-sdlc-workflow — Open Questions
kh-sdlc-workflow — Open Questions
Section titled “kh-sdlc-workflow — Open Questions”RETIRED (S491): Open-questions ratification surface for
kh-sdlc-workflow.md, which was itself archived W4b (superseded by the no-planner Intent workflow, DR-089). Archived with its parent per owner ruling. Retained for historical context only.
Provenance
Section titled “Provenance”- Inputs:
- T1 →
docs/plans/phase-0-investigation/kh-sdlc-workflow-feedback-structured.md(48 Qs raised) - T2 →
docs/reference/skill-interaction-matrix.md(empirical answers + 10 net-new gaps; moved + stripped to reference doc in S49 ID-6 — narrative analysis and gap list retained in git history at the old pathdocs/plans/phase-0-investigation/skill-interaction-matrix.md) - T3 →
docs/reference/taskmaster-schema-reference.md(TM schema reality + 3 hand-decomp discrepancies) - T4 →
docs/plans/phase-0-investigation/session-driver-cmux-divergence.md(cmux fork-state + 1 latent bug) - Original feedback (preserved):
docs/plans/phase-0-investigation/kh-sdlc-workflow-feedback.md
- T1 →
- This doc: the single ratification surface. Liam works through this; once each Q has a decision,
kh-sdlc-workflow.mdis re-authored against those decisions.
How to read
Section titled “How to read”- Status — one of:
ANSWERED— empirical research (T2/T3/T4) produced a defensible default; Liam can override or rubber-stamp.OPEN— Liam decision required; no empirical default available.BLOCKED-LIAM— needs Liam input to unblock.BLOCKED-EXTERNAL— needs external precondition (updated specs, new skill, etc.).
- Severity —
BLOCKER(workflow can’t be finalised without this) /HIGH(workflow degrades materially if punted) /MEDIUM(sensible default exists) /LOW(nice-to-have, defer). - Recommended next action — concrete next step for Liam (or pre-condition that unblocks it).
Decision priority (recommended order for ratification)
Section titled “Decision priority (recommended order for ratification)”- Section 2 BLOCKERs first — terminology, role set, lifecycle phase ordering, dispatch entry pattern. Nothing else can land until these are decided.
- Section 1 ANSWERED items — rubber-stamp or override; quick.
- Section 3 NEW gaps — decide which to fill, defer, or accept as-is.
- Section 4 BLOCKED items — re-anchor in S49 once preconditions clear.
Section 1 — ANSWERED by empirical research
Section titled “Section 1 — ANSWERED by empirical research”A1. Implementation-family skills (T2 §A)
Section titled “A1. Implementation-family skills (T2 §A)”Resolves: Q-EXEC-SKILLS-1, Q-ORCH-SKILLS-3, Q-PLANNER-SKILLS-2
Empirical finding (T2 §A, skill-interaction-matrix:75-79): the four skills are NOT peers — they compose at four altitudes:
| Altitude | Skill | Invoked by |
|---|---|---|
| Project (per-feature) | spec-driven-implementation | Orchestrator (decides if specs needed) |
| Feature (per-WP) | implement-specs | Executor (entry point for spec-aware work) |
| Slice (per-file-cluster) | incremental-implementation | Executor (internally per slice) |
| Behaviour (per-function) | test-driven-development | Executor (internally per behaviour) |
Default to ratify:
- Orchestrator owns
spec-driven-implementationat session start when AUTHOR mode (F3-3) detected. - Executor’s entry skill per implementation subtask =
implement-specs. It internally callsplanning-and-task-breakdownif large, thenincremental-implementationper slice, thentest-driven-developmentper behaviour. implement-specsis NOT redundant in task-driven model — it’s the spec-anchoring composer.test-driven-developmentshowing up in Planner’s Spec-authoring phase (F4-3) is reinterpretable as “TDD-shaped spec writing” (test cases enumerated in PRODUCT.md Behavior invariants — whichwrite-product-spec:72-95already mandates).
Status: ANSWERED. Severity: HIGH. Next action: Liam rubber-stamps or overrides.
A2. Spec-authoring chain (T2 §B)
Section titled “A2. Spec-authoring chain (T2 §B)”Resolves: Q-ORCH-SKILLS-3 (cross-reference with A1)
Empirical finding (T2 §B, spec-driven-implementation:80-124): spec-driven-implementation explicitly composes write-product-spec → write-tech-spec → implement-specs sequentially. Each handoff is an explicit skill invocation (no auto-firing). Sub-skills are independently invocable.
Default to ratify:
- Planner subtasks
{N.2}(PRODUCT.md) and{N.3}(TECH.md) per F3-4 invokewrite-product-specandwrite-tech-specdirectly — NOT viaspec-driven-implementation. spec-driven-implementationitself fires only when Orchestrator confirms AUTHOR mode at session start AND specs don’t yet exist. From then on, the chain is decomposed into the subtask sequence and individual sub-skills are called per subtask.
Status: ANSWERED. Severity: MEDIUM. Next action: Liam confirm.
A3. Quality-review ordering (T2 §C)
Section titled “A3. Quality-review ordering (T2 §C)”Resolves: Q-CHECKER-ORDER-1, partial Q-EXEC-SKILLS-4, partial Q-SELF-REVIEW-1
Empirical finding (T2 §C, code-review-and-quality:14-19 + simplify inventory description):
code-review-and-qualitypositions itself as a per-CHANGE pre-merge gate, NOT per-subtask. Five axes (Correctness, Readability, Architecture, Security, Performance). Categorises findings as Critical / Nit / Optional / FYI.simplify(no local SKILL.md — built-in slash command per inventory) reads as a pre-Checker Executor auto-fix on a diff.
Default to ratify (pattern C from F-X4 with refinement):
- Per-subtask: no quality-review skill fires. Checker variant fires only for spec/standards compliance.
- Per-task (after all implementation subtasks complete): Executor invokes
simplify(auto-fix cheap reuse/quality/efficiency wins). Then Checker invokescode-review-and-quality(five-axis pre-merge gate). - Any Critical/Important findings from
code-review-and-quality→ Orchestrator dispatches fix-Executor → re-Checker (loop until PASS).
Status: ANSWERED. Severity: HIGH. Next action: Liam confirm pattern C-refined, OR substitute pattern A/B/D.
New Q raised: Q-SIMPLIFY-1 — simplify has no inspectable SKILL.md (built-in). KH cannot inspect/customise. Three options:
- Treat
simplifyas opaque; trust the inventory description. - Author a project-local
simplifySKILL.md that overrides + makes behaviour inspectable. - Replace with a domain-equivalent skill (e.g. an Anthropic
code-simplifieragent if available).
A4. Worktree / parallel-dispatch composition (T2 §D)
Section titled “A4. Worktree / parallel-dispatch composition (T2 §D)”Resolves: Q-AMALGAMATE-1, Q-AMALGAMATE-2
Empirical finding (T2 §D): three skills are LAYERED, not redundant:
dispatching-parallel-agents= abstract pattern (identify domains → focused tasks → parallel → integrate).using-git-worktrees= workspace-isolation primitive (withgit check-ignore+ baseline-test safety contract).session-driver-cmux= one concrete dispatch implementation (cmux + claude sessions + per-worker worktree + JSONL events).
session-driver-cmux creates worktrees but does NOT call using-git-worktrees’s safety contract (no ignore-check, no baseline-test gate).
Default to ratify:
- DO NOT amalgamate. Each layer is independently useful (single-worker worktree for Executor doesn’t need cmux fleet).
- DO harmonise:
session-driver-cmuxlaunch-worker.shshould adopt the same worktree-creation contract asusing-git-worktrees(ignore-check + baseline-test). Tracked as a new subtask under the broadersession-driver-cmuxcleanup work (combined with T4’s identified latent bug).
Status: ANSWERED. Severity: MEDIUM. Next action: Liam confirm. If yes, schedule the harmonisation subtask.
A5. session-driver-cmux re-sync vs hard-fork (T4 recommendation)
Section titled “A5. session-driver-cmux re-sync vs hard-fork (T4 recommendation)”Resolves: Q-AMALGAMATE-2 (downstream), FX-8
Empirical finding (T4 verdict): option (a) hard-fork recommended. Upstream (~/.claude/plugins/cache/superpowers-marketplace/claude-session-driver/1.0.1/) is .orphaned_at marked (2026-02-22). 4 of 7 KH commits are cmux-property bug fixes (S46 Phase B): tmux→cmux transport, raw-mode TUI Enter handling, title drift, log-path encoding. KH-only additives: per-worker git worktree, dirty-status safety gate, --worker-mode flag.
Latent bug surfaced (T4): local SKILL.md references upstream read-events.sh and controller approve-tool.sh that hard-code /tmp/claude-workers/ and silently miss KH-located events. 30-min cleanup pass would close.
Default to ratify:
- Hard-fork. Stop tracking upstream.
- File latent bug as new subtask under session-driver-cmux cleanup.
- (Optional courtesy) upstream the log-path encoding bug fix (
e1591f21) as a PR — likely latent upstream too.
Status: ANSWERED. Severity: MEDIUM. Next action: Liam confirm; if yes, schedule cleanup subtask.
A6. TM Subtask dependencies are sibling-only (T3 §STEP 3 + discrepancy 3)
Section titled “A6. TM Subtask dependencies are sibling-only (T3 §STEP 3 + discrepancy 3)”Resolves: partial Q-SPEC-SUBTASKS-1, partial Q-SUBTASK-KIND-1
Empirical finding (T3, example-tm-tasks.json): Subtask.dependencies is sibling-only — integer ids referencing other subtasks of the SAME parent. Cross-Task dependencies live at the Task level (Task.dependencies[]).
Implications for KH workflow:
- F3-4’s spec-authoring sequence
{N.1}Research →{N.2}Product spec →{N.3}Tech spec →{N.4}Task breakdown →{N.5+}Implementation IS structurally compatible with TM (all siblings of TaskN). - BUT if a follow-up implementation Task
N+1depends on TaskNbeing PASSED, that dep lives at the Task level, not the Subtask level. - KH cannot express “Task M, Subtask 3 depends on Task N, Subtask 7” — must promote to Task-level dep or restructure.
Status: ANSWERED. Severity: HIGH (informs every Planner decomposition decision). Next action: Liam acknowledge constraint; consider whether KH plans should ever attempt cross-Task subtask deps (recommend NO).
A7. TM Subtask 25-soft-ceiling (T3 quantitative aggregates)
Section titled “A7. TM Subtask 25-soft-ceiling (T3 quantitative aggregates)”Resolves: partial Q-SPEC-SUBTASKS-1, partial F3-1 task-driven shift sizing
Empirical finding (T3, example-tm-tasks.json — 7 Tasks / 151 Subtasks): mean 21.6 subtasks per Task. 25 is a soft ceiling. Zero sub-subtask depth (flat 2-level hierarchy).
Implications:
- The 2h Executor cap (CLAUDE.md “Agent Work Limits”) aligns nicely — if 25 subtasks × ~5–10 min each = ~2–4h, then 25-subtask Tasks are at the Executor-cap edge.
- KH should adopt the SAME flat 2-level model. Don’t try to express sub-subtasks. If a Task needs more, split into sibling Tasks with Task-level deps.
Status: ANSWERED. Severity: MEDIUM. Next action: Liam confirm flat-2-level adoption.
A8. TM details field is the executor dispatch brief carrier (T3 discrepancy 1)
Section titled “A8. TM details field is the executor dispatch brief carrier (T3 discrepancy 1)”Resolves: partial Q-DISPATCH-1, partial F3-5
Empirical finding (T3, discrepancy 1): TM Subtask.details carries ~80% of the usable executor instruction (acceptance criteria, file paths, edge cases). KH hand-decomp omitted this field entirely.
Default to ratify:
- KH adopts TM
detailsandtestStrategyas canonical dispatch-brief fields per subtask. The Orchestrator’s per-subtask dispatch brief is essentially{title, description, details, testStrategy, dependencies}pulled from TM. - Planner’s
{N.4}Task Breakdown subtask is RESPONSIBLE for populatingdetails+testStrategyper Subtask at decomposition time. Without this, the Executor dispatch brief degrades to a stub.
Status: ANSWERED. Severity: HIGH. Next action: Liam confirm; update F4-3 Planner skill mapping to require Planner emits filled details + testStrategy per subtask.
A9. TM id-type inconsistency (T3 — Task id = "153" string, Subtask id = 1 integer)
Section titled “A9. TM id-type inconsistency (T3 — Task id = "153" string, Subtask id = 1 integer)”Resolves: new — surfaced by T3 (not in T1)
Empirical finding (T3): Task id is stringified integer ("153"); Subtask id is bare integer (1). Mixed types in same export. parentId: "undefined" literal string on every Subtask (vestigial).
KH options:
- Mirror TM exactly (accept the mixed types).
- Standardise to ONE type at KH side (then convert at TM-import time).
- Use compound ids (
"153.1"for subtasks — what KH was already doing in handoff prompts).
Status: ANSWERED (empirical reality known). Severity: LOW (operational hygiene). Next action: Liam pick standardisation strategy.
A10. TM Subtask status enum has wider value set than Task (T3)
Section titled “A10. TM Subtask status enum has wider value set than Task (T3)”Resolves: new
Empirical finding (T3): Subtask-level status adds pending and deferred that don’t appear at Task level. <info added on YYYY-MM-DDTHH:MM:SS.sssZ> blocks are append-only journal entries from mcp__task-master-ai__update_subtask.
Implications:
- KH workflow needs the
deferredsubtask status if it adopts TM’s pattern of pausing/parking work. - The journal entry pattern is useful — KH’s continuation prompt “Completed work” could be auto-derived from these.
Status: ANSWERED. Severity: LOW. Next action: Liam acknowledge.
Section 2 — OPEN (Liam decision required; BLOCKERs first)
Section titled “Section 2 — OPEN (Liam decision required; BLOCKERs first)”B1. Session entry pattern (FX-1)
Section titled “B1. Session entry pattern (FX-1)”Source Q-IDs: Q-ENTRY-1, Q-ENTRY-2
Decision needed: pick option (i) or (ii) from FX-1.
- (i) Main session → /start-session → /session-driver-cmux → DEPLOY workflow-orchestrator agent in own cmux terminal. Main session monitors + intervenes.
- (ii) Main session IS the orchestrator. /start-session → workflow-orchestration skill (no agent) → session-driver-cmux skill → amalgamated dispatch+worktrees skill → Executor+Checker workflow.
Status: OPEN. Severity: BLOCKER (drives every downstream lifecycle decision). Next action: Liam picks.
Recommendation: Option (ii) as default — simpler operational model for a 1-user project. Promote to (i) only if/when a complexity threshold is crossed. Open Q-ENTRY-2 supports this hybrid: build for (ii) first, treat (i) as escalation path.
B2. Task vs Workpackage terminology rollout (F3-1)
Section titled “B2. Task vs Workpackage terminology rollout (F3-1)”Source Q-IDs: Q-TERM-1, Q-TERM-2
Decision needed:
- Q-TERM-1: Is the unit “Task” (terse) or “Task ID {N}” (precise)? Sub-decision: cite as
T15/T15.3, orTask 15/Task 15.3, or[T15]/[T15.3]? - Q-TERM-2: Out-of-scope items too small for TM — Curator-route-to-subtask, ephemeral TodoList, or third option?
Status: OPEN. Severity: BLOCKER (every doc + agent file + skill file needs the rename concurrently). Next action: Liam picks both.
Recommendation: T15 / T15.3 shorthand (matches existing usage in handoff prompts); Curator-route-to-subtask for out-of-scope (preserves task-driven discipline). TodoList only for transient in-session reasoning, never for promoted work.
B3. Worktree collapse + track migration (F3-2)
Section titled “B3. Worktree collapse + track migration (F3-2)”Source Q-IDs: Q-WORKTREES-1, Q-WORKTREES-2, Q-COUNTER-1
Decision needed:
- Q-WORKTREES-1: Migration plan for 4 current tracks (main, production-readiness, kh-knowledge-platform, ast-dataflow). Each has unmerged work; needs landing strategy.
- Q-WORKTREES-2: What replaces per-track primer (
docs/tracks/*.md)? Task-level briefing in TMdescription? - Q-COUNTER-1: Session-counter scheme post-collapse — single counter, TM-task-bound, date-based?
Status: OPEN. Severity: BLOCKER (every continuation prompt, every primer, every agent ref needs updating). Next action: Liam picks all three.
Recommendation:
- Q-WORKTREES-1: each track lands its in-flight work via standard merge to
mainover 1–2 sessions per track; then track branch is archived. - Q-WORKTREES-2: drop per-track primers; promote any persisting context to CLAUDE.md or a per-Task TM
description. - Q-COUNTER-1: single global session counter (e.g.
kh-s49,kh-s50, …) — drop track prefix.
B4. Planner role scope (F2-2 + F4-3)
Section titled “B4. Planner role scope (F2-2 + F4-3)”Source Q-IDs: Q-PLANNER-1, Q-PLANNER-2, Q-PLANNER-SKILLS-1, Q-PLANNER-SKILLS-3
Decision needed:
- Q-PLANNER-1: Planner runs in own cmux terminal or Agent-tool dispatch from Orchestrator?
- Q-PLANNER-2: Planner persists across waves OR spun up per-spec / per-task-breakdown?
- Q-PLANNER-SKILLS-1: Which of the missing Planner skills are existing-plugin / net-new authorship / deferred? Specifically:
ast-dataflow,gitnexus-*,vercel-react-best-practices,web-design-guidelines,interaction-design,mobile-design,ci-cd-and-automation,github-actions-templates,context-engineering-collection,prompt-engineering-patterns,mcp-builder,create-mcp-app,api-and-interface-design,mermaid-diagrams. - Q-PLANNER-SKILLS-3: Install
context7 MCP?
Status: OPEN. Severity: BLOCKER (Planner is a new role; can’t author task-planner.md without these). Next action: Liam picks; T2/T3 do not help here.
Recommendation:
- Q-PLANNER-1: Agent-tool dispatch (matches B1 option (ii) — Orchestrator-in-main spawns specialist sub-agents). Spec-authoring needs long-form research → opus tier in dedicated context.
- Q-PLANNER-2: per-spec / per-task-breakdown (NOT persistent). One Planner instance per
{N.2}-{N.4}chain; closes when subtasks ratified. - Q-PLANNER-SKILLS-1: bulk-classify exercise — Liam runs through the list, marks each as [installed-plugin / authorship-WP / defer].
B5. Checker variants design (F3-6 + FX-4)
Section titled “B5. Checker variants design (F3-6 + FX-4)”Source Q-IDs: Q-CHECKER-1, Q-CHECKER-2, Q-CHECKER-3, Q-CHECKER-ORDER-2, Q-CHECKER-ORDER-3, Q-CHECKER-OUT-1, Q-PR-GATE-1, Q-PERF-SEC-2
Decision needed (composite):
- Variant enumeration: spec-compliance, code-quality, simplest-approach, test-quality, design-tokens, silent-failure, type-design, performance, security. WHICH map to (a) per-subtask Checker variants, (b) per-task Checker variants, (c) PR-time Auditor gate?
- Variant implementation: distinct AGENTS per variant OR one Checker agent with variant-selection input?
- Cadence: per-subtask always OR per-task checkpoints OR Orchestrator-routed?
- Output format: JSON-shaped finding packets so Orchestrator can route mechanically?
code-simplifierAnthropic agent vssimplifyskill — keep both? drop one?silent-failure-hunteragent → which lifecycle slot? (Likely PR-time, not per-subtask.)
Status: OPEN. Severity: BLOCKER. Next action: Liam picks; A3 + A5 partial defaults exist.
Recommendation (composite default):
- Per-subtask = nothing beyond spec-compliance Checker variant.
- Per-task = simplify (Executor) → code-quality + design-tokens (Checker
code-review-and-qualityaxes) → optional type-design (if subtask kind = “introduce/refactor types”). - PR-time Auditor (new §3.7 PR phase before §3.8 Close) = silent-failure-hunter + security + performance (last three are conditional on subtask kinds in the wave).
- One Checker agent file, variant-selection via dispatch brief field (cheaper to maintain than N agent files).
- JSON-shaped Checker output: yes (Q-CHECKER-OUT-1). Schema TBD as small follow-up subtask.
- Drop
code-simplifieragent —simplifyskill (or its replacement per Q-SIMPLIFY-1) covers the slot.
B6. Continuation-prompt mode declaration (F3-3)
Section titled “B6. Continuation-prompt mode declaration (F3-3)”Source Q-IDs: Q-MODE-1, Q-MODE-2
Decision needed:
- Q-MODE-1: Single session = single mode (CONTINUE / EXTEND / AUTHOR), or can span multiple modes (e.g. wave 1 EXTEND, wave 2 AUTHOR)?
- Q-MODE-2: Mode declared in continuation-prompt header OR computed at session-start from TM state?
Status: OPEN. Severity: HIGH. Next action: Liam picks.
Recommendation: allow multi-mode sessions (Q-MODE-1 = yes); declare mode per Task at session-plan time (Q-MODE-2 = computed by Orchestrator after reading TM at session start, surfaced in session plan for ratification).
B7. Spec-authoring sequence parent (F3-4)
Section titled “B7. Spec-authoring sequence parent (F3-4)”Source Q-IDs: Q-SPEC-SUBTASKS-1, Q-SPEC-SUBTASKS-2, Q-SPEC-SUBTASKS-3
Decision needed:
- Q-SPEC-SUBTASKS-1: are
{N.1}-{N.4}(Research, ProductSpec, TechSpec, Breakdown) in SAME parent as{N.5+}implementation subtasks, OR do they become own top-level Tasks with implementation Task beingN+1? - Q-SPEC-SUBTASKS-2: “implementation-ready” decision rule — concrete signals?
- Q-SPEC-SUBTASKS-3: who decides “implementation-ready” — Orchestrator alone, with Checker, or escalate to Liam?
Status: OPEN. Severity: HIGH (downstream of B5 + B6). Next action: Liam picks.
Recommendation:
- Q-SPEC-SUBTASKS-1: SAME parent Task. Spec authoring is part of the work to ship the feature; should not require a sibling-Task dep. Matches A6 sibling-only TM constraint.
- Q-SPEC-SUBTASKS-2: signals = (a) PRODUCT.md has numbered + testable Behavior invariants (write-product-spec:72-95); (b) TECH.md has migration plan + Proposed changes per invariant (write-tech-spec:50-67); (c) all author-flagged Qs resolved; (d) Checker PASSED both specs.
- Q-SPEC-SUBTASKS-3: Orchestrator decides after Checker PASS; escalate to Liam only if signals (a)-(d) are partial or if Checker FAIL-loop runs 3+ times (matches
workflow-orchestrator.md“Error handling” 3-strikes rule).
B8. Worker variants — bare-mode reinterpretation (FX-7)
Section titled “B8. Worker variants — bare-mode reinterpretation (FX-7)”Source Q-IDs: Q-BARE-1, Q-BARE-2, Q-BARE-3
Decision needed:
- Q-BARE-1: Is Anthropic “bare mode” (
code.claude.com/docs/en/headless#start-faster-with-bare-mode) applicable beyond headless? - Q-BARE-2: If not, which context-economy alternative — per-subtask CLAUDE.md trimming, skill auto-discovery filtering, explicit
allowedToolsoverrides via dispatch brief, plugin-disable flags? - Q-BARE-3: Out-of-workflow KH platform use case for streamlined agents — separate Q for later session.
Status: OPEN. Severity: HIGH (the existing workflow-worker-minimal.md is on death row pending this decision; original S48 WP3 minimal-worker tool-gate enforcement is INVALIDATED). Next action: Liam reads bare-mode docs + picks.
Recommendation:
- Q-BARE-1: research-then-decide. Bare mode IS headless-specific per the URL fragment; sub-agents probably can’t inherit, but worth confirming. If confirmed inapplicable, drop the term and use generic “context-economy”.
- Q-BARE-2: combination of per-dispatch
allowedTools+ per-dispatch skill list (already supported by Anthropic agent frontmatter) + per-dispatch CLAUDE.md selection (viaCLAUDE_CODE_DISABLE_CLAUDE_MDS=1+ project-local override). NOT a separate agent file — economy built into the default Executor. - DELETE
.claude/agents/workflow-worker-minimal.md; remove--worker-mode minimalfromlaunch-worker.sh; replace with optional per-dispatch context-economy flags on the standard Executor.
B9. Orchestrator vs Executor commit/branch hygiene (F4-4 Q-EXEC-SKILLS-2)
Section titled “B9. Orchestrator vs Executor commit/branch hygiene (F4-4 Q-EXEC-SKILLS-2)”Source Q-IDs: Q-EXEC-SKILLS-2, Q-RENAME-1 (related)
Decision needed: commit-commands + git-workflow-and-versioning — Executor invokes (each commits its subtask) OR Orchestrator invokes (only Orchestrator does merges)? Probably both for different surfaces — but what’s the actual split?
Status: OPEN. Severity: MEDIUM. Next action: Liam picks.
Recommendation:
- Executor: invokes
commit-commandsper subtask (commit own work to own worktree branch). NOTgit-workflow-and-versioning(workflow-level concerns). - Orchestrator: invokes
git-workflow-and-versioning(sequential merge orchestration, conflict resolution, branch hygiene). NOTcommit-commandsper se (defers to Executors).
B10. Finding routing — fix-Executor vs Curator decision rule (F2-4)
Section titled “B10. Finding routing — fix-Executor vs Curator decision rule (F2-4)”Source Q-IDs: Q-FINDINGS-1
Decision needed: decision rule for “Orchestrator picks direct-fix Executor vs Curator triage”. Candidates: severity, in-scope-ness, ambiguity, time-to-fix.
Status: OPEN. Severity: MEDIUM. Next action: Liam picks.
Recommendation: binary on in-scope-ness alone. If finding is within the current task’s acceptance criteria → fix-Executor. If finding mentions out-of-scope file/concern → Curator triage. Severity is the Checker’s verdict input, not the routing input. Ambiguity → Curator (Curator is the routing arbitrator).
B11. Agent rename scope (F2-3)
Section titled “B11. Agent rename scope (F2-3)”Source Q-IDs: Q-RENAME-1
Decision needed: is workflow-orchestrator.md also renamed (task-orchestrator.md), or does it keep workflow- prefix because it operates above any single task? Same Q for workflow-curator.md.
Status: OPEN. Severity: MEDIUM. Next action: Liam picks.
Recommendation: keep workflow- prefix on Orchestrator and Curator (session/wave-level scope). Rename only Executor and Checker (per-task scope). Liam’s feedback table at feedback:11-17 already reflects this.
B12. Subtask kind explicit vs implicit in TM (F4-2)
Section titled “B12. Subtask kind explicit vs implicit in TM (F4-2)”Source Q-IDs: Q-SUBTASK-KIND-1
Decision needed: is “check” subtask explicit in TM (separate subtask {N.3-check} after {N.3-execute}) OR implicit (single subtask flips to “checked” status after execution)?
Status: OPEN. Severity: MEDIUM (informs every Planner decomposition). Next action: Liam picks.
Recommendation: EXPLICIT. Each implementation subtask is followed by its own Checker subtask. Matches F3-4’s spec-authoring example (Executor + Checker iterate as distinct subtasks). Also matches TM’s flat status enum (no “checked” state — it’d need explicit subtask with own status field).
Section 3 — NEW gaps surfaced by T2 (not in original T1 feedback)
Section titled “Section 3 — NEW gaps surfaced by T2 (not in original T1 feedback)”N1. fix-findings / fix-checker-output skill missing (T2 gap)
Section titled “N1. fix-findings / fix-checker-output skill missing (T2 gap)”Decision needed: does KH need a dedicated skill for “Executor re-entry after Checker FAIL/NOTE”, or does Executor reuse implement-specs / incremental-implementation?
Recommendation: reuse implement-specs with a “fix-only” mode flag in the dispatch brief. No new skill.
Status: OPEN. Severity: MEDIUM.
N2. merge-coordinator skill missing (T2 gap)
Section titled “N2. merge-coordinator skill missing (T2 gap)”Decision needed: package the sequential cherry-pick / merge / regression-test cycle (currently described in CLAUDE.md “Worktree isolation rules”) as a skill?
Recommendation: YES. Author merge-coordinator SKILL.md as part of Orchestrator’s skill set. Covers cherry-pick ordering, post-merge git status leak detection, full-test-suite gate per merge, knip post-add/remove.
Status: OPEN. Severity: MEDIUM.
N3. integration-tier-promotion skill missing (T2 gap)
Section titled “N3. integration-tier-promotion skill missing (T2 gap)”Decision needed: package the gate-promotion logic (subtask passed → task pass → wave pass → PR pass) as a skill?
Recommendation: defer until the four roles + Checker variants are stable. The promotion logic IS the Orchestrator’s core loop and may be better expressed in workflow-orchestrator.md agent body than as a separate skill.
Status: OPEN. Severity: LOW.
N4. verification-evidence-collation skill missing (T2 gap)
Section titled “N4. verification-evidence-collation skill missing (T2 gap)”Decision needed: package the evidence-pack generation (test outputs, screenshots, MCP eval results) as a skill the Executor invokes pre-Checker?
Recommendation: YES — small skill. Reduces variance in what Checkers see. Author after Checker variants (B5) are stable.
Status: OPEN. Severity: LOW.
N5. spec-drift-detection skill missing (T2 gap)
Section titled “N5. spec-drift-detection skill missing (T2 gap)”Decision needed: automate spec-drift detection, OR rely on Executor discipline (per implement-specs:94-105)?
Recommendation: rely on Executor discipline + Checker spec-compliance variant catches drift via PASS/FAIL. New skill is overhead. Revisit if drift surfaces as recurring issue.
Status: OPEN. Severity: LOW.
N6. finding-router skill missing (T2 gap)
Section titled “N6. finding-router skill missing (T2 gap)”Decision needed: package the Orchestrator’s “finding from Checker/Executor → fix-Executor vs Curator” routing (B10) as a skill?
Recommendation: YES if B10 picks a multi-input rule (severity + in-scope-ness + ambiguity); NO if B10 picks the binary in-scope-ness rule (then it’s a 3-line Orchestrator function, not a skill). Pending B10 decision.
Status: OPEN. Severity: LOW.
N7. roadmap-rebase / backlog-grooming skill missing (T2 gap)
Section titled “N7. roadmap-rebase / backlog-grooming skill missing (T2 gap)”Decision needed: package periodic reorder/dedupe/sunset of roadmap+backlog entries as a skill?
Recommendation: YES, but defer to post-collapse (B3) when KH’s roadmap+backlog have been migrated to TM-compatible schema. Currently update-roadmap-backlog only appends.
Status: OPEN. Severity: LOW.
N8. simplify SKILL.md missing (T2 gap, surfaced as Q-SIMPLIFY-1 in A3)
Section titled “N8. simplify SKILL.md missing (T2 gap, surfaced as Q-SIMPLIFY-1 in A3)”See A3 New Q raised.
N9. subtask-spec skill missing (T2 gap)
Section titled “N9. subtask-spec skill missing (T2 gap)”Decision needed: does the Executor need a skill that loads + acts on triage-finding:81-92 subtask-spec format, OR does it just fall back to implement-specs?
Recommendation: fall back to implement-specs. The subtask-spec format is just a structured prompt — the Executor’s existing skill loadout handles it.
Status: OPEN. Severity: LOW.
N10. roadmap-label-reversal-migration skill missing (T2 gap)
Section titled “N10. roadmap-label-reversal-migration skill missing (T2 gap)”Decision needed: schedule the label-reversal migration (KH’s roadmap/backlog are conceptually reversed) as a standalone Task?
Recommendation: YES. Standalone Task, post-workflow-finalisation. Already flagged in original S48 prompt carry-forward.
Status: OPEN. Severity: MEDIUM.
Section 4 — BLOCKED-EXTERNAL
Section titled “Section 4 — BLOCKED-EXTERNAL”X1. Empirical planning-and-task-breakdown decomposition runs (T3.x + T3.y)
Section titled “X1. Empirical planning-and-task-breakdown decomposition runs (T3.x + T3.y)”Blocked on: Liam supplying updated canonical-pipeline PRODUCT.md + TECH.md (main-track 0.9 collapse-candidates settle); and Liam supplying a “new feature” spec target for the user-facing-feature decomposition test.
Re-anchor: S49 (or later, when specs ratified). Will produce empirical comparison: skill’s decomposition vs hand-decomposition vs real TM export.
X2. context7 MCP install decision (Q-PLANNER-SKILLS-3)
Section titled “X2. context7 MCP install decision (Q-PLANNER-SKILLS-3)”Blocked on: Liam decides whether to install context7 MCP at project level.
X3. Plugin installation list (Q-PLANNER-SKILLS-1, Q-EXEC-SKILLS-5, Q-ORCH-SKILLS-2)
Section titled “X3. Plugin installation list (Q-PLANNER-SKILLS-1, Q-EXEC-SKILLS-5, Q-ORCH-SKILLS-2)”Blocked on: Liam decides install/author/defer for ~14 missing skills listed in F4-3 / F4-4 / F4-7. Bulk-classify exercise.
X4. Anthropic bare-mode applicability research (Q-BARE-1)
Section titled “X4. Anthropic bare-mode applicability research (Q-BARE-1)”Blocked on: Liam reads code.claude.com/docs/en/headless#start-faster-with-bare-mode; confirms whether sub-agents can inherit.
X5. Workflow Auditor + Evaluator design (F4-9, F4-10)
Section titled “X5. Workflow Auditor + Evaluator design (F4-9, F4-10)”Blocked on: ~10 orchestrated sessions to evaluate against. Per S47 deferral; unchanged.
Section 5 — Recommended ratification sequence
Section titled “Section 5 — Recommended ratification sequence”For Liam, ordered by unblocking-value (each step unblocks the most downstream work):
- B2 (terminology). Trivial decision; unblocks every rename downstream.
- B1 (session entry pattern). Drives every lifecycle decision; option (ii) is recommended default.
- B3 (worktree collapse + migration). Frees S49 to operate on
main+ feature branches; archives 3 track branches. - B11 (agent rename scope). Trivial; follows B2 conventions.
- B4 (Planner role scope) + X3 (plugin install list). Joint decision; unblocks
task-planner.mdauthorship. - B5 (Checker variants design). Most consequential decision; downstream of B1+B2.
- B6 (continuation-prompt mode). Mechanical once B1 decided.
- B7 (spec-authoring sequence parent). Mechanical once B5 decided.
- B12 (subtask kind explicit). Joint with B5.
- B8 (bare-mode reinterpretation) + X4 (research). Joint; deletes
workflow-worker-minimal.md. - B9 (commit/branch hygiene split). Low-impact.
- B10 (finding routing rule). Low-impact.
- A1-A10 (empirical defaults). Rubber-stamp or override pass.
- N1-N10 (new gaps). Pick which to fill / defer / accept.
- After all of the above → re-author
kh-sdlc-workflow.mdagainst the decisions; trigger FX-9 / FX-10 skill+agent file sweep.
Appendix — Q-ID master table
Section titled “Appendix — Q-ID master table”| Q-ID | Section | Status | Severity |
|---|---|---|---|
| Q-PLANNER-1 | B4 | OPEN | BLOCKER |
| Q-PLANNER-2 | B4 | OPEN | BLOCKER |
| Q-RENAME-1 | B11 | OPEN | MEDIUM |
| Q-FINDINGS-1 | B10 | OPEN | MEDIUM |
| Q-TERM-1 | B2 | OPEN | BLOCKER |
| Q-TERM-2 | B2 | OPEN | BLOCKER |
| Q-WORKTREES-1 | B3 | OPEN | BLOCKER |
| Q-WORKTREES-2 | B3 | OPEN | BLOCKER |
| Q-COUNTER-1 | B3 | OPEN | BLOCKER |
| Q-MODE-1 | B6 | OPEN | HIGH |
| Q-MODE-2 | B6 | OPEN | HIGH |
| Q-SPEC-SUBTASKS-1 | B7 + A6 | OPEN + ANSWERED-partial | HIGH |
| Q-SPEC-SUBTASKS-2 | B7 | OPEN | HIGH |
| Q-SPEC-SUBTASKS-3 | B7 | OPEN | HIGH |
| Q-DISPATCH-1 | A8 | ANSWERED | HIGH |
| Q-CHECKER-1 | B5 | OPEN | BLOCKER |
| Q-CHECKER-2 | B5 | OPEN | BLOCKER |
| Q-CHECKER-3 | B5 | OPEN | BLOCKER |
| Q-AGENT-CONFIG-1 | (linked to FX-10) | OPEN | MEDIUM |
| Q-SUBTASK-KIND-1 | B12 + A6 | OPEN + ANSWERED-partial | MEDIUM |
| Q-PLANNER-SKILLS-1 | B4 + X3 | BLOCKED-LIAM | BLOCKER |
| Q-PLANNER-SKILLS-2 | A1 | ANSWERED | MEDIUM |
| Q-PLANNER-SKILLS-3 | X2 | BLOCKED-LIAM | LOW |
| Q-EXEC-SKILLS-1 | A1 | ANSWERED | HIGH |
| Q-EXEC-SKILLS-2 | B9 | OPEN | MEDIUM |
| Q-EXEC-SKILLS-3 | (no fix-errors SKILL.md found in T2) | OPEN | LOW |
| Q-EXEC-SKILLS-4 | A3 | ANSWERED-partial | MEDIUM |
| Q-EXEC-SKILLS-5 | X3 | BLOCKED-LIAM | HIGH |
| Q-DOMAIN-1 | (no answer; deferred) | OPEN | LOW |
| Q-CHECKER-OUT-1 | B5 | OPEN | HIGH |
| Q-ORCH-SKILLS-1 | (workflow-orchestration skill vs agent) | OPEN | MEDIUM |
| Q-ORCH-SKILLS-2 | X3 | BLOCKED-LIAM | HIGH |
| Q-ORCH-SKILLS-3 | A2 | ANSWERED | MEDIUM |
| Q-ENTRY-1 | B1 | OPEN | BLOCKER |
| Q-ENTRY-2 | B1 | OPEN | BLOCKER |
| Q-AMALGAMATE-1 | A4 | ANSWERED | MEDIUM |
| Q-AMALGAMATE-2 | A4 + A5 | ANSWERED | MEDIUM |
| Q-SELF-REVIEW-1 | A3 | ANSWERED-partial | MEDIUM |
| Q-CHECKER-ORDER-1 | A3 + B5 | ANSWERED-default | HIGH |
| Q-CHECKER-ORDER-2 | B5 | OPEN | MEDIUM |
| Q-CHECKER-ORDER-3 | B5 | OPEN | HIGH |
| Q-PERF-SEC-1 | X3 | BLOCKED-LIAM | LOW |
| Q-PERF-SEC-2 | B5 | OPEN | MEDIUM |
| Q-PR-GATE-1 | B5 | OPEN | HIGH |
| Q-BARE-1 | X4 | BLOCKED-LIAM | HIGH |
| Q-BARE-2 | B8 | OPEN | HIGH |
| Q-BARE-3 | (out of workflow scope; later session) | OPEN | LOW |
| Q-SKILLS-FIELD-1 | (linked to FX-10) | OPEN | MEDIUM |
| Q-SKILLS-FIELD-2 | (linked to FX-10) | OPEN | MEDIUM |
| Q-SIMPLIFY-1 | A3 | NEW-OPEN | MEDIUM |
Total Qs: 49 (48 from T1 + 1 net-new from A3).
- ANSWERED: 8 (A1-A5 directly; A6-A10 ANSWERED-partial via T3)
- OPEN: 30
- BLOCKED-LIAM: 5
- BLOCKED-EXTERNAL: 0 (all blocked Qs are Liam-input; Section 4 lists external-pending workstreams)
What S49 should look like
Section titled “What S49 should look like”Once Liam has ratified Section 2 (BLOCKERs) at minimum:
- S49 WP1: Re-author
kh-sdlc-workflow.mdagainst the ratified decisions. Single Executor + Checker pass. - S49 WP2: Sweep
.claude/agents/workflow-*.md+.claude/skills/*/SKILL.mdper FX-9 + FX-10. Bulk rename (workflow-executor→task-executor;workflow-checker→task-checker). Inject baseline skills via frontmatter per role. - S49 WP3: Author
task-planner.mdagent file. Wire the missing skills (or stub them with TODOs). - S49 WP4: Cleanup pass for
session-driver-cmuxper A4 + A5: latent bug fix, worktree-contract harmonisation, deleteworkflow-worker-minimal.md. - S49 WP5: Schema-alignment migration plan (original S48 WP1) — now grounded in T3’s empirical TM reference.
S49 is itself a workflow-bootstrapping session — the LAST one before the workflow becomes self-applying. From S50 onward, all work follows the ratified workflow.
End of open-questions consolidation.