Commit c9f41f6
release: v2.5.2 — consistent schema fields, test coverage, container schema (#92)
* feat(plugin): add tiered execution model (Direct/Delegated/Parallel)
Output style now classifies work into three tiers with proportional
process. Direct tier (1-2 files, known fix) implements inline — no
subagent dispatch, no plan mode, no separate review. Delegated and
Parallel tiers preserve the full pipeline.
Changes:
- workflow-orchestrator.md: tier classification section, conditional
principles, Direct Tier Workflow section, frontmatter added, removed
project-specific references (session-retrospective, quick-fix schema,
gradlew), removed redundant delegation templates
- implement skill: tier-conditional Steps 1/3/4/5, two-dimensional
classification (tier + interaction mode), resume-with-tier-awareness
- pre-plan.mjs: Direct tier safety net message
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor(plugin): trim workflow-orchestrator to universally valuable content
Remove project-specific details, redundant templates, and niche
operational guidance. Condense worktree dispatch to 4 universal
principles, session tasks to one line, completion format to inline.
Drop schema tag row, delegation metadata section, return format
templates, and guidancePointer rendering convention.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore(plugin): minor cleanup — schema context in implement skill, analyst zone updates
- Implement skill: add schema context to session-tracking note reference
- Workflow-analyst Zone 2: add Delegation Metadata section, tier-aware
Parallel Dispatch reference
- Workflow-analyst Zone 3: replace stale manifest monitoring with tier
classification monitoring, connect analysis layer to /session-retrospective
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor(plugin): strengthen planning hooks and enforce WHAT/HOW separation
Planning hooks now use imperative gate language (PREREQUISITE/MUST/NEXT STEP)
instead of suggestive phrasing that lost attention competition with plan mode.
Output style trimmed to WHAT-level principles — procedural HOW detail moved to
skills where it belongs. Worktree Dispatch section removed (prescriptive technique,
not a principle). Skills get explicit handoff sections for clean control flow.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: enforce IS_BLOCKED_BY deps in advance_item and unblock detection
IS_BLOCKED_BY dependencies were checked by get_blocked_items and
get_next_item but silently ignored by advance_item (validateTransition)
and CascadeDetector (findUnblockedItems/isFullyUnblocked). This meant
agents could advance items past IS_BLOCKED_BY gates that the read-only
tools correctly reported as blocked.
- RoleTransitionHandler.validateTransition now queries findByFromItemId
for outgoing IS_BLOCKED_BY edges in addition to findByToItemId for
incoming BLOCKS edges
- CascadeDetector.findUnblockedItems discovers IS_BLOCKED_BY targets
via findByToItemId (incoming IS_BLOCKED_BY on the transitioning item)
- CascadeDetector.isFullyUnblocked checks outgoing IS_BLOCKED_BY edges
on the target item via findByFromItemId
- All existing tests updated with explicit dep mocks (no relaxed defaults)
- Added IS_BLOCKED_BY coverage for GetBlockedItemsTool, GetNextItemTool,
and GetNextStatusTool (satisfied, unsatisfied, mixed, custom unblockAt)
- Fixed reversed dependency example in quick-start.md
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor(plugin): improve manage-schemas templates and guidance generation
- Updated feature-implementation and bug-fix schema templates to align
with spec-quality and review-quality frameworks
- Added guidance generation rules (lead with consumer, structure over
prose, concrete over generic, session-tracking prompt)
- Added cross-schema duplication check when editing guidance values
- Companion template now preserves markdown formatting in guidance text
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* test(cascade): add DetectReopenCascades coverage + transaction-gap KDoc
Add 5 test cases for CascadeDetector.detectReopenCascades (previously zero coverage)
and document the intentional detect/apply transaction split with KDoc.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(config): add structured warning collection to YamlNoteSchemaService
Add SchemaLoadResult with warnings list, surface via getLoadWarnings()
on NoteSchemaService interface. Warnings collected for: missing key,
missing role, non-boolean required, missing note_schemas key, parse errors.
Log summary at INFO on startup.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(tools): always include expectedNotes and schemaMatch in create response
manage_items create now returns expectedNotes (empty array when no schema
matches) and schemaMatch (boolean) on every item. Previously expectedNotes
was omitted when no schema matched, making it ambiguous for consumers.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor: deduplicate WorkTreeService insert/upsert with repository helpers
Extract insertRow() and upsertRow() internal helpers on SQLiteWorkItemRepository
and SQLiteNoteRepository. SQLiteWorkTreeService now delegates to these instead of
duplicating column-mapping logic. Helpers return Result types; WorkTreeService
checks for Result.Error explicitly to trigger rollback.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor(service): extract SchemaEntryJsonBuilder — unify schema-to-JSON across 4 tools
Add buildExpectedNotesJson() and buildSchemaResponseFields() to replace
6 duplicated schema-entry-to-JSON mapping blocks across CreateItemHandler,
CreateWorkTreeTool, AdvanceItemTool, and GetContextTool. Supports 3 shape
variants (creation/transition/context) via parameters. CreateWorkTreeTool
now consistently includes expectedNotes and schemaMatch fields.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* test: close H1/H2/M5 gaps — WorkTreeService rollback, happy path with notes, note ID preservation
H1: duplicate item UUID causes full transaction rollback
H2: items + deps + notes all committed atomically on happy path
M5: upsert preserves original note ID and createdAt on update
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* test: close H3/H4/M3/M4 gaps — expectedNotes inspection, reopen cascade, blank body, noteProgress
H3: expectedNotes array contents verified after queue-to-work transition
H4: reopen child under terminal parent cascades parent back to work
M3: exists=true + blank body → filled=false in GetContextTool
M4: noteProgress filled/remaining/total directly asserted
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* test: close M1/M2/M6/M7/M8 gaps — lazy init, wrong YAML type, empty schema, exists=false, getLoadWarnings
M1: lazy init triggered by first getSchemaForTags call (bad role skipped)
M2: note_schemas as YAML list returns null without crashing
M6: schemaMatch=true with empty schema list, expectedNotes is empty array
M7: exists=false explicitly asserted on CreateWorkTreeTool expectedNotes
M8: getLoadWarnings() default method returns empty list
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs(plugin): add container schema example to manage-schemas skill
Teaches the gate-free pattern for organizational root containers that
should not be gated on implementation-oriented notes like session-tracking.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* release: bump to v2.5.2 — plugin v2.7.3
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1 parent eee3919 commit c9f41f6
29 files changed
Lines changed: 1494 additions & 233 deletions
File tree
- .claude-plugin
- claude-plugins
- task-orchestrator
- .claude-plugin
- skills/manage-schemas/references
- current/src
- main/kotlin/io/github/jpicklyk/mcptask/current
- application
- service
- tools
- compound
- items
- workflow
- infrastructure
- config
- repository
- service
- test/kotlin/io/github/jpicklyk/mcptask/current
- application
- service
- tools
- compound
- items
- workflow
- infrastructure
- config
- database/repository
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
| 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 | + | |
| 21 | + | |
8 | 22 | | |
9 | 23 | | |
10 | 24 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
Lines changed: 15 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
91 | 91 | | |
92 | 92 | | |
93 | 93 | | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
94 | 109 | | |
95 | 110 | | |
96 | 111 | | |
| |||
Lines changed: 18 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
43 | 61 | | |
44 | 62 | | |
45 | 63 | | |
| |||
Lines changed: 7 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
28 | 35 | | |
29 | 36 | | |
30 | 37 | | |
| |||
Lines changed: 69 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
Lines changed: 11 additions & 42 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| |||
351 | 352 | | |
352 | 353 | | |
353 | 354 | | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
354 | 358 | | |
355 | 359 | | |
356 | 360 | | |
357 | 361 | | |
358 | 362 | | |
359 | 363 | | |
360 | 364 | | |
361 | | - | |
362 | | - | |
363 | | - | |
364 | | - | |
365 | | - | |
366 | | - | |
367 | | - | |
368 | | - | |
369 | | - | |
370 | | - | |
371 | | - | |
372 | | - | |
373 | | - | |
374 | | - | |
375 | | - | |
376 | | - | |
377 | | - | |
378 | | - | |
379 | | - | |
380 | | - | |
381 | | - | |
| 365 | + | |
| 366 | + | |
382 | 367 | | |
383 | 368 | | |
384 | 369 | | |
385 | 370 | | |
386 | 371 | | |
387 | 372 | | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
388 | 376 | | |
389 | 377 | | |
390 | 378 | | |
391 | 379 | | |
392 | 380 | | |
393 | 381 | | |
394 | 382 | | |
395 | | - | |
396 | | - | |
397 | | - | |
398 | | - | |
399 | | - | |
400 | | - | |
401 | | - | |
402 | | - | |
403 | | - | |
404 | | - | |
405 | | - | |
406 | | - | |
407 | | - | |
408 | | - | |
409 | | - | |
410 | | - | |
411 | | - | |
412 | | - | |
413 | | - | |
414 | | - | |
415 | | - | |
| 383 | + | |
| 384 | + | |
416 | 385 | | |
417 | 386 | | |
418 | 387 | | |
| |||
Lines changed: 4 additions & 17 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
| |||
138 | 139 | | |
139 | 140 | | |
140 | 141 | | |
| 142 | + | |
141 | 143 | | |
142 | 144 | | |
143 | 145 | | |
| |||
151 | 153 | | |
152 | 154 | | |
153 | 155 | | |
154 | | - | |
155 | | - | |
156 | | - | |
157 | | - | |
158 | | - | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | | - | |
163 | | - | |
164 | | - | |
165 | | - | |
166 | | - | |
167 | | - | |
168 | | - | |
169 | | - | |
170 | | - | |
| 156 | + | |
| 157 | + | |
171 | 158 | | |
172 | 159 | | |
173 | 160 | | |
| |||
0 commit comments