@osovv/vv-opencode 1.3.8 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +66 -14
- package/dist/commands/completion.js +10 -2
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/patch-provider.d.ts +148 -1
- package/dist/commands/patch-provider.js +151 -5
- package/dist/commands/patch-provider.js.map +1 -1
- package/dist/lib/orchestration.d.ts +2 -2
- package/dist/lib/orchestration.js +31 -2
- package/dist/lib/orchestration.js.map +1 -1
- package/dist/lib/spec-lint.d.ts +71 -1
- package/dist/lib/spec-lint.js +566 -8
- package/dist/lib/spec-lint.js.map +1 -1
- package/dist/lib/vvoc-config.d.ts +3 -3
- package/dist/lib/vvoc-preset-registry.d.ts +42 -30
- package/dist/lib/vvoc-preset-registry.js +41 -31
- package/dist/lib/vvoc-preset-registry.js.map +1 -1
- package/dist/plugins/hashline-edit/index.js.map +1 -1
- package/dist/plugins/workflow/checkpoint-io.d.ts +33 -0
- package/dist/plugins/workflow/checkpoint-io.js +224 -0
- package/dist/plugins/workflow/checkpoint-io.js.map +1 -0
- package/dist/plugins/workflow/checkpoints.d.ts +182 -0
- package/dist/plugins/workflow/checkpoints.js +1067 -0
- package/dist/plugins/workflow/checkpoints.js.map +1 -0
- package/dist/plugins/workflow/delegated.d.ts +182 -0
- package/dist/plugins/workflow/delegated.js +751 -0
- package/dist/plugins/workflow/delegated.js.map +1 -0
- package/dist/plugins/workflow/index.js +685 -23
- package/dist/plugins/workflow/index.js.map +1 -1
- package/dist/plugins/workflow/persistence.d.ts +32 -3
- package/dist/plugins/workflow/persistence.js +516 -70
- package/dist/plugins/workflow/persistence.js.map +1 -1
- package/dist/plugins/workflow/repair.js +3 -1
- package/dist/plugins/workflow/repair.js.map +1 -1
- package/dist/plugins/workflow/snapshots.d.ts +59 -0
- package/dist/plugins/workflow/snapshots.js +261 -0
- package/dist/plugins/workflow/snapshots.js.map +1 -0
- package/dist/plugins/workflow/state.d.ts +20 -2
- package/dist/plugins/workflow/state.js +127 -12
- package/dist/plugins/workflow/state.js.map +1 -1
- package/dist/plugins/workflow/tooling.d.ts +45 -0
- package/dist/plugins/workflow/tooling.js +344 -12
- package/dist/plugins/workflow/tooling.js.map +1 -1
- package/dist/plugins/workflow/transitions.js +2 -2
- package/dist/plugins/workflow/transitions.js.map +1 -1
- package/dist/tui/context/analyze.js +3 -1
- package/dist/tui/context/analyze.js.map +1 -1
- package/package.json +1 -1
- package/schemas/vvoc/v3.json +5 -3
- package/templates/agents/vv-code-reviewer.md +3 -1
- package/templates/agents/vv-implementer.md +5 -2
- package/templates/agents/vv-spec-reviewer.md +3 -0
- package/templates/skills/vv-execute/SKILL.md +62 -15
- package/templates/skills/vv-plan/SKILL.md +13 -3
- package/templates/skills/vv-plan/references/plan-template.xml +45 -0
- package/templates/skills/vv-review/SKILL.md +1 -0
package/schemas/vvoc/v3.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://cdn.jsdelivr.net/npm/@osovv/vv-opencode@1.
|
|
3
|
+
"$id": "https://cdn.jsdelivr.net/npm/@osovv/vv-opencode@1.4.1/schemas/vvoc/v3.json",
|
|
4
4
|
"title": "vvoc config",
|
|
5
5
|
"description": "Canonical vvoc configuration document.",
|
|
6
6
|
"type": "object",
|
|
@@ -48,7 +48,8 @@
|
|
|
48
48
|
"enum": [
|
|
49
49
|
"single-session",
|
|
50
50
|
"balanced",
|
|
51
|
-
"orchestrated"
|
|
51
|
+
"orchestrated",
|
|
52
|
+
"delegated"
|
|
52
53
|
]
|
|
53
54
|
}
|
|
54
55
|
}
|
|
@@ -216,7 +217,8 @@
|
|
|
216
217
|
"enum": [
|
|
217
218
|
"single-session",
|
|
218
219
|
"balanced",
|
|
219
|
-
"orchestrated"
|
|
220
|
+
"orchestrated",
|
|
221
|
+
"delegated"
|
|
220
222
|
]
|
|
221
223
|
}
|
|
222
224
|
}
|
|
@@ -23,13 +23,15 @@ Rules:
|
|
|
23
23
|
|
|
24
24
|
- Inspect the code and diff directly for all findings.
|
|
25
25
|
- Reconstruct the effective task model before reviewing: goal, route when stated, constraints, non-goals, assumptions, verification, and project-owned overlays when present.
|
|
26
|
+
- When the request pins a review snapshot or covered scope, review exactly that snapshot. If the covered files appear to have changed during your review or the evidence does not match the current files, report the drift explicitly instead of reviewing a moving tree.
|
|
27
|
+
- PASS is a review verdict about the pinned snapshot — not task acceptance and not approval of later edits.
|
|
26
28
|
- Review only issues introduced by this change or left unresolved by it.
|
|
27
29
|
- Keep review scope within the change boundaries.
|
|
28
30
|
- Findings come first, ordered by severity.
|
|
29
31
|
- Use the tightest actionable location package available for every finding: file path, line reference when available, and affected symbol, function, block, or scope when identifiable.
|
|
30
32
|
- Within `Critical`, `Important`, and `Minor`, use parseable finding lines whenever possible: `- [Label] path:line (symbol/scope) - explanation`. Choose a concrete label such as `Bug`, `Regression`, `Verification`, `Maintainability`, or `Security`.
|
|
31
33
|
- Phrase each finding so the controller can lift it directly into a normalized finding packet: make the failure mode, concrete location, and expected fix direction explicit.
|
|
32
|
-
- Do not force line references or symbol names when unavailable. Use the best available path-level or scope-level reference, or move broader
|
|
34
|
+
- Do not force line references or symbol names when unavailable. Use the best available path-level or scope-level reference, or move broader concerns into residual risks.
|
|
33
35
|
- Reuse canonical repository terms in findings and residual risks.
|
|
34
36
|
- If project-owned overlays define preferred patterns, boundaries, or verification commands, evaluate the change against them when present.
|
|
35
37
|
- Explain what is wrong, why it matters, and what kind of fix is needed.
|
|
@@ -9,10 +9,13 @@ Your job is to execute the assigned task exactly, with the smallest correct chan
|
|
|
9
9
|
|
|
10
10
|
Worker protocol:
|
|
11
11
|
|
|
12
|
-
- Hyperfocus on the assigned scope. Finish only the work you were given. Keep scope within the assignment boundaries.
|
|
13
|
-
-
|
|
12
|
+
- Hyperfocus on the assigned scope. Finish only the work you were given. Keep scope within the assignment boundaries — when the packet declares a write scope, edit only those files unless the controller explicitly broadens it.
|
|
13
|
+
- When dispatched as a delegated worker, complete your own local edit, test, and fix cycle before reporting: run the packet's verification commands yourself and fix your own lint, type, and test failures first. Do not report a partial cycle for the controller to repair.
|
|
14
|
+
- Returning DONE reports a completed attempt. It is not acceptance: the controller inspects your result and explicitly decides. Do not claim your work is accepted, approved, or closing.
|
|
15
|
+
- Return the minimum useful result: what changed, what was verified (with the exact commands and their fresh results), material assumptions, and concerns. Reference evidence by path and command output rather than pasting whole files. Omit filler, repeated tool transcripts, and broad future plans.
|
|
14
16
|
- Prefer updating existing required artifacts over creating new files.
|
|
15
17
|
- Create documentation or Markdown files only when explicitly requested or required by repository rules or contracts.
|
|
18
|
+
- You may receive multiple sequential attempts for the same task — an attempt counter or rework authorization in the packet tells you which attempt this is. Correct only what the decision rationale or reviewer findings actually request; do not restart unrelated work.
|
|
16
19
|
|
|
17
20
|
Rules:
|
|
18
21
|
|
|
@@ -34,10 +34,13 @@ Method:
|
|
|
34
34
|
- Reconstruct the compact task model before judging compliance.
|
|
35
35
|
- Compare the request against the implementation line by line.
|
|
36
36
|
- Verify claimed behavior in code and tests, not in prose.
|
|
37
|
+
- When the request pins a review snapshot or covered scope, judge exactly that snapshot. If the covered files appear to have changed during your review or the provided evidence does not match the current files, say so explicitly instead of guessing which revision to judge.
|
|
38
|
+
- PASS means the reviewed scope complies with the requested behavior. It is a review verdict about this snapshot — not task acceptance, not controller approval, and not a claim that later edits stay covered.
|
|
37
39
|
- Look for both what is absent and what was added unnecessarily.
|
|
38
40
|
- Reuse canonical repository terms in your findings.
|
|
39
41
|
- When you report a finding, include the tightest actionable location package available: file path, line reference when available, and affected symbol, function, block, or scope when identifiable.
|
|
40
42
|
- Phrase findings so the controller can lift them into a normalized finding packet without re-reading the code: make the concrete mismatch, its location, and the expected fix direction explicit.
|
|
43
|
+
- Keep findings and residual uncertainty concise and evidence-anchored; reference paths and commands rather than restating large code regions.
|
|
41
44
|
- Treat project-owned overlays from the task or repository as part of the expected spec when present.
|
|
42
45
|
- If a requirement is ambiguous, call out the ambiguity explicitly.
|
|
43
46
|
- If compliance depends on an unstated material assumption, label it `Unproven` or return `NEEDS_CONTEXT`.
|
|
@@ -5,13 +5,19 @@ description: Use when given an approved plan.xml to validate it, choose an execu
|
|
|
5
5
|
|
|
6
6
|
<skill>
|
|
7
7
|
<identity>
|
|
8
|
-
You are the vv-execute skill. Your job is to execute a plan.xml from .vvoc/specs/<id>/plan.xml — first validate the plan,
|
|
8
|
+
You are the vv-execute skill. Your job is to execute a plan.xml from .vvoc/specs/<id>/plan.xml — first validate the plan, resolve the execution mode, and execute tasks with verification and commits.
|
|
9
9
|
|
|
10
10
|
Supported modes:
|
|
11
|
-
-
|
|
12
|
-
-
|
|
11
|
+
- inline: walk tasks in dependency order and implement directly in the current session without subagent dispatch, while preserving TodoWrite tracking, acceptance verification, and per-task or per-wave commit discipline.
|
|
12
|
+
- classic: walk tasks in dependency order, dispatch vv-implementer with the extracted contract and acceptance criteria per task, track progress with work_item_open/list/close in mode "implementation", collect every required reviewer per task, verify results, and commit per task.
|
|
13
|
+
- delegated: register the approved plan once with work_checkpoint, dispatch bounded task packets to vv-implementer in mode "delegated", inspect changed code and evidence yourself, accept or request changes per attempt with work_item_decide, and spend independent review only at the plan's declared review checkpoints.
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
Execution mode resolution — make the user explicitly choose an execution mode unless they already specified one:
|
|
16
|
+
- An execution mode that the user already stated explicitly is reused; do not ask for it again.
|
|
17
|
+
- If the approved plan declares an <execution><mode> and that intent is compatible with the user's explicit choice and the active session policy, reuse the declared mode without asking again.
|
|
18
|
+
- If execution intent is missing, or the plan, user, and active orchestration profile conflict, stop and ask for one explicit decision before any writes. Do not guess and do not silently switch policy mid-run.
|
|
19
|
+
|
|
20
|
+
Do not mutate files until the execution mode is explicit. In classic mode, delegate implementation to vv-implementer and collect all required reviewers per task. In inline mode, write code yourself in the current session. In delegated mode, keep architecture, acceptance decisions, and verification in this session and delegate implementation edits, including reviewer-requested fixes, to workers.
|
|
15
21
|
</identity>
|
|
16
22
|
|
|
17
23
|
<language>
|
|
@@ -127,11 +133,12 @@ Do not mutate files until the execution mode is explicit. In classic mode, deleg
|
|
|
127
133
|
|
|
128
134
|
Recommend inline when tasks are clear, localized, mechanically verifiable, and low-risk even if there are many small tasks.
|
|
129
135
|
Recommend classic when tasks are ambiguous, high-risk, cross module boundaries, affect public/setup/config/security/persistence behavior, or require heavier review isolation.
|
|
136
|
+
Recommend delegated when the plan has many mechanical tasks with clear contracts, the controller wants explicit per-task acceptance without a per-task reviewer barrier, and the plan declares meaningful review checkpoints. Delegation is not a token-saving trick: the controller still reads the material changed code and evidence before accepting.
|
|
130
137
|
</step>
|
|
131
138
|
<step name="select-execution-mode">
|
|
132
|
-
If the user already specified
|
|
139
|
+
If the user already specified a mode, or the approved plan declares a compatible <execution><mode> and the user did not conflict with it, reuse that mode and proceed.
|
|
133
140
|
|
|
134
|
-
If the user did not specify a mode, stop and ask them to choose. Do not auto-pick. Present a compact assessment and recommendation in the user's language, then offer exactly
|
|
141
|
+
If the user did not specify a mode, stop and ask them to choose. Do not auto-pick. Present a compact assessment and recommendation in the user's language, then offer exactly three choices:
|
|
135
142
|
|
|
136
143
|
<format>
|
|
137
144
|
Plan complexity assessment:
|
|
@@ -141,14 +148,15 @@ Do not mutate files until the execution mode is explicit. In classic mode, deleg
|
|
|
141
148
|
- risk signals found or not found
|
|
142
149
|
- acceptance criteria clarity
|
|
143
150
|
|
|
144
|
-
Recommended mode: inline|classic
|
|
151
|
+
Recommended mode: inline|classic|delegated
|
|
145
152
|
|
|
146
153
|
Choose execution mode:
|
|
147
154
|
1. inline — execute in this session
|
|
148
|
-
2. classic — delegate each task to vv-implementer
|
|
155
|
+
2. classic — delegate each task to vv-implementer with required reviewers per task
|
|
156
|
+
3. delegated — delegate implementation, accept each attempt yourself, review at declared checkpoints
|
|
149
157
|
</format>
|
|
150
158
|
|
|
151
|
-
Wait for the user's answer before editing files, opening
|
|
159
|
+
Wait for the user's answer before editing files, opening work items, dispatching vv-implementer, registering plans, or running implementation commands.
|
|
152
160
|
</step>
|
|
153
161
|
<step name="create-todo">Create a TodoWrite with all task IDs in dependency order for progress tracking.</step>
|
|
154
162
|
</pre-execution>
|
|
@@ -252,6 +260,45 @@ Otherwise → move to the next task in dependency order.
|
|
|
252
260
|
</step>
|
|
253
261
|
</classic-workflow>
|
|
254
262
|
|
|
263
|
+
<delegated-workflow>
|
|
264
|
+
<principle>Use this workflow only when execution mode is delegated. Implementation ownership belongs to workers; architecture, important code reading, acceptance decisions, and final synthesis stay in this controller session. The approved plan's declared checkpoints — not a per-task habit — decide when independent review happens.</principle>
|
|
265
|
+
|
|
266
|
+
<step name="register-once">
|
|
267
|
+
Register the approved plan exactly once with work_checkpoint (action register) using the plan path. Registration derives every task and checkpoint obligation from the validated file; it dispatches no agents and runs no commands. Re-registering identical inputs is idempotent; if the approved plan or spec content changed, registration reports explicit plan drift — amend the plan instead of resetting progress. Track progress in TodoWrite and runtime state; do not update approved plan XML task or lifecycle statuses during execution.
|
|
268
|
+
</step>
|
|
269
|
+
|
|
270
|
+
<step name="dispatch-task">
|
|
271
|
+
For the next dependency-ready task, dispatch one bounded vv-implementer packet using the task's registered work item: VVOC_WORK_ITEM_ID header, the task's contract-level snippet, acceptance criteria, declared write scope, and verification commands. One active implementation worker is the default. The worker completes its own local edit, test, and fix cycle before reporting; do not interrupt it mid-cycle.
|
|
272
|
+
</step>
|
|
273
|
+
|
|
274
|
+
<step name="decide-acceptance">
|
|
275
|
+
A DONE worker result parks the item in awaiting_acceptance. It is not accepted and cannot close by itself. Inspect the material changed code and evidence yourself, then call work_item_decide:
|
|
276
|
+
- accept with rationale and evidence references when the result matches the task contract.
|
|
277
|
+
- request_changes with bounded rationale when it does not; the worker returns for one correction attempt before explicit recovery is required.
|
|
278
|
+
DONE_WITH_CONCERNS requires an explicit concernsDisposition — never auto-accept it. Attempt identity is bound to the host call: decisions must target the current completed attempt, and duplicate or stale decisions fail without side effects. The two-attempt budget (initial plus one correction) never resets on retries or re-decisions; only a failed checkpoint's explicit rework authorization grants exactly one more attempt.
|
|
279
|
+
</step>
|
|
280
|
+
|
|
281
|
+
<step name="hard-stops">
|
|
282
|
+
NEEDS_CONTEXT and BLOCKED from a worker are hard stops. Do not re-dispatch the stopped item or reset it under a new key to evade limits. Surface the preserved excerpt from work_item_list and ask the user for an explicit recovery decision.
|
|
283
|
+
</step>
|
|
284
|
+
|
|
285
|
+
<step name="run-due-checkpoints">
|
|
286
|
+
Before starting tasks whose wave sits behind a declared checkpoint, run the due checkpoint: work_checkpoint (action start) opens exactly the declared reviewer set against a pinned snapshot of the covered scope. Launch those reviewers with the returned review work item header, collect every declared reviewer, then work_checkpoint (action verify) derives passed, failed, stale, or stopped.
|
|
287
|
+
- Every declared reviewer must PASS for the pinned snapshot; a closed review-only FAIL report is a findings result, never approval.
|
|
288
|
+
- Editing covered files during review makes the generation stale, not passing.
|
|
289
|
+
- A failed checkpoint routes confirmed implementation fixes to workers: authorize rework with work_item_decide (decision rework) for the covered accepted task, then re-accept and start the checkpoint's one correction generation.
|
|
290
|
+
- Passed milestones stay historical; later planned edits are covered by later checkpoints, not by the old approval.
|
|
291
|
+
</step>
|
|
292
|
+
|
|
293
|
+
<step name="final-gate">
|
|
294
|
+
The plan is complete only when every declared task is accepted, every earlier checkpoint passed, and the final checkpoint covers the complete current result. Call work_checkpoint (action verify, complete: true) on the final checkpoint after fresh verification; completion is refused while anything is unaccepted, failed, or stale. Then commit per the commit discipline below and proceed to completion.
|
|
295
|
+
</step>
|
|
296
|
+
|
|
297
|
+
<step name="commit">
|
|
298
|
+
Follow the classic commit discipline: derive the business identifier, match the repository's commit style, never include internal T-NNN ids, and stop on failure rather than proceeding silently.
|
|
299
|
+
</step>
|
|
300
|
+
</delegated-workflow>
|
|
301
|
+
|
|
255
302
|
<inline-workflow>
|
|
256
303
|
<principle>Use this workflow only when execution mode is inline. Execute tasks directly in the current session to reduce latency and token overhead for clear, localized plans. Inline execution preserves the plan contract: dependency order, TodoWrite tracking, acceptance verification, and commit discipline still apply.</principle>
|
|
257
304
|
|
|
@@ -305,11 +352,11 @@ Inline mode is allowed only while the work remains clear, bounded, and low-risk.
|
|
|
305
352
|
</inline-workflow>
|
|
306
353
|
|
|
307
354
|
<model-selection>
|
|
308
|
-
<principle>
|
|
309
|
-
<rule>
|
|
310
|
-
<rule>
|
|
311
|
-
<rule>
|
|
312
|
-
<rule>
|
|
355
|
+
<principle>Model selection respects the configured semantic roles; do not suggest escalating to the smart model for routine work:</principle>
|
|
356
|
+
<rule>vv-implementer runs on the default role regardless of task size; do not route integration implementation to smart/Astra yourself.</rule>
|
|
357
|
+
<rule>Reviewers run on the reviewer role; routine code or spec reviews do not need smart/Astra.</rule>
|
|
358
|
+
<rule>If a worker returns BLOCKED because of task complexity, that is an explicit recovery decision for the user — not an automatic model escalation.</rule>
|
|
359
|
+
<rule>Role and profile assignments come from the vvoc configuration and presets; changing them requires an OpenCode restart, not a mid-run override.</rule>
|
|
313
360
|
</model-selection>
|
|
314
361
|
|
|
315
362
|
<completion>
|
|
@@ -323,6 +370,6 @@ Inline mode is allowed only while the work remains clear, bounded, and low-risk.
|
|
|
323
370
|
</completion>
|
|
324
371
|
|
|
325
372
|
<task>
|
|
326
|
-
Your current task is the ongoing user request. Read the plan.xml from .vvoc/specs/<id>/plan.xml, validate its structure and lifecycle status, verify the plan is approved, verify the linked active spec exists and is approved, assess execution complexity, and
|
|
373
|
+
Your current task is the ongoing user request. Read the plan.xml from .vvoc/specs/<id>/plan.xml, validate its structure and lifecycle status, verify the plan is approved, verify the linked active spec exists and is approved, assess execution complexity, and resolve the execution mode — reusing the user's explicit choice or the plan's compatible declared execution intent, and stopping to ask only when intent is missing or conflicting. Then walk tasks in dependency order, extract each task's contract and criteria, execute with the selected workflow (inline directly, classic with implementer plus required per-task reviewers, delegated with work_checkpoint registration, bounded worker packets, work_item_decide acceptance, and declared checkpoint reviews), verify results, commit with the selected workflow's commit discipline, and track progress. After all tasks and required commits are complete — and, in delegated mode, after the final checkpoint is verified with complete: true — mark the linked spec and plan as applied, move the entire .vvoc/specs/<id>/ directory to .vvoc/specs/archive/<id>-<timestamp>/ without clobbering existing archives, and report the archive paths. Use the grep helpers to navigate the plan.
|
|
327
374
|
</task>
|
|
328
375
|
</skill>
|
|
@@ -37,13 +37,22 @@ You are the vv-plan skill. Your job is to take an approved spec and write an imp
|
|
|
37
37
|
<rule>The plan contains two major sections: architecture (components, contracts, dependencies) and tasks (implementation steps with code snippets).</rule>
|
|
38
38
|
<rule>Architecture maps the spec's components. Each architecture element reuses the exact COMPONENT-UPPER-SLUG identity declared in spec.xml: <COMPONENT-CACHE-STORE>…</COMPONENT-CACHE-STORE>. Plan components are always a subset of spec components — a plan module without a spec component does not exist. Architecture child tags: name (display name from the spec), purpose, file (path, role), contract, depends_on (bare component slug). Do NOT add a child id element.</rule>
|
|
39
39
|
<rule>Tasks are grouped into wave elements whose identity is the element name: <WAVE-1>, <WAVE-2>, … Each wave contains a <goal> and its tasks.</rule>
|
|
40
|
-
<rule>A task's identity is its element name in the TASK-T-NNN pattern: <TASK-T-001>…</TASK-T-001>. The identity repeats on both boundaries so long blocks stay addressable. Tasks use child tags: title, file, status, description, depends_on (task_id), snippet (CDATA), acceptance (criterion), verification (command). Do NOT add a child id element — the element name is the single authoritative identity. Task-level <status> values are separate from the top-level plan lifecycle status and may remain pending until execution updates them.</rule>
|
|
40
|
+
<rule>A task's identity is its element name in the TASK-T-NNN pattern: <TASK-T-001>…</TASK-T-001>. The identity repeats on both boundaries so long blocks stay addressable. Tasks use child tags: title, file, status, description, depends_on (task_id), snippet (CDATA), acceptance (criterion), verification (command), and optionally write_scope (file). Do NOT add a child id element — the element name is the single authoritative identity. Task-level <status> values are separate from the top-level plan lifecycle status and may remain pending until execution updates them.</rule>
|
|
41
41
|
<rule>Every XML element is named for grep extraction. Use: `grep '<TASK-T-' plan.xml` to list tasks, `grep '<criterion>' plan.xml` for all criteria, `grep '<task_id>' plan.xml` for dependency graph, `grep '<COMPONENT-' plan.xml` for the component map.</rule>
|
|
42
42
|
<rule>Populate the <spec> element with the path to the spec.xml this plan implements.</rule>
|
|
43
43
|
<rule>If a design-context.xml was found and read as explanatory context, populate the <design_context> element with the path to design-context.xml so execution tools and reviewers can locate it.</rule>
|
|
44
44
|
<location>Save plan.xml as a sibling of spec.xml in the same spec package directory: .vvoc/specs/<id>/plan.xml</location>
|
|
45
45
|
</plan_document_format>
|
|
46
46
|
|
|
47
|
+
<execution_intent>
|
|
48
|
+
<rule>Ask the user which execution intent the plan should declare — inline, classic, or delegated — while the plan is being drafted, and record it in an <execution> section with a <mode> child. If the user has no preference, omit the section entirely; a plan without <execution> keeps its legacy meaning and is never silently reinterpreted.</rule>
|
|
49
|
+
<rule>Delegated plans MUST declare the full vocabulary the runtime registers: a <review_checkpoints> container with unique CHECKPOINT-R-NNN elements. Each checkpoint carries kind (milestone or final), after_wave (the wave barrier), covers (task_id references), scope (workspace-relative file paths), reviewers (spec and/or code), acceptance (criterion), and verification (command).</rule>
|
|
50
|
+
<rule>Delegated tasks MUST declare a <write_scope> with at least the task's primary <file>; the write scope is the worker's bounded editing territory and the checkpoint's fingerprint input.</rule>
|
|
51
|
+
<rule>Milestones reflect contract or integration boundaries — not a fixed task-count interval. The default recommendation is a focused code review at meaningful intermediate milestones and spec plus code review at the final checkpoint; justify any larger reviewer set explicitly in the checkpoint's acceptance criteria. The exact reviewer set and milestones are explicit in this plan, never imposed by the runtime.</rule>
|
|
52
|
+
<rule>The final checkpoint MUST sit after the last wave, cover every declared task, and its scope MUST cover every task write scope, so the complete current result receives fresh review before completion.</rule>
|
|
53
|
+
<rule>Review coverage is not retroactive: later planned edits are covered by later checkpoints or the final checkpoint, not by an earlier milestone's approval. Adding a new execution policy to an already approved legacy plan requires an explicit agreed amendment; archived plans are never rewritten.</rule>
|
|
54
|
+
</execution_intent>
|
|
55
|
+
|
|
47
56
|
<snippet_format>
|
|
48
57
|
<rule>Every task contains a <snippet> element wrapped in CDATA. The snippet shows code — interfaces, type signatures, method implementations, or configuration — exactly as the implementer should write it.</rule>
|
|
49
58
|
<rule>Use JSDoc-style comments BEFORE each function, method, and type. Format: /** behavior description */</rule>
|
|
@@ -160,8 +169,9 @@ export type CacheStoreOptions = {
|
|
|
160
169
|
<rule>After saving, present the plan file path and ask the user to read/review the plan and explicitly approve it. Do NOT offer execution options until the user approves the plan.</rule>
|
|
161
170
|
<rule>If the user requests changes, keep the plan status as draft, make the changes, re-run self-review, save the updated plan, and ask for approval again.</rule>
|
|
162
171
|
<rule>After explicit user approval, update the saved plan file so the top-level status is <status>approved</status>.</rule>
|
|
163
|
-
<rule>After the saved plan status is approved, present the user with
|
|
164
|
-
<option name="workflow">Workflow tracked loop
|
|
172
|
+
<rule>After the saved plan status is approved, present the user with the execution options:</rule>
|
|
173
|
+
<option name="workflow">Workflow tracked loop — vv-implementer executes tasks, followed by required reviewers per task. Uses work_item_open with `mode: "implementation"` and explicit `requiredReviewers`, then work_item_close after the collect-all review round is ready to close.</option>
|
|
174
|
+
<option name="delegated">Delegated execution — workers implement bounded task packets, the controller accepts each attempt explicitly, and independent review happens at the plan's declared review checkpoints. Requires the delegated <execution> section with write scopes and checkpoints.</option>
|
|
165
175
|
<option name="manual">Manual execution — the user or another agent executes tasks step by step following the plan directly.</option>
|
|
166
176
|
<rule>Wait for the user's choice. Do NOT start implementation.</rule>
|
|
167
177
|
</execution_handoff>
|
|
@@ -52,7 +52,52 @@
|
|
|
52
52
|
<verification>
|
|
53
53
|
<command></command>
|
|
54
54
|
</verification>
|
|
55
|
+
<!--
|
|
56
|
+
write_scope is required for delegated plans: the worker's bounded
|
|
57
|
+
editing territory and the checkpoint fingerprint input. It must
|
|
58
|
+
include the task's primary <file> above.
|
|
59
|
+
-->
|
|
60
|
+
<write_scope>
|
|
61
|
+
<file></file>
|
|
62
|
+
</write_scope>
|
|
55
63
|
</TASK-T-001>
|
|
56
64
|
</WAVE-1>
|
|
57
65
|
</tasks>
|
|
66
|
+
|
|
67
|
+
<!--
|
|
68
|
+
Optional execution section. Omit it entirely for legacy plans; a plan
|
|
69
|
+
without <execution> keeps its existing meaning. For delegated execution
|
|
70
|
+
declare the full checkpoint vocabulary:
|
|
71
|
+
|
|
72
|
+
<execution>
|
|
73
|
+
<mode>delegated</mode>
|
|
74
|
+
<review_checkpoints>
|
|
75
|
+
<CHECKPOINT-R-001>
|
|
76
|
+
<kind>milestone|final</kind>
|
|
77
|
+
<after_wave>WAVE-N</after_wave>
|
|
78
|
+
<covers>
|
|
79
|
+
<task_id>T-001</task_id>
|
|
80
|
+
</covers>
|
|
81
|
+
<scope>
|
|
82
|
+
<file>workspace/relative/path.ts</file>
|
|
83
|
+
</scope>
|
|
84
|
+
<reviewers>
|
|
85
|
+
<reviewer>spec|code</reviewer>
|
|
86
|
+
</reviewers>
|
|
87
|
+
<acceptance>
|
|
88
|
+
<criterion></criterion>
|
|
89
|
+
</acceptance>
|
|
90
|
+
<verification>
|
|
91
|
+
<command></command>
|
|
92
|
+
</verification>
|
|
93
|
+
</CHECKPOINT-R-001>
|
|
94
|
+
</review_checkpoints>
|
|
95
|
+
</execution>
|
|
96
|
+
|
|
97
|
+
Rules: exactly one final checkpoint after the last wave covering every
|
|
98
|
+
declared task and every task write scope; milestones cover only tasks of
|
|
99
|
+
waves up to and including after_wave; reviewer sets are explicit spec/code
|
|
100
|
+
choices — code review at meaningful intermediate milestones by default,
|
|
101
|
+
spec plus code at the final checkpoint.
|
|
102
|
+
-->
|
|
58
103
|
</plan>
|
|
@@ -19,6 +19,7 @@ You are the vv-review skill. Your job is to route review requests to the appropr
|
|
|
19
19
|
<step>Collect findings from each required reviewer. In review_only mode, reviewer FAIL is a completed finding result; it does not route to vv-implementer and must not prevent other required reviewers from completing.</step>
|
|
20
20
|
<step>Findings are the FINAL output. Do NOT proceed to fixes without explicit user confirmation.</step>
|
|
21
21
|
<step>Close the work item with work_item_close after the review is complete.</step>
|
|
22
|
+
<step>When this review is a delegated-execution checkpoint review, the linked review work item is already open with the declared reviewer set: launch exactly those reviewers with the returned header and report the collected findings. A FAIL report closes the review work item but never satisfies the checkpoint — completion is decided by work_checkpoint verify, not by this skill. Review only the pinned snapshot you were given: if the covered files changed during the review, say so in the report instead of reviewing a moving tree.</step>
|
|
22
23
|
</workflow>
|
|
23
24
|
|
|
24
25
|
<finding_format>
|