@mstar-harness/opencode 3.2.2 → 3.2.3

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 CHANGED
@@ -6,6 +6,16 @@ The monorepo root [CHANGELOG.md](../../CHANGELOG.md) summarizes cross-surface re
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [3.2.3] - 2026-08-24
10
+
11
+ ### Bundled harness skills (`harness-skills/` at publish)
12
+
13
+ - **PR deep-review report template**: the GitHub Review body now follows a fixed three-section report — Verdict (verdict token + confidence score + four-class emoji findings table), Review (PR summary, ranked findings with merge class, linked-issue AC, verified checks, considered & rejected), and a collapsible **Plan to fix** section holding the fix plan in a fenced ```md block. Chat display contract unchanged.
14
+
15
+ - Version alignment with harness **3.2.3** (no OpenCode package API change).
16
+
17
+ See root [CHANGELOG.md](../../CHANGELOG.md) **3.2.3**.
18
+
9
19
  ## [3.2.2] - 2026-08-24
10
20
 
11
21
  ### Bundled harness skills (`harness-skills/` at publish)
@@ -217,7 +217,7 @@ Posting the GitHub Review is a **mandatory deliverable** of the `pr` variant —
217
217
  2. Build one review payload:
218
218
  - `event`: `COMMENT` — **never** `APPROVE`, **never** `REQUEST_CHANGES`, never a merge.
219
219
  - `commit_id`: the PR head SHA.
220
- - `body`: **first two lines are the display contract** — `{verdict} · {score_pct}%` then the tally line (`must-fix=<n> should-fix=<n> nit=<n> unverified=<n>`) — then ranked findings (short) + linked-issue leftover reasoning + optional folded plan index (below). `event` stays `COMMENT` — **never** `APPROVE`, **never** `REQUEST_CHANGES`, never a merge.
220
+ - `body`: follow **§ Report template (below)**three sections (Verdict Review Plan to fix). `event` stays `COMMENT` — **never** `APPROVE`, **never** `REQUEST_CHANGES`, never a merge.
221
221
  - `comments[]`: one entry per finding whose `path` + `line` is in the three-dot diff, `side: RIGHT`. Finding body = title + evidence + impact + fix sketch — not the whole plan.
222
222
  3. Post it:
223
223
  ```
@@ -228,15 +228,63 @@ Posting the GitHub Review is a **mandatory deliverable** of the `pr` variant —
228
228
  5. Record `html_url` / review id for `comments:`. Only now clean up the worktree (or after the n/a-no-PR skip).
229
229
  6. **Batch:** each reviewer posts on **their own PRs** only. No second PM summary comment unless the Assignment says so.
230
230
 
231
- ### Folding plans into the summary
231
+ ### Report template (GitHub Review `body`)
232
+
233
+ The posted review body is a three-section report. Section order fixed; omit a subsection only when its content is genuinely empty (write `none`, never delete the heading).
234
+
235
+ **Section emoji map** — verdict: `ship it` ✅ · `needs fixes` ⚠️ · `blocked` ⛔. Finding classes: 🔴 must-fix · 🟠 should-fix · 🔵 nit · ❓ unverified.
236
+
237
+ ````markdown
238
+ ## <verdict-emoji> Verdict: `<verdict>` · Confidence <score_pct>%
239
+
240
+ | Findings | Count |
241
+ | --- | --- |
242
+ | 🔴 must-fix | <n> |
243
+ | 🟠 should-fix | <n> |
244
+ | 🔵 nit | <n> |
245
+ | ❓ unverified | <n> |
246
+
247
+ ## 📋 Review
248
+
249
+ **What this PR does**: <2–3 sentences summarizing the diff's intent and surface — from the PR description plus your own read of the changed files, not copied marketing text.>
250
+
251
+ ### Findings
252
+
253
+ <Ranked findings (§ List cut). Each finding keeps its normal format — title, evidence (`file:line`), impact, **Merge class**, **Confidence**, fix sketch — with its class emoji prefixing the title.>
254
+
255
+ ### Linked-issue AC
256
+
257
+ <When § Linked-issue hygiene applied: per-criterion met / unmet / cut with one-line reasoning. Otherwise `none`.>
258
+
259
+ ### ✅ Verified
260
+
261
+ <Concise what-checks-proved summary — the smallest runtime checks actually run and what they showed. Residual unverified leads go here as `- ❓ <lead>` lines, not into the findings table.>
232
262
 
233
- Fold follow-up plans into the review body **only if** this review wrote them. A short index — title, priority, effort, 1–3 sentence sketch, plan path — inside:
263
+ ### 🗑️ Considered & rejected
234
264
 
265
+ <- <finding>: rejected because <one line>. Otherwise `none` — rejections come from the three-way attack / vet pass (§ Attack and vet), so the next reviewer does not re-chase them.>
266
+
267
+ ## 🛠️ Plan to fix
268
+
269
+ <details><summary>展开修复计划 / Expand fix plan</summary>
270
+ <br>
271
+
272
+ ```md
273
+ <Fix plan in markdown when the audit produced one: ordered steps per finding, files touched, verification gates. Omit the block entirely only when no fix is proposed.>
235
274
  ```
236
- <details><summary>Follow-up plans</summary>
237
275
 
238
- - <plan title> — P1 / S — <1–3 sentence sketch> (`{PLAN_DIR}/audit-<date>/NNN-<slug>.md`)
239
276
  </details>
277
+ ````
278
+
279
+ - The Verdict section replaces the old two-line tally header on GitHub: same facts (verdict token + `score_pct` as Confidence + four-class tally), structured. The chat display contract (§ Display contract) is unchanged.
280
+ - When the fix plan itself contains fenced code blocks, open the outer fence with four backticks so the inner fences survive.
281
+
282
+ ### Folding plans into the summary
283
+
284
+ Fold follow-up plans into the review body **only if** this review wrote them. Put a short index — title, priority, effort, 1–3 sentence sketch, plan path — as the first content inside the § Report template **Plan to fix** `<details>` block, before the ```md fix-plan block:
285
+
286
+ ```
287
+ - <plan title> — P1 / S — <1–3 sentence sketch> (`{PLAN_DIR}/audit-<date>/NNN-<slug>.md`)
240
288
  ```
241
289
 
242
290
  Never dump full plan files.
@@ -261,16 +309,18 @@ Never dump full plan files.
261
309
  - `inline: <N> posted / <M> attempted (<K> summary-only fallback)`
262
310
  - `plans_folded: yes` | `no`
263
311
 
264
- ### Display contract (chat + GitHub Review `body`)
312
+ ### Display contract (chat output)
265
313
 
266
- First two lines of the display (chat output and the GitHub Review `body`) — verbatim:
314
+ First two lines of the **chat** display — verbatim:
267
315
 
268
316
  ```
269
317
  {verdict} · {score_pct}%
270
318
  must-fix=<n> should-fix=<n> nit=<n> unverified=<n>
271
319
  ```
272
320
 
273
- Then existing ranked findings / leftover AC / optional `<details>` plan index. Do not put `score_pct%` on the `- verdict:` token line.
321
+ Then ranked findings / leftover AC summary. Do not put `score_pct%` on the `- verdict:` token line.
322
+
323
+ The GitHub Review `body` no longer uses the two-line header — it follows § Report template, whose Verdict section carries the same facts structured (verdict token + Confidence + four-class emoji tally table).
274
324
 
275
325
  ### List cut
276
326
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mstar-harness/opencode",
3
- "version": "3.2.2",
3
+ "version": "3.2.3",
4
4
  "description": "Morning Star harness OpenCode plugin — skills bootstrap + engine-backed runtime hooks (status lint, dispatch validation, Enforcement: hard gates).",
5
5
  "license": "MIT",
6
6
  "repository": {