Commit 7907edd
release: v2.0.2 — README and doc corrections (#34)
* refactor: remove session-start hook in favor of orchestrator mode
Removed session-start hook from plugin architecture as it duplicates
functionality provided by orchestrator-prompt.txt system prompt.
Changes:
- Removed hook files: session-start.js, session-start.sh, hooks.json
- Updated plugin.json to remove hooks reference
- Updated documentation to remove hook sections
- Fixed project-setup-workflow.md with v2.0 tool syntax and template discovery
- Updated initialize-task-orchestrator.md to guide plugin installation
- Updated migration docs to document v2.1 hook removal
Benefits:
- Eliminates redundancy: single source of truth for orchestration guidance
- Token savings: ~600 tokens when using orchestrator mode
- Cleaner architecture: one comprehensive system prompt vs fragmented hooks
- Easier maintenance: update one file instead of syncing multiple sources
Orchestrator mode (via system prompt) is now the recommended approach,
providing both orchestration logic and communication style in one file.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* refactor: remove Skills, Agents, Plugin, and redundant tools (18 → 12 tools)
Remove features that Claude Code now provides natively, preserving the
MCP's unique value: persistent hierarchical storage, templates, rich
dependencies, token-optimized queries, and configurable status workflows.
Deleted resources (~55 skill files, 10 agent files, plugin, workflows,
output styles, config files). Removed 7 Kotlin tools: ListTagsTool,
GetTagUsageTool, RenameTagTool, QueryWorkflowStateTool, SetupProjectTool,
GetAgentDefinitionTool, RecommendAgentTool. Removed supporting services:
AgentRecommendationService, AgentDirectoryManager,
TaskOrchestratorConfigManager, AgentResources, WorkflowPromptsGuidance.
Updated McpServer.kt registration, simplified MCP resources and AI
guidance to remove Skills/Agent references.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add request_transition tool for trigger-based status changes
New MCP tool that provides a higher-level interface for status transitions
using named triggers (start, complete, cancel, block, hold) instead of
raw status values. Validates transitions against the workflow config,
checks prerequisites via StatusValidator, and detects cascade events
after applying changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add semantic status roles to workflow config
Add role annotations (queue, work, review, blocked, terminal) to status
definitions in default-config.yaml for all container types. Roles provide
semantic context for AI decision-making about workflow state.
Update NextStatusRecommendation.Ready with optional currentRole/nextRole
fields. StatusProgressionServiceImpl parses roles from config with
fallback inference from terminal/emergency status lists. GetNextStatusTool
includes roles in JSON output.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: simplify CLAUDE.md to reflect 12-tool architecture
Remove ~400 lines of Skills, Agents, Orchestration Mode, Decision Gates,
and Specialist Routing content that referenced deleted features. Add
concise MCP Tools section documenting all 12 tools with usage patterns
for request_transition, scoped overview, and template discovery.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: post-simplification cleanup after 18→12 tool refactor
- Delete claude-plugins/ directory (48 stale skill/agent files)
- Delete 7 orphaned tool docs and 6 stale doc files
- Update api-reference.md, quick-start.md, ai-guidelines.md, index.md
to reflect current 12-tool architecture
- Remove unimplemented config sections (parallelism, automation, etc.)
- Add DEPLOYED status to ProjectStatus enum with V8 migration
- Add GetBlockedTasksTool unit tests (33 tests)
- Remove unused gradle deps (slf4j-nop, exposed-migration)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: realign built-in templates to set documentation floor, not ceiling
Templates now provide brief 4-7 line prompts telling the AI WHAT to
document rather than prescriptive multi-page workflows telling HOW to
plan. This preserves the template system's value (minimum required
sections) while allowing Claude's native planning to evolve freely.
Changes:
- Trim 6 template creators from ~930 lines of contentSample to ~110
- Rename 3 templates: Task Implementation Workflow → Task Implementation,
Bug Investigation Workflow → Bug Investigation, Testing Strategy → Test Plan
- Delete 2 redundant sections: Technical Decision Log, Testing Checkpoints
- Change 2 sections to optional: Integration Considerations, Production Readiness
- Add V9 Flyway migration to update templates in existing databases
- Update TemplateInitializerImpl with new template names
- Update migration tests for new names, counts (26→24 sections), and titles
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add Claude Code plugin with skills, hooks, and marketplace integration
Replace the old MCP-tool-based deployment approach with a proper Claude Code
plugin at claude-plugins/task-orchestrator/. The plugin provides 4 lean skills
(task-orchestration, feature-orchestration, status-progression,
dependency-analysis), a SessionStart hook for auto-overview, and marketplace
distribution via the existing .claude-plugin/marketplace.json.
Also fixes ~60 stale pre-v2.0 tool name references across MCP resources and
prompts (list_templates, get_overview, create_task, etc.), adds missing
get_next_status and request_transition documentation resources, and adds YAML
frontmatter to deploy_to_docker command.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add orchestrator output style supporting subagents and agent teams
Adds an optional output style that transforms the main Claude session into
a pure orchestrator — strips coding instructions and adds delegation patterns.
Covers both standard subagents and experimental agent teams, with clear
distinction between MCP task orchestrator (persistent) and Claude Code
delegation (session-scoped).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add task-mirroring skill and enforce MCP→CC display sync in output style
Adds one-way mirroring from MCP Task Orchestrator tasks to Claude Code's
terminal task display (Ctrl+T). The output style deterministically requires
mirroring when active; the skill provides detailed mapping patterns (14 MCP
statuses → 3 CC statuses, dependency mirroring, metadata correlation).
Only tasks related to the current focus are mirrored, not the entire database.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: reinforce critical skill behaviors in orchestrator output style
Add deterministic reinforcement for three high-risk skill behaviors:
partial updates (never fetch-modify-save), cascade event handling
(check parent status after transitions), and feature completion
verification (all tasks done, sections reviewed before completing).
These ensure correct behavior even when skills don't probabilistically
activate.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: auto-delete child tasks when feature reaches terminal status
When a feature is completed or archived, its child tasks are transient
work items that have served their purpose. This adds a configurable
CompletionCleanupService that synchronously deletes child tasks (with
their sections and dependencies) during status transitions. Bug-tagged
tasks are retained for diagnostic value. Cleanup is config-gated via
completion_cleanup.enabled and respects existing terminal_statuses
from the workflow config to support custom flows.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: move workflow config out of resources/claude, remove stale docs
Move default-config.yaml from resources/claude/configuration/ to
resources/configuration/ — the claude/ prefix was a holdover from
before the plugin migration. Delete empty hooks/ directory and
remove PLUGIN-STRUCTURE.md which referenced agents and files that
no longer exist. Update all 5 references (3 tests, 2 docs).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: overhaul Docker infrastructure for security, performance, and correctness
- Add .dockerignore to reduce build context from ~412MB to ~8MB
- Add non-root user (appuser:1001) to Dockerfile for security hardening
- Add OCI metadata labels to Docker image
- Optimize Dockerfile layer caching with dedicated dependency download step
- Make LOG_LEVEL env var functional via logback.xml variable substitution
- Modernize docker-compose.yml: add AGENT_CONFIG_DIR, project mount, resource
limits, remove dead env vars (JAVA_TOOL_OPTIONS, MCP_DEBUG)
- Replace misleading docker-clean-and-build.bat with cross-platform
docker-build.sh and docker-build.bat scripts
- Add Buildx, GHA cache, multi-platform (amd64/arm64), and Trivy scanning
to CI/CD pipeline
- Remove dead MCP_DEBUG env var references across all documentation
- Update deploy skill, CLAUDE.md, installation guide, and troubleshooting docs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: upgrade MCP Kotlin SDK from 0.7.4 to 0.8.3
- Migrate Tool.Input/Tool.Output to ToolSchema (types package reorganization)
- Update all imports from sdk root to sdk.types subpackage
- Handle nullable request.arguments with fallback to empty JsonObject
- Rename _meta to meta in GetPromptResult (API change)
- Update Role.assistant to Role.Assistant (enum case change)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: resolve Docker build failures for AL2023 headless runtime image
Install shadow-utils via dnf for groupadd/useradd support on Amazon Linux 2023
minimal images, and move git install before Gradle dependency download since
build.gradle.kts requires git at configuration time for version calculation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: upgrade logback from 1.5.13 to 1.5.28 (CVE-2025-11226)
Addresses arbitrary code execution vulnerability via conditional
configuration file processing (CVSS 5.9, medium severity).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: correct extraKnownMarketplaces source format to use object
The source field requires an object with source type and path, not a
plain string.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: update CLAUDE.md with accurate project info
- Fix MCP SDK version (0.7.2 -> 0.8.3)
- Fix Exposed ORM version (v1 -> 1.0.0-beta-2)
- Fix tool count (12 -> 13)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: rewrite Quick Start and fix README inaccuracies
- Rewrite Quick Start with two clear paths: Claude Code (plugin
install) and Other MCP Clients (Docker pull + configure)
- Add GHCR MCP server declaration to plugin.json so plugin install
includes the MCP server for Claude Code users
- Remove phantom references (setup_project, initialize_task_orchestrator)
- Fix MCP SDK version (0.7.2 -> 0.8.3) in Technical Stack
- Fix broken docs/plugin-installation.md link
- Reframe sub-agents as optional/configurable, not pre-packaged
- Add .mcp.json to .gitignore (local dev MCP config)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: fall back to bundled default-config.yaml when user config missing
StatusProgressionServiceImpl now loads the bundled default-config.yaml
from the classpath when no .taskorchestrator/config.yaml exists on the
filesystem. This ensures get_next_status and request_transition work
out of the box for new users without manual config setup.
Malformed user configs still fail explicitly (no silent fallback).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: comprehensive audit and fix of all 13 MCP tool documentation files
Audited all tool docs against source implementations and fixed ~80 discrepancies
across 12 of 13 tools. Key fixes: corrected status enum tables for all container
types, replaced old tool name references, fixed response field names and formats,
added missing response fields, removed phantom fields, added DEPRECATED notices.
Also: restructured plugin for dev use (removed bundled mcpServers), consolidated
session-start hook into plugin, updated README Quick Start and CONTRIBUTING.md
with accurate developer setup instructions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: plugin manifest and marketplace configuration for proper discovery
- Fix marketplace.json owner field to match schema (name only, no url)
- Remove broken extraKnownMarketplaces from settings.json (relative
directory paths not resolved by Claude Code, filed #23978)
- Add explicit skills and hooks fields to plugin.json manifest
- Rename hooks.json to session-hooks.json to avoid conflict with
auto-discovery convention while keeping explicit manifest declaration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: remove incorrect deprecation notices and fix stale tool references
GetNextTaskTool and GetBlockedTasksTool were incorrectly marked as
deprecated pointing to non-existent query_tasks queryType parameters.
Also fixes error code mapping in ManageContainerTool to return proper
VALIDATION_ERROR/NOT_FOUND/CONFLICT codes instead of generic DATABASE_ERROR,
and updates stale Related tool cross-references across tool descriptions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add planning workflow hooks for MCP Task Orchestrator integration
PreToolUse:EnterPlanMode hook guides the agent through structured planning:
template discovery, container sizing, user confirmation, and plan writing
with templates as the structural floor. PostToolUse:ExitPlanMode hook
materializes approved plans into MCP containers with UUIDs written back
into plan.md, dependency setup, and verification.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: CRLF line endings in hook scripts causing hook errors
Git on Windows auto-converted LF to CRLF in shell scripts. The \r
characters embedded in JSON output caused Claude Code to show "hook
error" despite the context injection still working. Fixed all scripts
to LF and added .gitattributes to enforce LF for *.sh files.
Also updated hook scripts with refined planning workflow guidance:
templates as structural floor, multiSelect template confirmation,
and hookEventName field restored per docs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: SessionStart hook fires on compaction, derailing in-progress work
Added matcher: "startup" to the SessionStart hook so it only fires on
new sessions. Previously it had no matcher, causing it to also fire on
context compaction which interrupted the agent's current work by
prompting a full project overview.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add role-aware status transitions with bidirectional CC-MCP task sync
Add getRoleForStatus() to StatusProgressionService and include previousRole/
newRole fields in request_transition responses. Create two new plugin hooks:
- PostToolUse status-sync hook detects role boundary crossings and reminds
the agent to update mirrored CC task status
- TaskCompleted hook enforces MCP-first completion order using a block-once
pattern with temp file markers
Update task mirroring convention to prefix CC task subjects with [short-hash]
for visual correlation and hook-based identification. Update skills and output
style with CC-MCP sync guidance.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: reduce output style and skill token overhead by deduplicating content
- Output style: 887→343 words (61% reduction). Removed sections duplicated
by hooks (Session Start, Error Handling, Handoff) and skills (partial
updates, cascade events). Keeps identity, response format, delegation
pattern, and decision heuristics.
- task-mirroring skill: 836→300 words (64% reduction). Hooks handle
post-transition sync (status-sync.sh) and completion enforcement
(task-complete-sync.sh) deterministically. Skill now only covers
bootstrapping — initial mirror creation, status mapping, and
dependency mirroring.
- Cross-skill deduplication: Each concept now has a single owner skill.
Status flows/triggers/tags → status-progression. CC mirror sync →
task-mirroring. Partial updates → task-orchestration. Other skills
reference the owner with one-liner pointers instead of repeating content.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add 3 automation hooks, 2 new skills, and strip tool-doc duplication from all skills
New hooks:
- PostToolUse on manage_container: auto-prompts CC mirror creation for new tasks
- PostToolUseFailure on MCP tools: contextual error recovery guidance
- SubagentStop: prompts MCP task status sync when subagents reference MCP entities
SessionStart matcher expanded from "startup" to "startup|resume|compact" so MCP
state reloads on session resume and after context compaction.
New skills: template-management (manage_template, apply_template coverage),
project-orchestration (project-tier lifecycle coordination).
All 7 skills rewritten to remove verbose tool-call code blocks that duplicated
the 9.4k tokens of parameter documentation already provided by tool schemas.
Skills now contain only workflow patterns, decision heuristics, and key parameter
hints. Total skill word count: 1,828 words across 7 files.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add completion gate verification with requiresVerification flag
Adds a verification gate that blocks task/feature completion until
structured JSON acceptance criteria all pass. Inspired by Anthropic's
"Effective Harnesses for Long-Running Agents" article on preventing
premature completion.
Core changes:
- requiresVerification boolean on Task and Feature domain models
- VerificationGateService with 5-gate check (section exists, non-blank,
valid JSON, has criteria, all pass)
- Gate enforced at both request_transition(complete) and setStatus paths
- ApplyTemplateTool auto-sets flag when Verification section detected
- requiresVerification surfaced in all 6 QueryContainerTool response builders
- Advisory in GetNextStatusTool when gate is active
Database:
- V10: adds requires_verification column to tasks and features tables
- V11: adds Verification sections to 3 templates, disables Definition of Done
Templates:
- Verification section added to Task Implementation, Bug Investigation,
Requirements Specification
- Definition of Done disabled (superseded by enforceable JSON criteria)
Plugin:
- Planning hooks moved from settings.json into plugin session-hooks.json
- Verification gate guidance added to output style and task-orchestration skill
- AI guidance updated in McpServerAiGuidance.kt
Tests: 1172 total (45 new verification gate tests across 4 test files)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add 4 composable planning templates with signal-based auto-sizing
Add Feature Plan (FEATURE, 8 sections), Codebase Exploration (TASK, 3),
Design Decision (TASK, 3), and Implementation Specification (TASK, 5)
templates for tiered planning workflows (Quick/Standard/Detailed).
Disable Local Git Branching and GitHub PR Workflow templates — these
duplicate knowledge AI agents already have.
Refactor TemplateInitializerImpl to be incremental: creates only missing
templates instead of skipping all if any exist. Existing databases get
new templates on next startup.
V12 Flyway migration handles existing databases: inserts 4 new templates
with 19 sections, disables 2 outdated templates.
Update pre-planning hook to infer planning depth from user context
signals instead of always prompting. Agent determines tier autonomously
and asks only when genuinely ambiguous.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: correct hook JSON response formats per Claude Code docs
SessionStart hook was using `systemMessage` (user-facing warning) instead of
`hookSpecificOutput.additionalContext` (context injected into Claude). Five
scripts were missing the required `hookEventName` field. Added Session Start
section to output style as belt-and-suspenders reinforcement.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: report newly unblocked tasks in request_transition response
When a blocker task is completed or cancelled, request_transition now
identifies downstream tasks that became unblocked and includes them
in the response as an unblockedTasks array. This eliminates the need
for a follow-up get_blocked_tasks or get_next_task call to discover
newly available work.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: skip terminal tasks in mirroring and refresh docs
Task mirroring now skips completed/cancelled/archived tasks during
bootstrapping since CC tasks cannot be created in a completed state.
Also cleans up plugin settings, updates hook configs, and refreshes
README and template documentation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add visual formatting tiers and MCP bulk delegation rules to orchestrator output style
Adds a 4-tier visual formatting system (dashboard, decisions, narration, technical)
with consistent unicode symbols and markdown hierarchy. Adds MCP bulk operation
delegation rules — 3+ MCP calls offloaded to cheap subagents (haiku/sonnet) to keep
orchestrator context lean. Includes model tier guidance and handoff prompt requirements.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: remove task mirroring, restructure plugin output style, relax summary gate
Remove the CC task mirroring system (hooks, scripts, skill) which was
architecturally incompatible with subagent delegation and blocked by
additionalContext bug (#24788). Restructure the orchestrator output
style based on Claude Code best practices — heavy trim from 195 to 67
lines, moving workflow patterns to task-orchestration skill. Relax the
task summary completion gate to upper-bound only (500 chars max,
removing the 300 char minimum). Add project initialization guidance,
comprehensive tagging documentation, and action item tracking patterns.
Key changes:
- Delete task-mirroring skill and 4 mirroring hook scripts
- Consolidate agent identity to "project manager and workflow orchestrator"
- Add plan-before-acting principle with EnterPlanMode guidance
- Expand task-orchestration skill with delegation, tagging, and project init
- Store project UUID in CLAUDE.md for cross-session reference
- Update StatusValidator, tests, migration, and 9 doc files for summary gate
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add MCP 2025-11-25 structured content, tool annotations, and user summaries
Each tool call now returns a clean one-line summary in TextContent for
terminal display while the full typed data is available via
structuredContent. All 13 tools declare toolAnnotations (readOnlyHint,
destructiveHint, idempotentHint, openWorldHint) and override
userSummary() with operation-specific messages.
- Add toolAnnotations and userSummary() to ToolDefinition interface
- Add shortId() helper to BaseToolDefinition
- Add extractDataPayload() and isErrorResponse() to ResponseUtil
- Update McpToolAdapter to build structured CallToolResult
- Pass title, outputSchema, toolAnnotations through ToolRegistry
- Implement per-tool userSummary() for all 13 tools
- Add project-summary plugin skill
- Add ResponseUtilTest (10 tests) and userSummary tests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: align outputSchema with structuredContent and preserve error details
Update outputSchema on all 13 tools to describe the data payload shape
instead of the response envelope, fixing a spec violation where the
declared schema didn't match actual structuredContent output.
Also fix extractDataPayload() to include error message and details when
data is null on error responses, so the model receives actionable
guidance for self-correction instead of an empty object.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: disable MCP 2025-11-25 tool registration fields that break Claude Code
outputSchema, title, and toolAnnotations in server.addTool() cause Claude
Code's MCP client to silently drop all tools from the tools/list response.
structuredContent in tool responses remains enabled (works fine).
Tracked upstream: anthropics/claude-code#25081
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: include per-feature taskCounts in project overview response
Project overview now returns taskCounts (total + byStatus) for each
feature, enabling single-call dashboards without N+1 feature queries.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: simplify session start to use /project-summary skill
Replace inline MCP calls with skill invocation, reducing duplication
and leveraging per-feature taskCounts for complete dashboards.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: make CC tasks the default session progress tracker
Replace optional/gated CC task usage with proactive creation for
multi-step work, subagent delegation, and MCP task execution. Moves
deferred items to MCP action-item tasks where they belong.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: remove stale Workflow Prompts references, add request_transition guidance
Remove the getting_started MCP prompt (redundant with MCP Resources and CC
plugin skills). Strip 11 "Workflow Prompts" references from all 4 guideline
resources — that system was removed but references remained. Add
request_transition as the preferred status management tool across all
guidance content, keeping manage_container(setStatus) as fallback.
Relocate update efficiency and verification gate guides from the deleted
prompt into the workflow-integration resource.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: remove dead plugin hook scripts superseded by output style and skills
Session start, planning, error recovery, and subagent sync hooks all relied
on additionalContext injection which never worked for MCP tools (#24788).
These workflows are now handled by the output style and skill system.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: downgrade jvmToolchain to 21 for Docker container compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: treat cancelled tasks as terminal and enforce validation on update status changes
StatusValidator now recognizes cancelled tasks and archived features as
terminal states when checking completion gates. The manage_container
update operation now runs the same StatusValidator checks as setStatus
when a status field is included, closing the validation bypass.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add role-aware taskCounts with byStatus annotations and byRole aggregates
taskCounts responses now include workflow role annotations per status
(queue, work, review, blocked, terminal) and a byRole aggregate for
progress tracking. Roles are resolved from the configurable status
progression workflow via StatusProgressionService, which is now wired
into ToolExecutionContext. Graceful degradation when service is unavailable.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: restore planning hooks for MCP container materialization
Re-add PreToolUse (EnterPlanMode) and PostToolUse (ExitPlanMode) hooks
that inject planning guidance and MCP container creation instructions.
These hooks use command type with bash scripts since prompt hooks cannot
inject additionalContext. Previously removed in 9d5938a along with
MCP-tool hooks that don't support additionalContext (#24788).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: drop bash prefix from plugin hook commands for reliable execution
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add workflow enforcement hooks for status discipline and subagent injection
Add 3 new plugin hooks to enforce orchestration workflow discipline:
- PreToolUse prompt on manage_container: blocks setStatus, update-with-status,
bulkUpdate-with-status (redirects to request_transition), and create-without-
templates (redirects to query_templates)
- PreToolUse command on request_transition: reads transcript to verify
get_next_status was called before trigger=complete
- SubagentStart command on *: injects workflow rules into all subagent contexts
PostToolUse prompt hook on request_transition was tested and confirmed not
working — neither additionalContext nor prompt reason surfaces for MCP tool
PostToolUse events. Removed after verification.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add status transition validation and cascade detection to bulkUpdate and update
bulkUpdate now validates each entity's status transition via
StatusValidator.validateTransition with full PrerequisiteContext instead of
enum-only checks. Partial success reporting returns succeeded and failed
entities separately. Cascade events and unblocked downstream tasks are
detected and included in the response.
update operations that change status now detect cascade events (parent entity
advancement suggestions) and unblocked tasks (freed downstream dependencies),
matching request_transition response enrichment.
Adds 11 new tests covering valid/invalid transitions, partial success,
unblocked task detection, and non-status bulk updates.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: cascade-delete child entities on force-delete of features and projects
deleteFeature(force=true) and deleteProject(force=true) failed with
SQLITE_CONSTRAINT_FOREIGNKEY because they only deleted the parent's own
sections without removing child tasks, their dependencies, or their
sections first. Now both methods cascade in FK-safe order:
dependencies → task sections → tasks → feature sections → features →
parent sections → parent entity. Adds 9 test scenarios covering all
hierarchy combinations.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: consolidate dependency tools with bulk creation and graph traversal
Rename manage_dependency to manage_dependencies with array-based create
schema supporting bulk dependency creation and pattern shortcuts (linear,
fan-out, fan-in). Add neighborsOnly parameter to query_dependencies for
full server-side graph traversal with topological sort, critical path,
bottleneck detection, and parallelizable group identification.
Key changes:
- manage_dependencies: dependencies array, pattern shortcuts, atomic batch
validation with cross-batch cycle detection
- query_dependencies: neighborsOnly=false enables graph analysis response
with chain, depth, criticalPath, bottlenecks, parallelizable fields
- New DependencyGraphService with BFS traversal and Kahn's algorithm
- Repository batch create with transactional atomicity
- 64 new tests (42 manage_dependencies + 22 graph traversal)
- All hooks, skills, docs, and references updated for rename
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add graceful shutdown with signal handling and cleanup coordination
Docker containers were accumulating because the server had no signal handling —
docker stop sent SIGTERM but nothing caught it. This adds a ShutdownCoordinator
with exactly-once semantics, SIGTERM/SIGINT handlers, a JVM shutdown hook fallback,
and proper database cleanup via TransactionManager.closeAndUnregister().
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add batch transitions and embedded readiness to request_transition
Completing multiple tasks previously required 2 MCP calls per entity
(get_next_status + request_transition). Now request_transition accepts a
transitions array for batch processing and embeds flow context (activeFlow,
flowSequence, flowPosition) in every response, making get_next_status
optional. Removed the pre-completion-check hook since readiness validation
is now native to the tool.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: enforce materialize-before-implement sequencing in planning workflow
Strengthen output style and post-planning hook to prohibit dispatching
implementation subagents before MCP container materialization completes.
Parallel task creation within materialization is still allowed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: collapse completed features in project-summary dashboard
Show only active features in the table and summarize completed ones
as a single inline list. Reduces dashboard noise as features ship.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: show only count for completed features in project-summary
Drop the comma-separated name list — just the count is sufficient.
Names added clutter without actionable value.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: add cascade lifecycle prerequisites to status-progression and api-reference
Document that task→feature cascades require the feature to be in
in-development (work role) before all_tasks_complete fires. Skipping
the first_task_started step causes cascades to silently not trigger.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: add pre-existing container guidance to pre-planning hook
Guide agents to write existing feature UUIDs to plan.md before
ExitPlanMode so the post-plan hook enters revision mode instead
of creating duplicates.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: refresh status-progression.md and api-reference.md for overhaul branch
status-progression.md:
- Reframe Event-Driven Architecture from skills-based to trigger-based
- Replace 16+ stale manage_container(setStatus) references with request_transition
- Fix config path (orchestration → configuration)
- Add Role Annotations, Verification Gates, Completion Cleanup sections
- Add request_transition vs manage_container comparison table
api-reference.md:
- Fix tool count 12 → 13 and reduction ratio 79% → 77%
- Add bulkUpdate status validation note (StatusValidator per-entity)
- Add graph traversal response example for neighborsOnly=false
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: auto-apply cascade events in request_transition
Cascade events (first_task_started, all_tasks_complete, all_features_complete)
are now automatically applied after status transitions instead of being returned
as suggestions. This eliminates the need for agents to manually act on cascade
suggestions, fixing the common issue where features get stuck in planning.
- Add AutoCascadeConfig domain model and config section (enabled by default)
- Implement recursive applyCascades() loop with configurable depth cap (default 3)
- Wire into processSingleTransition() and processBatchTransitions()
- Update userSummary() to show cascade count in terminal output
- Add 13 new tests covering happy path, recursion, depth limit, error isolation
- Update status-progression.md, api-reference.md, and CLAUDE.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add setup-instructions skill, server.instructions, and close 8 workflow gaps
Create /setup-instructions skill with universal CLAUDE.md template for any
MCP client. Add two-layer architecture for non-plugin agents: server.instructions
(~80 tokens/session) points agents to check for version marker, MCP resource
(task-orchestrator://guidelines/setup-instructions) provides full template on
demand. Version marker (<!-- mcp-task-orchestrator-setup: v1 -->) enables
automatic update detection when the template evolves.
Also closes 8 workflow instruction gaps across existing plugin skills:
- status-progression: fix duplicate cascade header, add completion cleanup
and configuration override sections
- feature-orchestration: add feature tagging table and cleanup warning
- task-orchestration: add query operation selection, standalone vs feature
task framework, section tags, MCP resources reference
- subagent-workflow-context.sh: add DEPENDENCIES and CLEANUP paragraphs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat!: manage_container v2 — always-array API with 3 operations
Unify manage_container from 5 operations to 3 (create, update, delete),
all using array parameters for consistent batch support. Remove setStatus
(use request_transition) and bulkUpdate (merged into update). Update all
docs, tests, plugins, and hooks to reflect the v2 API surface.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: request_transition userSummary crash on single-entity summary field
The userSummary method assumed data["summary"] was always a JsonObject
(batch response counts), but single-entity responses put the caller's
note as a string in the same field. Safe-cast prevents the crash.
Also removes legacy single-param mode from tool schema and description
so agents only see the transitions array format.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: manage_dependencies — remove legacy single-create from schema
Remove legacy fromTaskId/toTaskId create mode from tool description and
schema descriptions so agents only see dependencies array and pattern
shortcuts for creation. Legacy code path preserved for backwards compat.
Clarify fromTaskId/toTaskId are for delete operations only.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: update all MCP resource and skill examples to v2 API format
Update manage_container, request_transition, and manage_dependencies
examples across MCP Resources, plugin skills, and tool descriptions
to use array-based v2 format exclusively. Add scoped CLAUDE.md as
canonical API format reference for cross-reference consistency.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: synchronize all documentation with v2 API format
Bump SETUP_INSTRUCTIONS_VERSION to v2. Sync setup instructions (MCP
resource + plugin skill) to show transitions array format. Update
api-reference.md request_transition params and manage_dependencies
create examples. Remove all legacy single-param references from
manage-dependency.md and ai-guidelines.md. Fix claude-plugin.md
hooks/scripts structure.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: genericize setup instructions and add SessionStart enforcement hook
Replace all user-facing "CLAUDE.md" references with generic "agent
instructions file" terminology in server.instructions and MCP resource
text. Add a SessionStart plugin hook that checks for the setup
instructions version marker and injects guidance when missing/outdated.
Includes a setup_check_enabled config parameter for opt-out.
Also deletes stale .taskorchestrator/status-workflow-config.yaml (zero
source references, old format) and creates the project's runtime config.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: correct Jekyll config theme key and stale nav reference
- `used theme: minima` was a no-op — fixed to `theme: minima`
- `workflow-prompts.md` renamed to `workflow-patterns.md` in header_pages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: consolidate WorkflowService into CascadeService
Replace two parallel workflow systems (WorkflowConfigLoader/WorkflowService
and StatusProgressionService) with a unified CascadeService. Eliminates dead
config file dependency (status_workflow_config.yaml), extracts 300+ lines of
cascade business logic from interface-layer tools into proper application-layer
service, and fixes StatusValidator AGENT_CONFIG_DIR support for Docker.
- New CascadeService handles cascade detection, application, and unblocked task detection
- Moved AppliedCascade from private inner class to domain model layer
- Deleted 7 source files + 3 test files (WorkflowConfigLoader, WorkflowService, unused domain models)
- Added 22 new CascadeService tests, updated 23 existing tool tests
- Net reduction: ~680 lines
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* test: comprehensive workflow configuration test coverage (+51 tests)
Fix CompletionCleanupService to fall back to bundled default-config.yaml
when no user config exists (aligning with CascadeServiceImpl pattern).
Add tests for all previously untested config keys: named flows
(with_review, with_deploy, experimental), feature flow_mappings,
auto_cascade config loading and tool-level behavior, completion_cleanup
config loading, and status_roles at both service and tool levels.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: convert plugin hook scripts from bash to Node.js
Bash scripts in the plugin cache get CRLF line endings on Windows,
which silently breaks heredoc parsing. Node.js (.mjs) is line-ending
agnostic and guaranteed available wherever Claude Code runs.
- Convert 4 .sh scripts to .mjs equivalents
- Update session-hooks.json command paths to use `node *.mjs`
- Delete original .sh scripts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: add missing hookEventName to SessionStart hook output
The session-setup-check script was outputting hookSpecificOutput without
the required hookEventName discriminator field, causing Claude Code's
schema validation to reject the output and display a startup hook error.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: update stale KDoc references from WorkflowService to CascadeService
WorkflowService was consolidated into CascadeService in 4b39538 but three
KDoc comments in the domain layer still referenced the old name.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add status, priority, and tags filters to overview queries
Adds filter parameters to query_container(operation="overview") so agents
can control payload size. Filters apply to child collections (features in
project overview, tasks in feature overview) while keeping parent-level
taskCounts unfiltered for true health reporting. Response includes *Meta
fields (returned/total) when filters are active.
- OverviewFilters data class with raw string storage (fixes enum type
mismatch when filtering children of a different container type)
- matchesOverviewFilters() parses filter for the child's actual type
- All 6 overview methods (3 global + 3 scoped) support filtering
- 10 new tests in FilteredOverviewTests
- Updated api-reference.md and project-summary skill
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: reject TEMPLATE and SECTION entityType in manage_sections
The parameterSchema exposed all EntityType enum values including TEMPLATE
and SECTION. The add operation silently accepted TEMPLATE, validated the
template existed, then wrote sections to the wrong table (sections instead
of template_sections), creating invisible data. Restricts entityType enum
to PROJECT, FEATURE, TASK and adds validation in add, reorder, and
bulkCreate operations. Adds 4 regression tests.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: simplify default task flow to 3 statuses, add with_testing_flow
Remove testing from default_flow and bug_fix_flow since AI-driven
development typically validates inline rather than in a separate QA
phase. Add with_testing_flow for tasks tagged qa-required or
manual-test that need explicit QA. Update test expectation for the
4-element default flow.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: update status-progression guide for simplified default flow
Reflect the 3-status default task flow throughout examples, flow
diagrams, and response samples. Update progress calculation comments
and flow position references to match the new sequence.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: update plugin for simplified flow, transition guidance, and auto-continuation
Update all plugin skills and hooks for the 3-status default task flow
and new with_testing_flow. Add transition mechanics section to
status-progression skill explaining call counts per flow. Bump setup
instructions to v3 with updated flow tables. Make post-plan execution
automatic — plan approval is the green light for both materialization
and implementation without stopping for additional confirmation. Add
default flow guidance to subagent workflow context.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: fix stale dependency tool references in architecture and changelog
Update architecture.md tool listing from legacy names
(CreateDependencyTool, GetTaskDependenciesTool, DeleteDependencyTool)
to current consolidated names. Add parenthetical note in changelog
for the dependency tool consolidation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add role-based workflow progression with dependency gating, queries, and audit trail
Transform semantic roles (queue, work, review, blocked, terminal) from
informational annotations into the primary behavioral mechanism for
dependency blocking, query filtering, and cascade detection.
Key changes:
Role-Based Dependency Gating (Feature A):
- Add StatusRole enum with hardcoded ordering and isRoleAtOrBeyond()
- Add unblockAt field to Dependency model (null defaults to terminal)
- Add getBlockerTaskId()/getBlockedTaskId() direction normalization
- Refactor StatusValidator to accept StatusProgressionService injection
- Replace 7 hardcoded blocking checks with role-aware resolution
- Add unblockAt parameter to manage_dependencies create flow
- Include unblockAt and blocker role in query/blocked task responses
- V13 migration: ALTER TABLE dependencies ADD COLUMN unblock_at
Role-Aware Queries & Transition History (Feature B):
- Add getStatusesForRole() reverse lookup on StatusProgressionService
- Add role parameter to query_container search and overview operations
- Create RoleTransition domain model and repository
- Record role transitions in request_transition on role changes
- Add role_transitions MCP resource endpoint for audit queries
- Add role aggregation rules in CascadeService with YAML config
- V14 migration: CREATE TABLE role_transitions with indexes
Role-Based Templates & Documentation (Feature C):
- Tag 46 template sections across 13 templates with role:{name}
- Document role tag convention, hook integration guide
- Update API reference, status-progression docs, and plugin skill
- Add agent delegation pattern guide (role-to-agent mapping)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: update plugin skills, hooks, output styles, and setup resource for role-based features
Align all consumer-facing content with the role-based workflow
progression changes (unblockAt gating, role queries, transition
annotations, role-tagged templates).
Skills (6 updated):
- dependency-analysis: add unblockAt, role-based unblocking section
- feature-orchestration: add role query filter, role aggregation
- project-orchestration: add role filter for project-wide queries
- task-orchestration: add role filter, role-tagged section guidance
- template-management: add role tag convention section
- setup-instructions: add role query rule, unblockAt guidance,
previousRole/newRole in post-transition handling
Hooks (2 updated):
- subagent-workflow-context: add ROLES paragraph, unblockAt guidance
- session-setup-check: bump EXPECTED_VERSION from v2 to v3
Output styles (2 updated):
- orchestrator: add return format discipline, role-aware queries
- workflow-analyst: add multi-status role query detection pattern
Codebase resource:
- TaskOrchestratorResources: bump setup instructions to v3, fix stale
default task flow, add role features to template, add qa-required row
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: replace broken transitions resource with query_role_transitions tool, comprehensive doc audit
The MCP SDK 0.8.3 addResource does exact URI matching — resource
templates with {entityId} are silently registered but can never be
read. Replace the unreachable transitions resource with a proper
MCP tool.
query_role_transitions tool (14th tool):
- Parameters: entityId (required), entityType, limit, fromRole, toRole
- Returns audit trail of role changes with timestamps and triggers
- 15 tests (7 execution + 6 validation + 2 user summary)
Resource cleanup:
- Remove addRoleTransitionResource from TaskOrchestratorResources
- Remove repositoryProvider param from configureResources/configureAiGuidance
- Register QueryRoleTransitionsTool in McpServer.createTools()
Documentation audit (4-agent team, 20 files):
- Fix tool count 12/13 -> 14 across all docs, skills, CLAUDE.md
- Add full query_role_transitions section to api-reference.md
- Fix 7 stale default_flow examples (remove testing from default)
- Fix status-progression skill transition call counts
- Modernize architecture.md ASCII diagrams to v2 tool names
- Add query_role_transitions refs to subagent hook + output styles
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: rewrite architecture guide for v2.0 with client/server separation
Full rewrite of architecture.md to reflect the current v2.0 codebase.
Establishes clear boundary between the client-agnostic MCP server
(Part 1) and the Claude Code plugin as a client-specific extension
(Part 2).
Key changes:
- Replace stale v1 tool references with 14 consolidated v2.0 tools
- Add Status Progression System section (roles, flows, triggers, cascade)
- Add system boundary diagram showing MCP server vs client layer
- Reframe AI Guidance as client-agnostic (not Claude-specific)
- Add Part 2: Claude Code Plugin with skills, hooks, output style inventory
- Include "Building Plugins for Other Clients" guidance
- Remove sub-agent orchestration and 4-tier hybrid sections (plugin concerns)
- Update technology versions (MCP SDK 0.8.3, Exposed 1.0.0-beta-2, etc.)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: remove obsolete subagent-template.md and fix reference
Subagent template is a Claude Code plugin concern, not an MCP server
doc. Removed the file and its reference from the internal CLAUDE.md
downstream consumers table.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: resolve 3 role-based dependency gating bugs found during probing
- StatusValidator now receives StatusProgressionService from context,
fixing permanent blocking of non-terminal unblockAt thresholds
- IS_BLOCKED_BY deps now checked in StatusValidator, GetBlockedTasksTool,
and CascadeServiceImpl by querying both dependency directions
- CascadeServiceImpl records role transitions for auto-cascaded entities
via new roleTransitionRepository dependency
1592 tests passing (535 new lines of test coverage)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: resolve 4 remaining issues from role-based dependency gating probing
- Fix IS_BLOCKED_BY candidate discovery in CascadeServiceImpl.findNewlyUnblockedTasks()
outer loop — now queries both directions so IS_BLOCKED_BY deps report unblocked tasks
- Fix auto-cascade single-step advancement — when all children are terminal, features
and projects now cascade directly to terminal status instead of advancing one step
- Add "resume" trigger to request_transition for recovering from on-hold/blocked status,
using role transition history to restore the previous in-flow status
- Add dependency-awareness to get_next_status — tasks with incomplete blocking dependencies
now return "Blocked" recommendation instead of misleading "Ready"
18 new tests (1610 total), all passing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: add tight coupling documentation and version sync test
Document cross-referencing requirements for status enums, service
dependencies, template registration, and plugin manifest sync in
CLAUDE.md files. Add SetupVersionSyncTest to catch SETUP_INSTRUCTIONS_VERSION
drift across Kotlin constant, hook script, and skill template before publish.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: cascade step-by-step advancement, complete trigger gating, and template role-tag alignment
Cascade improvements:
- CascadeService now advances features one step at a time through their
workflow flow instead of jumping directly to terminal status
- Added feature_self_advancement event detection for continued progression
after feature transitions (not just task completions)
- Verification gate respected during cascade — features with
requiresVerification stop before terminal and require manual completion
- Auto-cascade max_depth increased from 3 to 10 to support multi-step
intermediate status progression
Request transition improvements:
- Complete trigger now validates workflow position — only allowed from
penultimate status or later, preventing skip of intermediate steps
- Added back trigger for moving to previous status in workflow flow
- Flow context in response now shows post-transition position
Template role-tag corrections (11 sections across 5 templates):
- FeaturePlan: Implementation Phases and File Change Manifest gain
role:work (referenced during active development); Verification JSON
corrected from role:queue to role:review
- ImplementationSpec: Code Change Points, Technical Spec, Test Plan gain
role:work; Verification JSON corrected from role:queue to role:review
- TestingStrategy: Test Coverage corrected from role:review to
role:queue+role:work (planned then executed); Acceptance Criteria gains
role:review (verified during review)
- BugInvestigation: Fix & Verification gains role:work (fix is active work)
- RequirementsSpec: Verification JSON corrected from role:terminal to
role:review (review gate, not terminal state)
Config: completion_cleanup disabled by default
Docs: updated api-reference, request-transition docs, plugin skills
Tests: comprehensive coverage for cascade, cleanup, transition, and
query container changes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* test: add 6 semantic role-tag validation tests for template sections
Add assertion-based tests to RoleTaggedTemplateTest that enforce semantic
invariants for section role assignments:
1. JSON Verification sections must include role:review
2. acceptance-criteria tagged sections must include role:review
3. fix-implementation tagged sections must include role:work
4. implementation+execution tagged sections must include role:work
5. Every enabled task template has at least one role:work section
6. Every enabled feature template has at least one role:queue section
These tests encode the correctness rules that the role-tag alignment
corrections followed. Test #2 immediately caught that Must-Have
Requirements had an "acceptance-criteria" semantic tag despite being a
queue-only planning section — removed the tag since the Verification
JSON section is the actual acceptance gate.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: restore acceptance-criteria tag on Must-Have Requirements with role:review
The previous commit removed the acceptance-criteria semantic tag to pass
the new validation test. The correct fix is to keep the tag (Must-Have
Requirements does define acceptance criteria) and add role:review so the
section surfaces during review when verifying requirements are met.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add current (v3) module with unified WorkItem model and 10 MCP tools
Implements the v3 architecture as a Gradle submodule under current/ with a
simplified 5-role model (QUEUE, WORK, REVIEW, BLOCKED, TERMINAL) replacing
v2's configurable status flows. Single WorkItem entity with parent-child
hierarchy replaces the Project/Feature/Task split.
Phase 1 (CRUD): manage_items, query_items, manage_notes, query_notes
Phase 2 (Workflow): request_transition, get_next_status, get_next_item,
get_blocked_items, manage_dependencies, query_dependencies
Key design decisions:
- Stateless utility classes (RoleTransitionHandler, CascadeDetector) instead
of heavyweight services with config caching
- Iterative detect-apply cascade pattern for correct multi-level propagation
- Role-based dependency gating with unblockAt thresholds
- Batch transitions with independent per-item error handling
501 tests across domain models, repositories, tool logic, and integration.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: complete v3 Phase 2 — advance_item tool, note schema gates, model corrections
- Rename request_transition → advance_item (tool name, class, file, tests)
- Add requiresVerification field and make complexity nullable (Int? = null) on WorkItem
- Flyway V2 migration: recreate work_items with nullable complexity + requires_verification column
- Add NoteSchemaEntry domain model and NoteSchemaService interface + NoOpNoteSchemaService
- Add YamlNoteSchemaService: reads .taskorchestrator/config.yaml, AGENT_CONFIG_DIR-aware, testable via path injection
- Wire NoteSchemaService into ToolExecutionContext and CurrentMcpServer
- Gate enforcement in AdvanceItemTool: start checks current-phase required notes, complete checks all phases
- Schema-detected review phase: hasReviewPhase=false causes WORK→TERMINAL (skip REVIEW)
- Add expectedNotes array to AdvanceItemTool success responses
- Add roleChangedAfter/Before temporal filters to query_items and WorkItemRepository
- 523 tests, 0 failures
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* feat: add v3 Phase 3 & 4 — compound operations, context delivery, and plugin
Phase 3 — Compound Operations:
- create_work_tree: atomic hierarchy creation (root + children + deps + notes)
in a single DB transaction via WorkTreeService; ref-based local names for dep wiring
- complete_tree: batch terminal transitions with Kahn's topological ordering,
gate enforcement (missing required notes), and skip propagation to dependents
- findDescendants: iterative BFS added to WorkItemRepository + SQLiteWorkItemRepository
Phase 4 — Context Delivery:
- get_context: 3-mode context tool (item schema + gate status, session resume since
timestamp, and health check); uses findSince on RoleTransitionRepository
- findSince: new RoleTransitionRepository method for session-resume queries
- Claude Code plugin (claude-plugins/current/): 5 hooks (.mjs), 3 skills
(project-summary, status-progression, schema-builder), current-analyst output style
Tool count: 10 → 13 (added complete_tree, create_work_tree, get_context)
Test count: 523 → 558 (+35 new tests, 0 failures)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix: add true DB transaction atomicity to create_work_tree via infrastructure layer
WorkTreeService (app layer) called repository methods that each committed their
own independent newSuspendedTransaction in Exposed 1.0.0-beta-2. A midway failure
left orphaned rows — the "atomic" KDoc was aspirational, not real.
Fix: introduce SQLiteWorkTreeService (infrastructure layer) that writes all rows
— WorkItems, Dependencies, Notes — using Exposed table objects directly inside a
single newSuspendedTransaction. Any exception triggers a full rollback.
Architecture:
- NEW application/service/WorkTreeExecutor.kt — WorkTreeExecutor interface +
TreeDepSpec, WorkTreeInput, WorkTreeResult data classes (replaces WorkTreeService)
- DELETE application/service/WorkTreeService.kt
- NEW infrastructure/service/SQLiteWorkTreeService.kt — direct table access,
all inserts in one transaction; cyclic check skipped (new items only)
- RepositoryProvider / DefaultRepositoryProvider: expose workTreeExecutor()
- ToolExecutionContext: expose workTreeExecutor() (removed database() accessor)
- CreateWorkTreeTool: uses context.workTreeExecutor().execute(input)
- CreateWorkTreeToolTest: simplified to mock one WorkTreeExecutor (was 3 repos)
- NEW WorkTreeServiceIntegrationTest: proves rollback via Result.Error after
midway failure against a real H2 in-memory database
Also adds: DependencyRepository.createSuspend() suspend variant (no longer used
in the main path but retained for general use), RepositoryProvider.database()
accessor (vestigial, harmless).
Test count: 558 → 561. 0 failures.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* feat: add Docker v2/v3 architecture switch with multi-stage Dockerfile
- Dockerfile: extract runtime-base stage, add runtime-v2 and runtime-current
targets, build both module JARs in one builder pass
- docker-compose.yml: add mcp-task-orchestrator-current service (profile: current)
with separate mcp-task-data-current volume; both services use same MCP server name
- docker-build.sh/bat: add --current (v3 only) and --all (both) flags
- deploy_to_docker skill: add --current flag for v3 target and volume selection
Switch to v3: docker compose --profile current up mcp-task-orchestrator-current
Switch to v2: docker compose up (unchanged default)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* chore: update marketplace to list both current and clockwork plugins
- marketplace.json: fix source path (task-orchestrator → clockwork),
add current-task-orchestrator as primary entry, rename v2 entry to clockwork
- clockwork/plugin.json: rename internal name from task-orchestrator to clockwork
Both plugins installable locally. When going public, drop the clockwork entry.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* docs: add CLAUDE.md to claude-plugins/ enforcing version bump discipline
Documents the requirement to bump both marketplace.json and plugin.json
versions whenever plugin content changes, to prevent Claude Code from
serving stale cached scripts/skills/hooks.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* chore: rename current plugin to 'current' and fix stale doc link
- marketplace.json: shorten plugin name from current-task-orchestrator to current
- docs/hook-integration-guide.md: update skills link from task-orchestrator/ to clockwork/
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix: correct plugin manifest paths and bump current plugin to 1.0.1
The current plugin's plugin.json used ../ paths (relative to its
.claude-plugin/ subdirectory) for skills, hooks, and outputStyles.
The Claude Code validator resolves these paths from the plugin source
root, so ../ escaped the plugin directory and failed validation with
"Invalid input" errors on all three fields.
Changed all three paths from ../ to ./ so they resolve correctly
from the plugin root directory, matching the pattern used by the
clockwork plugin.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix: convert current plugin hooks to object schema, bump to 1.0.2
The Claude Code plugin system now requires hooks config to be a
{ "hooks": { "<EventName>": [...] } } object rather than a flat
array. Also switched command paths to use ${CLAUDE_PLUGIN_ROOT}
for reliable resolution regardless of working directory.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* feat: remove stop hook and add model selection guidance to current-analyst, bump to 1.0.4
- Remove stop-check.mjs and its hook entry (stop hooks lack conversation
context and proved unreliable for MCP state checks)
- Update hooks-config.json to object schema (already in progress)
- Add Model Selection section to current-analyst.md output style with
3-tier haiku/sonnet/opus guidance keyed to task type
- Bump current plugin 1.0.2 → 1.0.4
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* feat: add start cascade — parent auto-advances when first child starts
When a child item transitions to work role, the parent now automatically
advances from queue to work via a new first_child_started cascade event.
- Add StartCascadeConfig (enabled: true by default) loaded from config
- Detect first_child_started in detectTaskCascades() (task→feature) and
detectFeatureCascades() (feature→project) using role-based checks
- Wire StartCascadeConfig into CascadeServiceImpl constructor via McpServer
- Add start_cascade section to default-config.yaml
- Add 6 new test cases in StartCascadeTests; update existing tests with
required feature role mocks
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix: remove trailing comma in hooks-config.json, bump current plugin to 1.0.5
Invalid JSON (trailing comma after last hooks entry) caused plugin load
failure. Fixed and bumped patch version per claude-plugins/CLAUDE.md policy.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor: rewrite cascade detection as pure role-based logic
Remove all status-string cascade detection in favor of role comparisons.
V3 architecture treats role as the canonical state — status_label is
display-only and must never trigger cascades.
- Remove first_task_started (checked taskStatus == "in-progress")
- Remove RoleAggregationConfig, loadAggregationRules(), checkRoleAggregation(),
countTasksByStatus() — all used target_feature_status (status strings)
- Add Rule 2: all_children_in_review — when all siblings reach review or
beyond and parent is in work, parent advances to review
- Keep first_child_started (role-based: newRole == WORK, parent == QUEUE)
- Completion cascade rewritten to check item.role == TERMINAL
-…1 parent 76ba059 commit 7907edd
2 files changed
+14
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
8 | 21 | | |
9 | 22 | | |
10 | 23 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
0 commit comments