|
2 | 2 |
|
3 | 3 | All notable changes to opencode-sdlc-wizard. |
4 | 4 |
|
| 5 | +## [0.8.9] - 2026-05-08 |
| 6 | + |
| 7 | +### Fixed — `cross-model-review.sh` wrapper alias parity with configure-backend.sh |
| 8 | + |
| 9 | +Codex pre-ship review of the v0.8.x stack caught a real invocation |
| 10 | +bug introduced by v0.8.7's SKILL.md drift sweep. The skill's Step 2 |
| 11 | +table and Step 3 examples advertised `nvidia_nim` and `google_aistudio` |
| 12 | +as reviewer providers, but `scripts/cross-model-review.sh`'s alias |
| 13 | +`case` block hadn't been extended. `configure-backend.sh` aliases |
| 14 | +`nvidia_nim → nvidia` and `google_aistudio → google` (writes the |
| 15 | +corresponding `provider.nvidia` / `provider.google` blocks in |
| 16 | +`opencode.json`). The wrapper's wildcard fallthrough was passing |
| 17 | +`nvidia_nim` and `google_aistudio` through verbatim, which built |
| 18 | +model pins (`nvidia_nim/<model>` / `google_aistudio/<model>`) that |
| 19 | +didn't match the registered provider blocks → silent |
| 20 | +provider-not-found from OpenCode at run time. |
| 21 | + |
| 22 | +- `scripts/cross-model-review.sh`: alias `case` block now mirrors |
| 23 | + configure-backend.sh's canonical mapping: |
| 24 | + - `nvidia_nim | nvidia-nim | nvidia` → `nvidia` |
| 25 | + - `google_aistudio | google | gemini` → `google` |
| 26 | +- Pass-through list also explicitly names the new v0.8.0 canonical |
| 27 | + IDs (`cerebras`, `deepseek`, `mlx`) — they were already correct via |
| 28 | + the wildcard, but documenting them stops a future maintainer from |
| 29 | + thinking they need an alias. |
| 30 | + |
| 31 | +### Tests |
| 32 | + |
| 33 | +- `tests/test-cross-model-review.sh` adds T11–T14: |
| 34 | + - T11: `nvidia_nim` resolves to `nvidia/<model>` in the opencode pin |
| 35 | + - T12: `google_aistudio` resolves to `google/<model>` |
| 36 | + - T13: `gemini` resolves to `google/<model>` |
| 37 | + - T14: canonical `cerebras`/`deepseek`/`mlx` pass through unchanged |
| 38 | +- 305 tests total across 11 suites (was 301 in v0.8.8). |
| 39 | + |
| 40 | +### Note on the v0.8.0 drift family |
| 41 | + |
| 42 | +This is the fifth surface in the v0.8.0 picker drift family |
| 43 | +(install.sh in v0.8.4, validator domain in v0.8.5, setup-wizard |
| 44 | +SKILL.md in v0.8.6, cross-model-review SKILL.md in v0.8.7, |
| 45 | +AGENTS.md+PRIVACY.md in v0.8.8) — and the only one that was an actual |
| 46 | +runtime bug rather than documentation drift. Caught by cross-model |
| 47 | +review before ship. The drift family is now closed across both |
| 48 | +documentation surfaces and runtime invocation. |
| 49 | + |
| 50 | +## [0.8.8] - 2026-05-06 |
| 51 | + |
| 52 | +### Fixed — AGENTS.md + PRIVACY.md tier drift (final v0.8.0 sweep) |
| 53 | + |
| 54 | +Last surface in the v0.8.0 provider drift family. The user-facing |
| 55 | +AGENTS.md tier table and the deeper PRIVACY.md tier walkthroughs both |
| 56 | +still listed only the v0.2.0 providers. Since AGENTS.md is what |
| 57 | +OpenCode auto-loads at session start, this was the most user-visible |
| 58 | +of the four drift surfaces. |
| 59 | + |
| 60 | +**`AGENTS.md`** privacy-tier table updated: |
| 61 | +- `private_local` row gains MLX (Apple Silicon) |
| 62 | +- `hosted_oss` row gains Cerebras / DeepSeek direct / NVIDIA NIM |
| 63 | +- `proprietary` row gains Google AI Studio (`google_aistudio`) |
| 64 | +- New `--free-tier-first` example before the configure call |
| 65 | +- New cross-link to `docs/cost-ladder.md` |
| 66 | + |
| 67 | +**`PRIVACY.md`** tier walkthroughs updated: |
| 68 | +- private_local runtime table gains MLX row with default URL + |
| 69 | + suggested model |
| 70 | +- hosted_oss provider table gains 3 rows (Cerebras / DeepSeek / |
| 71 | + NVIDIA NIM) plus a Notes column flagging free tier and pricing |
| 72 | +- hosted_oss configure example now shows free-tier path (Cerebras), |
| 73 | + cheapest paid path (DeepSeek direct), and the original Together |
| 74 | + example |
| 75 | +- proprietary section gains Google AI Studio configure example |
| 76 | + with the closed-weights caveat |
| 77 | + |
| 78 | +### Tests |
| 79 | + |
| 80 | +- `test-doc-templates.sh` adds 2 final drift gates: AGENTS.md tier |
| 81 | + table covers v0.8.0 providers + PRIVACY.md tier walkthroughs cover |
| 82 | + same. Catches the next regression of this kind. |
| 83 | +- 29/29 doc-template tests green (was 27/27). |
| 84 | +- Full suite: 301/11 (was 299/11). |
| 85 | + |
| 86 | +**v0.8.0 drift family closed.** Four surfaces in total were carrying |
| 87 | +the same drift — install.sh next-steps (v0.8.4), validator domain |
| 88 | +mismatch (v0.8.5, related), setup-wizard SKILL.md (v0.8.6), |
| 89 | +cross-model-review SKILL.md (v0.8.7), and now AGENTS.md + |
| 90 | +PRIVACY.md (v0.8.8). Each surface now has a regression gate. |
| 91 | + |
| 92 | +## [0.8.7] - 2026-05-06 |
| 93 | + |
| 94 | +### Fixed — cross-model-review SKILL.md provider drift + stale DeepSeek price |
| 95 | + |
| 96 | +Audit-driven completion of the v0.8.0 provider rollout: this is the |
| 97 | +third surface (after install.sh in v0.8.4 and setup-wizard SKILL.md |
| 98 | +in v0.8.6) carrying the same drift. The Step 2 reviewer table still |
| 99 | +recommended `togetherai/deepseek-ai/DeepSeek-V3` as the default at |
| 100 | +`~$0.27/M` — both the model id and the price had moved. |
| 101 | + |
| 102 | +Updates to `skills/cross-model-review/SKILL.md`: |
| 103 | + |
| 104 | +- **Step 2 reviewer table** gains four rows for v0.8.0 providers: |
| 105 | + - `private_local/mlx` — Apple Silicon native (Qwen2.5-Coder-32B 4bit) |
| 106 | + - `hosted_oss/cerebras` — free tier, ~2000 tok/s, gpt-oss-120b / |
| 107 | + qwen-3-235b-a22b-instruct-2507 |
| 108 | + - `hosted_oss/deepseek` direct — cheapest paid hosted reasoning |
| 109 | + (~$0.14/M cache-miss, deepseek-chat) |
| 110 | + - `hosted_oss/nvidia_nim` — free credits at build.nvidia.com |
| 111 | +- **Stale Together row** kept but model bumped to `DeepSeek-V3.1` |
| 112 | + (current) and price callout dropped from this row (it was wrong, |
| 113 | + and the cheaper deepseek-direct row sits next to it now). |
| 114 | +- **Default suggestion** no longer pins `togetherai/DeepSeek-V3`. |
| 115 | + Points users to `docs/cost-ladder.md` for the per-budget pick and |
| 116 | + names three common defaults (cerebras free, deepseek cheap-paid, |
| 117 | + ollama local). |
| 118 | +- **Step 3 examples** now show two paths — the free-tier Cerebras |
| 119 | + default and the cheapest-paid DeepSeek-direct path. Old Together |
| 120 | + example removed. |
| 121 | + |
| 122 | +### Tests |
| 123 | + |
| 124 | +- `test-doc-templates.sh` adds two gates against |
| 125 | + `cross-model-review/SKILL.md`: |
| 126 | + - Each v0.8.0 provider (cerebras / deepseek / nvidia_nim) appears |
| 127 | + as a Step 2 table row OR a Step 3 `--reviewer-provider` flag — |
| 128 | + avoids coincidental matches on legacy model names like |
| 129 | + `deepseek-coder-v2:16b`. |
| 130 | + - Stale `~$0.27/M` DeepSeek price string must not reappear. |
| 131 | +- 27/27 doc-template tests green (was 25/25). |
| 132 | +- Full suite: 299/11 (was 297/11). |
| 133 | + |
| 134 | +## [0.8.6] - 2026-05-06 |
| 135 | + |
| 136 | +### Fixed — sibling-wizard awareness + setup-wizard skill provider drift |
| 137 | + |
| 138 | +Two issues in the same release because they share a root cause: **drift |
| 139 | +between v0.8.0's expanded picker and the surfaces that describe it**. |
| 140 | + |
| 141 | +**Sibling-wizard awareness in install.sh.** Caught during the |
| 142 | +`states-project-research` consumption test where the repo already had |
| 143 | +`claude-sdlc-wizard` installed. `install.sh` happily wrote `.opencode/` |
| 144 | +without acknowledging the existing `.claude/` install — leaving the |
| 145 | +user wondering whether the wizards were merging behavior or stomping |
| 146 | +each other (they coexist; one writes `.opencode/`, the other `.claude/`). |
| 147 | + |
| 148 | +- New detection block runs right after the version banner. |
| 149 | +- Looks for `.claude/skills/sdlc/` or `CLAUDE_CODE_SDLC_WIZARD.md` |
| 150 | + (claude-sdlc-wizard) and `.codex/` (codex-sdlc-wizard). |
| 151 | +- Prints a single-paragraph "Note: detected sibling SDLC wizard |
| 152 | + installation(s)" with the dirs found, then continues install. |
| 153 | +- Non-blocking; informational only. |
| 154 | + |
| 155 | +**Setup-wizard SKILL.md provider drift.** Same root cause as v0.8.4's |
| 156 | +`install.sh` next-steps drift — the skill still listed the v0.2.0 tier |
| 157 | +providers (Ollama / LM Studio / llama.cpp / vLLM, Together / Groq / |
| 158 | +OpenRouter, Anthropic / OpenAI). Five providers added in v0.8.0 (MLX, |
| 159 | +Cerebras, DeepSeek direct, NVIDIA NIM, Google AI Studio) were missing. |
| 160 | + |
| 161 | +- `private_local` row gains MLX (Apple Silicon native). |
| 162 | +- `hosted_oss` row gains Cerebras / DeepSeek direct / NVIDIA NIM, |
| 163 | + with a free-tier callout pointing to `docs/cost-ladder.md`. |
| 164 | +- `proprietary` row gains Google AI Studio (Gemini, closed weights). |
| 165 | +- Step 2 now shows the `--free-tier-first` flag inline so users see |
| 166 | + it without reading `--help`. |
| 167 | + |
| 168 | +### Tests |
| 169 | + |
| 170 | +- `test-install.sh` adds T10/T11/T12: claude-sdlc-wizard detected, |
| 171 | + codex-sdlc-wizard detected, fresh empty target produces no false |
| 172 | + sibling detection. |
| 173 | +- `test-doc-templates.sh` adds a setup-wizard provider drift gate: |
| 174 | + asserts every v0.8.x picker provider + `--free-tier-first` are |
| 175 | + named in the SKILL.md. |
| 176 | +- 17/17 install behavior tests green (was 14/14). |
| 177 | +- 25/25 doc template tests green (was 24/24). |
| 178 | +- Full suite: 297/11 (was 293/11). |
| 179 | + |
| 180 | +## [0.8.5] - 2026-05-06 |
| 181 | + |
| 182 | +### Fixed — schema validator emits domain-mismatch hint on foreign-domain artifacts |
| 183 | + |
| 184 | +`validate-review-artifact.js` previously printed only generic |
| 185 | +`required field missing` errors when a research- or persuasion-domain |
| 186 | +handoff was validated against the code-review schema. Caught during |
| 187 | +the `states-project-research` consumption test: a pre-existing |
| 188 | +research-review handoff with `topic` / `audience` / `stakes` produced |
| 189 | +5 missing-required errors with no signal that the schema might just |
| 190 | +be wrong for the artifact category. |
| 191 | + |
| 192 | +Heuristic added to `scripts/validate-review-artifact.js`: |
| 193 | + |
| 194 | +- After validation fails, count missing top-level required fields and |
| 195 | + the presence of any foreign-domain markers (`topic`, `audience`, |
| 196 | + `stakes`, `research_question`, `claim`, `argument`, `manuscript`, |
| 197 | + `paper`, `theme`, `narrative`). |
| 198 | +- If `≥3 missing required` AND `≥1 foreign marker present`, emit a |
| 199 | + single `DOMAIN HINT:` line on stderr **before** the per-field error |
| 200 | + list. Tells the user the artifact looks like a non-code-review |
| 201 | + category and to check the schema choice. |
| 202 | +- No behavior change for legit code-review artifacts (verified with |
| 203 | + T32: partially-filled code-review handoff produces no hint, T33: |
| 204 | + valid handoff with forward-compat extras still validates clean). |
| 205 | + |
| 206 | +### Tests |
| 207 | + |
| 208 | +- `test-review-schemas.sh` adds T31/T32/T33: foreign-domain triggers |
| 209 | + hint, partial code-review does not, valid extras-laden handoff |
| 210 | + validates without false positive. |
| 211 | +- 33/33 review-schema tests green (was 30/30). |
| 212 | +- Full suite: 293/11 (was 290/11). |
| 213 | + |
| 214 | +## [0.8.4] - 2026-05-06 |
| 215 | + |
| 216 | +### Fixed — install.sh "Next steps" hint refreshed for v0.8.x picker |
| 217 | + |
| 218 | +The post-install banner had drifted: it still printed the v0.2.0 tier |
| 219 | +list (Ollama / LM Studio / llama.cpp / vLLM, Azure / Bedrock, |
| 220 | +Together / Groq / OpenRouter, Anthropic / OpenAI), missing every |
| 221 | +provider added since v0.8.0. Caught during the |
| 222 | +`states-project-research` consumption test — fresh installs were |
| 223 | +sending users to a stale provider menu while the real picker offered |
| 224 | +five more options. |
| 225 | + |
| 226 | +Fixes in `install.sh`: |
| 227 | + |
| 228 | +- `private_local` row gains `mlx` (Apple Silicon native, v0.8.0) |
| 229 | +- `hosted_oss` row gains `cerebras` / `deepseek` / `nvidia_nim` (v0.8.0) |
| 230 | +- `proprietary` row gains `google_aistudio` (v0.8.0) |
| 231 | +- New `--free-tier-first` example line so users discover the bias flag |
| 232 | + without reading `--help` |
| 233 | +- Cost guidance link to `docs/cost-ladder.md` (v0.8.0) — the doc |
| 234 | + exists in the bundle but nothing pointed to it from the install path |
| 235 | +- `$0 / $20 / $200` literals escaped (`\$`) — they would have been |
| 236 | + expanded as positional parameters and tripped `set -u` in the |
| 237 | + unquoted heredoc |
| 238 | + |
| 239 | +### Tests |
| 240 | + |
| 241 | +- `test-install.sh` adds T9: assert next-steps text mentions every |
| 242 | + provider the picker emits + `--free-tier-first` + `cost-ladder.md`. |
| 243 | + This is the regression gate so the banner can't drift again. |
| 244 | +- 14/14 install behavior tests green (was 13/13). |
| 245 | +- Full suite: 290/11 (was 289/11). |
| 246 | + |
5 | 247 | ## [0.8.3] - 2026-05-06 |
6 | 248 |
|
7 | 249 | ### Fixed — release workflow unblocked |
|
0 commit comments