Repository navigation
Refuse starting a task without an approved spec; requires_spec light lane (closes #3710) - #3715
Conversation
Pragmatic code review: PR #3715 (issue #3710)Review type: initial, whole-diff review (Rust core, wire types, proto, generated TS, seeds, tests, sibling docs working tree). Requirements check
Node type sequenceSchema field (declared, CEL correctness
Findings🟡 1. Creating a task directly as
|
malibio
left a comment
There was a problem hiding this comment.
Automated pragmatic-code-review: APPROVE WITH CHANGES (posted as a comment — GitHub blocks self-approval). Full findings in the review comment above.
Review response (address-review)Addressed
Skipped
Re-Review DecisionDecision: RE-REVIEW NEEDED |
Pragmatic code review (re-review): PR #3715 (issue #3710)Review type: re-review of commit fb6a000 only ( Previous review summaryFirst review: APPROVE WITH CHANGES. Findings: 1 (create-as-started bypasses the Were 2 and 3 addressed
Skip justifications
Is the
|
malibio
left a comment
There was a problem hiding this comment.
Automated pragmatic-code-review (re-review): APPROVE (posted as a comment — GitHub blocks self-approval). Full findings in the re-review comment above.
Review response (re-review)Addressed (commit 22cd3b8, comment/wording only, no logic change)
Re-Review DecisionDecision: NO RE-REVIEW NEEDED |
|
Merge queue: #3715 was taken out of the queue — the merge gate failed on it, on top of main. Reproduce by merging or rebasing |
|
The first merge round failed in two gate-only stages (headless e2e and Tauri-seam adapter-contract tests) because their fixtures start a default task. Both now mark the task |
… light lane (closes #3710) Adds the seeded task spec Play (moving a task to in_progress needs a linked approved spec unless requires_spec is false) and the declared requires_spec task field, carried through the wire type, proto, daemon, app-lib, adapter and generated TypeScript. Seeded skills say a small change is marked requires_spec false. Fixtures that start a default task are moved to the light lane. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…e the light lane - Ready tasks gains the permitted (dry run) filter, so a task the spec Play would refuse is not handed out; test added, fixtures marked as small changes. - The rejection message and the planning skill say the user confirms that a change needs no spec before requires_spec is set to false. - Pin that creating a task already started is not a move (as lineage/blockers). - Skipped: guarding in_review (issue scopes the rule to in_progress); a node_created rule (breaks started-task import, and the gate's dry run still refuses the write); UI toggle for requires_spec (feature scope). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…task wording Comment, skill wording and test-comment changes only; no logic change. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The headless e2e and Tauri-seam adapter-contract tests move a default task to in_progress; the marker travels in the same write and the typed boolean is asserted through the dev-proxy and the Tauri command. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…esponse only Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
73b5b29 to
2f08a18
Compare
Summary
TASK_SPEC_PLAY_ID): a task moving toin_progressmust link an approved spec unlessrequires_specisfalse(ADR-097 §2, §6, §8). The rejection names the Writing a Spec skill, thenodespacecommands, and says not to retry.requires_spec(boolean, schema defaulttrue), carried through the wire type, proto, daemon, app-lib, adapter, dev-proxy and generated TypeScript.requires_spec: false.node-types.mdtask sheet,playbook-system.mdPlays table, ADR-092 §6 amended.Node type: flat core type
task, category unchanged. Added field:requires_spec(boolean, defaulttrue, protection core). No relationship or structural change. New Play with fixed id, appended toCORE_PLAY_IDS.Consequences worth knowing
requires_spec: falseand without a linked approved spec is refused on the move toin_progress, in the UI as well as for agents. A to-do list now needs the field set. This follows the issue as written (default requires a spec).in_progressis not guarded, same as the lineage rule.Not in this PR
The gate-side criteria depend on
nodespace gate check(#3708, in flight): repo-write deny when no in-progress task, exempt paths, and the per-rule advisory setting. The Play is what the gate's dry run will read, so no extra machinery is needed here.Test plan
bun run test:changed(frontend, scripts, browser, types:check, node-types:check, Rust workspace 5647 passed)bun run quality:fix🤖 Generated with Claude Code