Skip to content

v1.16.0

Choose a tag to compare

@cheezy cheezy released this 19 Aug 14:34
· 16 commits to main since this release

Fixed — the failed-verdict note rule the server already enforces (D240)

This port's task-reviewer prompt described note as optional on every section verdict. The completion API has required it on a "failed" verdict since D231, and enforces that unconditionally — independently of the strict_completion_validation flag — so an agent on this runtime could emit a note-less failed verdict that its own prompt endorsed and be rejected with a 422. The rejection is self-describing and recoverable, so nothing was broken; every such completion simply paid an avoidable round trip.

The prompt now states that on a "failed" section verdict note is REQUIRED and must name the specific violation or gap in at least 20 non-whitespace characters, carries the anti-placeholder prohibition (no stub, TODO, empty string, or bare restatement of the status), and directs that an empty note means the verdict is wrong rather than that the note is unnecessary. note stays optional on "passed" and "not_assessed", so the ordinary empty-section case gains no friction.

Producer-side only: the server-side check in Kanban.Tasks.CompletionValidation.ReviewContract is unchanged, and no port was accommodated by weakening it.

Fixed — planner precedence: the decision matrix is the sole decision point (D232, propagating D221)

This port carried the same ambiguity D221 fixed in the canonical plugin: the stride-workflow Step 3 decision matrix row small, 2+ key_files says Plan = Skip, while Branch C prose independently said "If medium+ OR 3+ key_files OR 3+ acceptance criteria lines: Outline your implementation approach" — two separately-satisfiable planner triggers with no stated precedence. The same conflict pattern existed for the Explore and Review columns (stride-workflow Step 5, stride-subagent-workflow Phases 1–3 plus its role quick-table, stride-completing-tasks' pre-completion review items, and this port's unique stride-task-explorer/stride-task-reviewer skill activation lines), plus drifted narrower "medium+"-only restatements in the flowcharts and quick-reference cards. Measured consequence in canonical: two runners on identically-shaped tasks resolved the collision differently and wrote different skip reasons into workflow_steps telemetry.

The fix mirrors canonical's D221 resolution: the Step 3 matrix now states it is the sole decision point for its columns, and every restatement reads its matrix column with "Read the column; do not re-derive the condition here (D221)" instead of re-deriving a condition. A small task carrying 3+ key_files or 3+ acceptance-criteria lines remains a mis-labelling signal to record in completion notes, never an independent planner trigger. Resolved toward the matrix (Plan = Skip for small, 2+ key_files), so no planner dispatch is added to the most common task shape.

Recorded verification grep (should return only row definitions, D221 history, and matrix-agreeing glosses — never a rule that could fire independently of the matrix):

grep -rniE "if medium|medium\+ OR|medium or large, OR|3\+ (key_files|criteria|acceptance)|2\+ key_files" --include="*.md" skills/ extensions/