Release/3.0.0 - #6
Merged
Merged
Conversation
Closes the ## [Unreleased] block that has been accumulating since the case-solvers rename. All five manifests already read 3.0.0; this dates the release header, adds the version roll-up line the file's other release entries carry, and refreshes the Codex build stamp. Not tagged or pushed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Ports the unmerged improve-kimi-model-checking fix (f9d4d52) onto the 3.0.0 rename: hooks/kimi-model-context.sh (UserPromptSubmit) reads modelAlias from the session record so Kimi sessions stop classifying unsure — without it every gated skill refused on every model, and budget sessions guessing themselves frontier authored to bd (measured 7/27 guard FAILs pre-fix). The three model-guard.sh twins now assert the guard's model-guard: line and run both directions (a refusal-only harness cannot fail — unsure refuses in the same words as budget), with --below-tier budget|medium generalizing the medium-rung trial to all hosts. Also from that branch: the REPO_ROOT, claude -p stream-json, and infra_error UUID fixes. New manual harnesses for the 3.0.0 /specify behaviors: socratic-loop.sh on all three hosts (a vague-word description must be questioned, not drafted past), authoring-format.sh ported to Codex and Kimi, and all three format twins now assert the Complexity call (rung + low/high/max effort, never medium) and grep out Deliverable Format / planning-tier regressions. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…posed - socratic-loop.sh (all hosts): .beads/ is not a slip signal on a frontier session — bd init is the documented Environment Guard flow. Only .spec.md marks drafting past the vague word. - authoring-format.sh (all hosts): seed a minimal Python fixture and name the language in the descriptions — the 3.0.0 Socratic loop correctly asks "which runtime?" in a bare repo, so the greenfield fixtures must answer it. - codex twins: drop the false-refusal grep — codex exec transcripts echo the SKILL.md, so "must run on a frontier model" matches the skill's own prose. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…sking A codex trial asked "Should the endpoint return: 1. Aggregate (recommended) 2. Per-user" — a textbook Socratic question with no literal '?', scored FAIL. "Asked" is now '?' OR recommendation phrasing; the recommended-answer check stays separate. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ptions Two more assertion bugs the first kimi/codex runs exposed: - The story-line grep demanded the one-line spelling, but the Output Format template's own form is a three-line fenced block — join lines before matching so both spellings pass. - "Fully specified" is a higher bar under the 3.0.0 Socratic loop than the old greenfield descriptions met: codex correctly asked "ASCII or Unicode alphanumeric?" and "which framework?" instead of drafting. Descriptions now preempt those questions (separator rule, any-exception retry, Flask + SQLite + dev-log reset + CLI-seeded admin). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…t it New third marketplace plugin, /code-review-quality: a standalone multi-axis review of a change before it merges (correctness, readability, architecture, security, performance), judged against a stated intent and reported as Critical/Required/Consider/Nit/FYI plus a verdict. Inspired by addyosmani's code-review-and-quality; written fresh for this repo's voice and flags. Deliberately not an sdd skill — it shares none of that plugin's bd machinery (no bd, no worktrees, no branch naming, no .beads/ guard). - Target defaults to the working diff by a stated ladder (uncommitted, else branch vs merge-base, else last commit); a ref, an explicit a...b range, a path, or #<n> overrides it. A caller-named checkout is honored with -C. - --effort <low|high|max> reuses /validate's effort vocabulary, default high. - --fix <true|false>, default false. Under true it applies Critical+Required and leaves them uncommitted: never add/commit/amend/push, never fix by weakening a check, unverifiable findings stay unfixed and say so. - Model-invocable so "review my changes" routes here, but --fix is honored only when the caller typed it, so an implicit invocation can't reach the write path. No model gate and no tier vocabulary at all. sdd's reviewers now prefer it, as a preference and not a dependency: all four agent files (story-reviewer, story-reviewer-strong; .md + .toml) run /code-review-quality <base>...bd/<id> --effort <effort> --fix true where the plugin is installed and fall back to the host's own review-and-apply where it isn't. A missing install is explicitly not an error. Two consequences: /validate (1.17.1 -> 1.18.0) now hands the reviewer the base branch, since it diffs <base>...bd/<id> and a story forked from a feature branch must not have its base guessed as main; and /validate's prose stopped naming a command it no longer chooses, so the command lives once in the agent definitions and the two can't drift. Versions: sdd 3.0.0 -> 3.1.0 (agents + /validate changed), kimi.plugin.json 3.0.0 -> 3.1.0 (that manifest versions the whole Kimi bundle, now eight skills), code-review-quality 1.0.0, writing-claude-md unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
opencode is the first host with no manifest to publish to — its extension
surface is the config directory itself — so the port is a script rather than a
plugin.json. plugins/sdd/hosts/opencode/install.sh copies the skills, reviewer
agents, a generated slash command per skill, and one plugin into
~/.config/opencode; it records its file list in .sdd-installed and clears that
set first, so re-running it is the update and a renamed skill can't linger as a
duplicate. No skill prose changed: the skills/ tree is shared verbatim, and
/validate's capability-keyed reviewer map already covered this host.
plugin/sdd-model-context.js injects the model ID at two seams, and both are
load-bearing. opencode's built-in system context is cwd/project/git/platform/
date only, and its default prompt frames the session as Claude Code — so a
session with no injected ID does not merely go `unsure`, it confabulates. With
the system-prompt seam alone and the correct ID sitting in it, claude-haiku-4-5
emitted `model-guard: id=claude-opus-4-1 tier=frontier` and authored a story.
Skills arrive as tool results, far from the system prompt, so the second seam
(tool.execute.after on the skill tool) puts the ID next to the rubric that
reads it. Don't simplify either away.
hosts/opencode/agent/*.md is a third agent format because the Claude one can't
be reused: opencode's agent loader hard-fails the whole config on the
comma-separated `tools:` string, and splits `model:` on `/`, so a bare `sonnet`
resolves to nothing. It does honor the pin, so both rungs are enforced by
definition as on Claude Code.
tests/opencode/model-guard.sh is the fourth guard harness, same two-direction
protocol. It stages a throwaway config dir instead of mutating the operator's,
and invokes skills as `opencode run --command <name>` — the user's real path; a
bare "/specify …" is sent verbatim and never resolves. tests/lib.sh gains
SDD_TEST_ENV, an opt-in forward list for hosts whose provider key comes from
{env:VAR}. Verified live: 11/11 trials, all three gated skills, both
directions, on Anthropic-native and OpenAI-compatible providers.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.