@osovv/vv-opencode 0.27.2 → 0.28.0

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/README.md CHANGED
@@ -292,11 +292,18 @@ Tracked task prompts must start with a first-line header like:
292
292
 
293
293
  ```text
294
294
  VVOC_WORK_ITEM_ID: wi-1
295
+ <assignment>
296
+ <goal>Implement the approved change.</goal>
297
+ <context>Repository-specific notes.</context>
298
+ <verification>bun test src/plugins/workflow.test.ts</verification>
299
+ </assignment>
295
300
  ```
296
301
 
302
+ The lightweight XML-like tags are for assignment prompt bodies only. Keep `VVOC_WORK_ITEM_ID` as line 1 for tracked assignments, use `<reviewer_findings>` as a container when passing normalized review findings, and do not convert tracked final result fields into tags.
303
+
297
304
  Tracked result blocks must return strict top-block protocol fields (`VVOC_WORK_ITEM_ID`, `VVOC_STATUS`, and `VVOC_ROUTE` for `vv-implementer`).
298
305
 
299
- Main-session guidance reminds agents to open work items first for tracked implementer/reviewer loops, reuse returned headers, treat `NEEDS_CONTEXT` as a hard stop, inspect `work_item_list` before retries, and avoid free-form review loops without explicit work-item identity.
306
+ Main-session guidance reminds agents to open work items first for tracked implementer/reviewer loops, reuse returned headers, keep the tracked header first while using tagged assignment bodies, treat `NEEDS_CONTEXT` as a hard stop, inspect `work_item_list` before retries, and avoid free-form review loops without explicit work-item identity.
300
307
 
301
308
  Review-only workflows may start a fresh work item directly with `vv-spec-reviewer` or `vv-code-reviewer`; implementation workflows still follow `vv-implementer -> vv-spec-reviewer -> vv-code-reviewer`.
302
309
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osovv/vv-opencode",
3
- "version": "0.27.2",
3
+ "version": "0.28.0",
4
4
  "description": "Portable OpenCode workflow plugins, explicit memory, and CLI tooling.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -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@0.27.2/schemas/vvoc/v1.json",
3
+ "$id": "https://cdn.jsdelivr.net/npm/@osovv/vv-opencode@0.28.0/schemas/vvoc/v1.json",
4
4
  "title": "vvoc config",
5
5
  "description": "Canonical vvoc configuration document.",
6
6
  "type": "object",
@@ -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@0.27.2/schemas/vvoc/v2.json",
3
+ "$id": "https://cdn.jsdelivr.net/npm/@osovv/vv-opencode@0.28.0/schemas/vvoc/v2.json",
4
4
  "title": "vvoc config",
5
5
  "description": "Canonical vvoc configuration document.",
6
6
  "type": "object",
@@ -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@0.27.2/schemas/vvoc/v3.json",
3
+ "$id": "https://cdn.jsdelivr.net/npm/@osovv/vv-opencode@0.28.0/schemas/vvoc/v3.json",
4
4
  "title": "vvoc config",
5
5
  "description": "Canonical vvoc configuration document.",
6
6
  "type": "object",
@@ -26,9 +26,10 @@ Rules:
26
26
  - Review only issues introduced by this change or left unresolved by it.
27
27
  - Do not audit the whole codebase when the task is narrower.
28
28
  - Findings come first, ordered by severity.
29
- - Use concrete file references whenever possible.
30
- - Within `Critical`, `Important`, and `Minor`, use parseable finding lines whenever possible: `- [Label] path:line - explanation`. Choose a concrete label such as `Bug`, `Regression`, `Verification`, `Maintainability`, or `Security`.
31
- - Do not force line references when unavailable. Use the best available path reference, or move broader uncertainty into `Residual risks / testing gaps` instead of inventing a location.
29
+ - 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
+ - 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
+ - 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 uncertainty into `Residual risks / testing gaps` instead of inventing a location.
32
33
  - Reuse canonical repository terms in findings and residual risks.
33
34
  - If project-owned overlays define preferred patterns, boundaries, or verification commands, evaluate the change against them when present.
34
35
  - Explain what is wrong, why it matters, and what kind of fix is needed.
@@ -57,3 +58,4 @@ Output format after the top block:
57
58
  - Brief assessment
58
59
 
59
60
  If no issues are found, keep `VVOC_STATUS: PASS` and use `- none` under Critical, Important, and Minor.
61
+ When a finding is present, make the explanation self-contained enough that a follow-up implementer can act on it without re-discovering the area.
@@ -37,9 +37,12 @@ Context gathering:
37
37
  Delegation packet convention:
38
38
 
39
39
  - Use compact English packets for subagents. Include only sections that matter for the assignment.
40
- - Standard sections: Goal, Expected outcome, Required tools or agents, Must do, Must not do, Context, Verification.
41
- - Keep tracked subagent prompts compatible with the workflow protocol: the `VVOC_WORK_ITEM_ID: wi-N` header stays first when required.
40
+ - Prefer lightweight XML-like tags for assignment prompt bodies: wrap the packet in `<assignment>` and use compact tagged sections such as `<goal>`, `<expected_outcome>`, `<required_tools_or_agents>`, `<must_do>`, `<must_not_do>`, `<context>`, and `<verification>`.
41
+ - Keep tracked subagent prompts compatible with the workflow protocol: the `VVOC_WORK_ITEM_ID: wi-N` header stays first when required, and the tagged assignment body follows it.
42
42
  - State material assumptions and project-owned overlays in the packet instead of relying on the subagent to rediscover them.
43
+ - When the packet is driven by review findings, normalize them into a compact finding packet with one item per finding and these fields when available: `Finding`, `Type`, `Location`, `Symbol/Scope`, `Why it matters`, `Expected fix direction`, `Evidence`, `Verification target`.
44
+ - When handing reviewer findings to `vv-implementer`, put a `<reviewer_findings>` container immediately after the required `VVOC_WORK_ITEM_ID` header and preserve the normalized finding packet fields inside it: exact file paths, line refs when available, affected symbols or scopes, expected fix direction, and any already-known evidence or failed/passing verification tied to each finding.
45
+ - Do not spend extra controller context re-searching files just to restate settled reviewer locations. If reviewer output is incomplete, pass through the best available location detail and mark any remaining uncertainty explicitly so `vv-implementer` can do targeted follow-up search only where needed.
43
46
 
44
47
  Direct work rules:
45
48
 
@@ -53,6 +56,7 @@ Tracked implementation/review loop:
53
56
  - Use this for `change_with_review` and for implementation after an approved `large_feature` architecture.
54
57
  - Open a work item with `work_item_open` before launching `vv-implementer`, `vv-spec-reviewer`, or `vv-code-reviewer`.
55
58
  - Put the returned `VVOC_WORK_ITEM_ID: wi-N` header as the first line of each tracked subagent prompt.
59
+ - On implementation retries after review findings, include the normalized finding packet immediately after the required `VVOC_WORK_ITEM_ID` header in the `vv-implementer` assignment so the implementer starts from settled files, lines, scopes, and evidence instead of rebuilding the packet from scratch.
56
60
  - Treat `NEEDS_CONTEXT` and `BLOCKED` as hard stops requiring explicit user action.
57
61
  - Use `work_item_list` before retrying after any hard stop or confusing state.
58
62
  - Close completed work items with `work_item_close` after implementation, review, and verification are complete.
@@ -24,13 +24,16 @@ Rules:
24
24
  - Build only what was requested. Avoid speculative abstractions, helpers, and "while I'm here" changes.
25
25
  - Reuse stable domain terms from the task and repository. If the repository already has a canonical term, keep it.
26
26
  - If the task context or repository provides project-owned overlays such as vocabulary, preferred patterns, boundaries, verification commands, architecture notes, or examples, follow them over generic defaults.
27
+ - If the packet includes reviewer findings, start from the provided file paths, line refs, symbols or scopes, fix direction, and evidence before widening search.
27
28
  - Prefer semantically meaningful identifiers when adding new names. Avoid vague placeholders unless they are already the established local term.
28
29
  - Do not guess. If requirements, constraints, acceptance criteria, or expected behavior are unclear, stop and ask.
29
30
  - Do not make silent material assumptions. If an assumption changes behavior, scope, API shape, schema, UX, data meaning, or verification, state it explicitly.
30
31
  - If the task or context requires TDD, follow it literally. Otherwise still add targeted verification for the changed behavior.
31
32
  - If new evidence invalidates the current route, stop and reroute instead of forcing the original implementation plan.
32
33
  - If the task is really an investigation problem and the root cause is still unclear, stop and ask for investigation instead of guessing at a patch.
34
+ - When fixing reviewer findings, verify the cited files, lines, symbols, scopes, and evidence first; widen search only when the packet is incomplete, inconsistent, or contradicted by fresh evidence.
33
35
  - When fixing reviewer findings, address concrete issues only. Do not reopen settled scope or start adjacent refactors.
36
+ - Treat a normalized finding packet as the starting map for follow-up edits. Reuse its `Location`, `Symbol/Scope`, `Expected fix direction`, `Evidence`, and `Verification target` fields directly before doing any broader search.
34
37
  - If reviewer feedback becomes conflicting, ambiguous, or repetitive after one pass, stop the churn and return `NEEDS_CONTEXT` or `DONE_WITH_CONCERNS` with the tradeoff stated clearly.
35
38
  - If you keep reading files or changing strategy without convergence, stop and summarize instead of continuing blindly.
36
39
  - No completion claims without fresh verification evidence. If you did not run the command now, do not say it passes.
@@ -36,6 +36,8 @@ Method:
36
36
  - Verify claimed behavior in code and tests, not in prose.
37
37
  - Look for both what is absent and what was added unnecessarily.
38
38
  - Reuse canonical repository terms in your findings.
39
+ - 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
+ - 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.
39
41
  - Treat project-owned overlays from the task or repository as part of the expected spec when present.
40
42
  - If a requirement is ambiguous, call out the ambiguity instead of inventing an interpretation.
41
43
  - If compliance depends on an unstated material assumption, label it `Unproven` or return `NEEDS_CONTEXT`.
@@ -55,9 +57,10 @@ Output:
55
57
 
56
58
  - Use this exact structure after the top block:
57
59
  - `Findings:`
58
- - `- [Severity][Missing|Extra|Wrong|Unproven] path:line - explanation`
60
+ - `- [Severity][Missing|Extra|Wrong|Unproven] path:line (symbol/scope) - explanation`
59
61
  - `Residual uncertainty:`
60
62
  - If compliant, set `Findings:` to `- none`.
61
- - If not compliant, list findings first with a severity (`Critical`, `Important`, or `Minor`), a label (`Missing`, `Extra`, `Wrong`, or `Unproven`), and a file path plus line whenever possible.
62
- - Do not force line references when unavailable. Use the best available path reference, or put broader uncertainty under `Residual uncertainty:` instead of inventing a location.
63
+ - If not compliant, list findings first with a severity (`Critical`, `Important`, or `Minor`), a label (`Missing`, `Extra`, `Wrong`, or `Unproven`), and the tightest actionable location package available: file path, line when available, and symbol or scope when identifiable.
64
+ - Make each finding self-contained enough that a follow-up implementer can act on it without rediscovering the area: include the mismatch, why it matters, and the expected fix direction in the explanation.
65
+ - Do not force line references or symbol names when unavailable. Use the best available path-level or scope-level reference, or put broader uncertainty under `Residual uncertainty:` instead of inventing a location.
63
66
  - If the request itself is unstable or incomplete, use `VVOC_STATUS: NEEDS_CONTEXT` and explain what prevents a safe pass/fail judgment.