feat(workflow): config-driven status labels with query response support#71
Merged
feat(workflow): config-driven status labels with query response support#71
Conversation
Introduces structured post-implementation analysis — a /session-retrospective skill that evaluates schema effectiveness, delegation alignment, note quality, plan-to-execution fit, and friction across five dimensions. Includes run manifest instructions in the shared orchestrator output style for durable session telemetry, and a retrospective nudge after implementation completions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Address issues found during skill review: remove hardcoded absolute paths, add early exit for empty sessions, expand trigger description, simplify terminal advancement, and add recency filter to fallback mode. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Cascade auto-completion previously bypassed gate enforcement, allowing parent items with schema tags to reach TERMINAL with required notes unfilled. Now cascade-to-TERMINAL checks all required notes (matching the "complete" trigger behavior). Schema-free parents cascade freely. Also extracts buildMissingNotesArray() to NoteSchemaJsonHelpers and replaces inline filledKeys computation with buildFilledKeys() across all three gate-check paths. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update the /implement skill to reflect the local-first git workflow: branches stay local, squash-merge into local main, and PRs are batched. Align CLAUDE.md git workflow section to match. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tion - Add VALID_SCHEMA_ROLES validation in YamlNoteSchemaService.parseEntry() to catch typos and invalid role values at config load time (warns + skips) - Consolidate AdvanceItemTool response fields to use shared computePhaseNoteContext() instead of manual NoteSchemaJsonHelpers calls - Remove findGuidancePointer() and buildNoteProgress() from NoteSchemaJsonHelpers (now gate-check helpers only) - Add plugin-change schema to config.yaml (gitignored, local only) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…sion Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…s, and helpers Add reusable test utilities under current/src/test/.../test/: - TestFixtures.kt: makeItem(), blocksDep(), makeNote(), JSON param helpers, response extractors - BaseRepositoryTest.kt: H2 in-memory DB base class with createPersistedItem/Note/Dependency - MockRepositoryProvider.kt: MockK-based RepositoryProvider factory with context() builder - TestNoteSchemaService.kt: In-memory NoteSchemaService with FEATURE_IMPLEMENTATION/BUG_FIX presets - TestInfrastructureTest.kt: 27 validation tests covering all shared infrastructure Migrated SQLiteWorkItemRepositoryTest to extend BaseRepositoryTest as proof of concept. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The retrospective nudge previously only fired after complete_tree, missing single-item runs that reach terminal via advance_item. Updated the nudge condition to trigger on any terminal transition during an /implement run, with single-item, multi-item, and fallback detection rules. Also: minor AdvanceItemTool optimization — derive existingKeys from notesByKey instead of a separate .map() pass. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The monolithic run manifest (stored as a CC session task) had a 100% creation failure rate. Replace it with distributed `session-tracking` notes on each work item, enforced by schema gates. - Add default schema fallback to YamlNoteSchemaService (one-line change) - Add session-tracking note to feature-implementation, bug-fix, and plugin-change schemas in config.yaml - Create new `default` schema as catch-all for untagged items - Rewrite session-retrospective skill to aggregate distributed notes - Remove manifest section from workflow-orchestrator output style - Add lightweight delegation-metadata pattern for orchestrator-side data - Simplify retrospective nudge (remove manifest references) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Split feature work into two schema tiers: feature-implementation for the parent container (full spec, holistic review with /simplify) and feature-task for child work items (task-scope, task-level review). Plugin skills updated to remain generic — they reference config.yaml for schema discovery rather than hardcoding specific tag names. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…responses Add StatusLabelService for trigger-to-label auto-mapping on role transitions. Labels are configured in .taskorchestrator/config.yaml (status_labels section) with hardcoded defaults as fallback. Label precedence: hardcoded resolution (cancel/reopen) > config-driven > null. Changes: - NEW: StatusLabelService interface + NoOpStatusLabelService defaults - NEW: YamlStatusLabelService reads config with AGENT_CONFIG_DIR support - Wire label resolution into AdvanceItemTool, CompleteTreeTool (including cascade) - Surface statusLabel in QueryItemsTool search, overview, and get responses - Add statusLabel to toMinimalJson and toFullJson serializers - 23 new tests: YamlStatusLabelService (11), AdvanceItemTool (6), CompleteTreeTool (2), QueryItemsTool (4) — covering config-driven labels, cascade labels, label precedence, block/resume, and query responses - Update workflow-guide.md and api-reference.md documentation - Enforce explicit model parameter in delegation table (plugin/skill update) Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
StatusLabelServicefor config-driven trigger-to-label auto-mapping on role transitions (start→"in-progress",complete→"done",block→"blocked",cancel→"cancelled",cascade→"done").taskorchestrator/config.yamlstatus_labelssection with hardcoded defaults as fallbackAdvanceItemToolandCompleteTreeTool, including cascade eventsstatusLabelin allQueryItemsToolresponse formats (get, search, overview) viatoMinimalJsonandtoFullJsonserializersNew Files
StatusLabelService.ktNoOpStatusLabelServicewith hardcoded defaultsYamlStatusLabelService.ktAGENT_CONFIG_DIRsupportTestStatusLabelService.ktYamlStatusLabelServiceTest.ktModified Files
ToolExecutionContext.ktstatusLabelServiceparameter with defaultCurrentMcpServer.ktYamlStatusLabelServiceAdvanceItemTool.kteffectiveLabel, apply to transitions + cascadesCompleteTreeTool.kteffectiveLabelpattern for batch completionQueryItemsTool.ktstatusLabelto global overview root items and childrenEntityJsonSerializers.ktstatusLabeltotoMinimalJson()andtoFullJson()workflow-guide.mdapi-reference.mdstatusLabelin response schemasworkflow-orchestrator.mdimplement/SKILL.mdTest Results
23 new tests added across 4 files, all passing:
YamlStatusLabelServiceTestAdvanceItemToolTestCompleteTreeToolTestQueryItemsToolTestFull test suite: BUILD SUCCESSFUL (all existing tests unaffected)
Config Example
MCP Items
ddbe1829— Custom status labels feature (parent)85321ddd— Status Labels test coverage gaps4c85f0dc— Model enforcement improvement proposal🤖 Generated with Claude Code