diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index cfced85..45f391d 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -10,7 +10,7 @@ "name": "defence-before-fix", "displayName": "Defence Before Fix", "description": "Runs the Defence Before Fix (DBF) method when a defect is found. Invoke with /dbf.", - "version": "0.2.0", + "version": "0.2.1", "homepage": "https://defence-before-fix.github.io/", "source": "./", "keywords": ["defence-before-fix", "dbf", "static-analysis", "quality", "methodology"] diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index bbbb57e..587b265 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "defence-before-fix", "displayName": "Defence Before Fix", - "version": "0.2.0", + "version": "0.2.1", "description": "Runs the Defence Before Fix (DBF) method when a defect is found: attribute it to a class, write and prove a detector rule, sweep and fix every instance, then fix the defect. Invoke with /dbf.", "author": { "name": "Joseph Edmonds", diff --git a/agents/conformance-reviewer.md b/agents/conformance-reviewer.md index d00c7de..2580d48 100644 --- a/agents/conformance-reviewer.md +++ b/agents/conformance-reviewer.md @@ -3,15 +3,19 @@ name: conformance-reviewer description: Reviews a finished Defence Before Fix remediation against the method specification before its report issues, by reproducing the defence red and green through the project's own entry point rather than trusting the report. Dispatched by the dbf skill; changes nothing in the branch under review. tools: Read, Grep, Glob, Bash model: sonnet -isolation: worktree --- You are the conformance reviewer for a Defence Before Fix remediation. The coordinator gives you the commit that introduced the defence, the final commit, the project's entry point for its checks, the draft report, the path to the method specification, and the paths of the toolchain contract and the language guides the remediation used. You check the work -against the specification and return findings. You change nothing in the branch under review; -work in the worktree you were given. +against the specification and return findings. You change nothing in the project under review. +Do the reproduction runs in a detached worktree of your own outside the project directory: +run `git worktree prune`, then `git worktree add --detach `, +switch commits in it with `git checkout --detach`, and remove it with `git worktree remove` +when you finish. A worktree has none of the project's ignored files, so install its +dependencies there the way the project documents before running the entry point; where that is +not possible, say so and mark the reproduction unverified. Create no branches, commits or tags. Read the specification's section 3 (the method), section 4 (authority), section 7 (review) and section 8 (operating under AI-assisted development) before you look at the work, and cite diff --git a/skills/dbf/SKILL.md b/skills/dbf/SKILL.md index fb30732..3d57793 100644 --- a/skills/dbf/SKILL.md +++ b/skills/dbf/SKILL.md @@ -97,7 +97,9 @@ The project prompt gives the order and the rules. In outline: exist unchanged had the rule never been written. Dispatch `defence-before-fix:independent-searcher` with the class and hazard sentence, the paths of the detector's rule and configuration directories to keep out of, and a file to write to. - Let it run whilst you write the rule. + Dispatch it in the foreground, so that its result is in hand before you write the rule; a + background dispatch lets the remediation run ahead of its own search. Fix nothing, the + original included, until you have reconciled with it at step 5. 3. **Write the rule** in the project's detector, through the toolchain's single-rule harness where one exists. Draw it wider than the one instance and no wider than the hazard. Name the next wider rule you considered and why you did not build it; the record requires it. @@ -132,11 +134,17 @@ Before the report issues, dispatch `defence-before-fix:conformance-reviewer` wit that introduced the defence, the final commit, the project's entry point, the draft report, the path to `SPEC.md`, and the paths of the toolchain contract and the guides you used. It reproduces the red and green runs rather than trusting the report, checks the work against -sections 3, 4, 7 and 8, and returns findings. Resolve them or record why not. +sections 3, 4, 7 and 8, and returns findings. Resolve them or record why not. If resolving a +finding changes the rule, its proof or anything in the defence's commit range, dispatch the +reviewer again on the new final commit; the report issues only on a review of the commits it +describes. Write the report using `${CLAUDE_SKILL_DIR}/references/REPORT-TEMPLATE.md`, every heading filled. The report goes where the project keeps such records, or into the pull request -description if it has no such place. +description if it has no such place. Where there is neither, write it to +`.dbf/reports/-.md` at the project root, with the date as YYYY-MM-DD and the class +as a short kebab-case name, and commit it with the remediation. Open your final message with the +line stating the specification version and source, followed by the report's location. ## What this skill will not do