Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

## [Unreleased]

### Fixed

- Keep temper's and hone's round bundles blind after a round that changed nothing: leave the diff out (hone: say nothing about fix commits) instead of writing "no edits", which tells a critic the last round was clean and this round is the confirmation pass; leave out triplet lines that name a round or rating; and word the red-team framing without reference to an earlier review ([#37](https://github.com/forkrul/damascus_development/pull/37))

## [0.1.2] - 2026-10-17

### Changed
Expand Down
4 changes: 2 additions & 2 deletions skills/hone/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ If the host repository defines `.damascus/addenda/hone.md`, read it before dispa

## Model-Agnostic Critic & Judge Dispatch (Local + Cloud)

Before each round, write the unit's **round bundle** `specs/NNN-<slug>/diff-bundle.md` — the spec triplet, the unit's diff including the previous round's fix commits, and any carried UNCONFIRMED check; nothing from `code-review.md` or commit messages. Dispatch each critic as the read-only **`hone-critic`** agent (Read, Glob, Grep; Bash only for repros in a throwaway worktree) and the judge as **`review-judge`** on an anonymized findings file; where a harness ignores agent `tools:` lines, their no-edit rule still binds. Or route either via `damascus agent-run` to local models (Ollama, `llama.cpp`, `vLLM`, `LM Studio`) or cloud CLIs (`claude`, `gemini`, `codex`, `opencode`, `llm`):
Before each round, write the unit's **round bundle** `specs/NNN-<slug>/diff-bundle.md` — the spec triplet, the unit's diff including the previous round's fix commits, and any carried UNCONFIRMED check; nothing from `code-review.md` or commit messages, and no triplet line that names a hone round (an amendment note's trigger). When the previous round fixed nothing in the unit, say nothing about fix commits: "no fixes" tells a critic the last review was clean. Dispatch each critic as the read-only **`hone-critic`** agent (Read, Glob, Grep; Bash only for repros in a throwaway worktree) and the judge as **`review-judge`** on an anonymized findings file; where a harness ignores agent `tools:` lines, their no-edit rule still binds. Or route either via `damascus agent-run` to local models (Ollama, `llama.cpp`, `vLLM`, `LM Studio`) or cloud CLIs (`claude`, `gemini`, `codex`, `opencode`, `llm`):

```bash
damascus agent-run --probe
Expand Down Expand Up @@ -90,7 +90,7 @@ Dispatch **3 `hone-critic` agents in parallel** (plus optional `critic-d` if def

**Anti-Sycophancy & Local-Model Context Hygiene:**
- **Round & Grade Blindness:** Never tell Critics A, B, or C the current round number or prior round's rating (`A` / `A+`).
- **Fresh-Critic Rotation on `A+ → A++`:** On the confirmation round following an `A+`, rotate model assignment or inject a red-team falsification framing into one critic slot.
- **Fresh-Critic Rotation on `A+ → A++`:** On the confirmation round following an `A+`, rotate model assignment or inject a red-team falsification framing into one critic slot. The framing names no earlier review: "assume the diff hides a defect", never "a previous reviewer was too lenient".

Each critic reads the round bundle (diff + spec triplet), and returns findings
as **BLOCKING** (would be wrong to merge) or **NIT** (cosmetic), each with `file:line`.
Expand Down
4 changes: 2 additions & 2 deletions skills/temper/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ If the host repository defines `.damascus/addenda/temper.md`, read it before dis

## Model-Agnostic Critic & Judge Dispatch (Local + Cloud)

Before each round, write the **round bundle** `specs/NNN-<slug>/critic-bundle.md`: the current triplet, plus (round $N > 1$) round $N-1$'s diff and any UNCONFIRMED check carried to a lens — nothing from `review.md`. Critics read only the bundle, so they stay blind to round and rating. Dispatch each critic as the read-only **`temper-critic`** agent (tools: Read, Glob, Grep) and the judge as **`review-judge`**, given an anonymized findings file; where a harness ignores agent `tools:` lines, the agents' no-edit rule still binds. Or route either via `damascus agent-run` to local open-weight models (Ollama, `llama.cpp` / `llama-server`, `vLLM`, `LM Studio`) or cloud CLIs (`claude`, `gemini`, `codex`, `opencode`, `llm`):
Before each round, write the **round bundle** `specs/NNN-<slug>/critic-bundle.md`: the current triplet, plus (round $N > 1$) round $N-1$'s diff and any UNCONFIRMED check carried to a lens — nothing from `review.md`, and no triplet line that names a round or rating (a `**Status**` line that does). When round $N-1$ edited nothing, leave the diff out altogether: "no edits" tells a critic the last round was clean, which makes this the confirmation pass. Critics read only the bundle, so they stay blind to round and rating. Dispatch each critic as the read-only **`temper-critic`** agent (tools: Read, Glob, Grep) and the judge as **`review-judge`**, given an anonymized findings file; where a harness ignores agent `tools:` lines, the agents' no-edit rule still binds. Or route either via `damascus agent-run` to local open-weight models (Ollama, `llama.cpp` / `llama-server`, `vLLM`, `LM Studio`) or cloud CLIs (`claude`, `gemini`, `codex`, `opencode`, `llm`):

```bash
damascus agent-run --probe
Expand All @@ -69,7 +69,7 @@ Dispatch **3 `temper-critic` agents in parallel** (plus optional `critic-d` if d
**Anti-Sycophancy & Local-Model Context Hygiene:**
- **Round & Grade Blindness:** Never tell Critics A, B, or C the current round number or prior round's rating (`A` / `A+`). Knowing a round is the final `A++` confirmation pass induces sycophantic leniency.
- **Delta Context Passing:** In Round $N > 1$, pass the current `spec.md`/`plan.md`/`tasks.md` triplet plus a compact `git diff` of Round $N-1$'s edits — never pass the full cumulative `review.md` history into critic prompts (avoids anchoring and keeps prompts compact for 8k–32k local model KV caches).
- **Fresh-Critic Rotation on `A+ → A++`:** On the confirmation round following an `A+`, rotate model assignment or inject a red-team devil's-advocate framing into one critic slot.
- **Fresh-Critic Rotation on `A+ → A++`:** On the confirmation round following an `A+`, rotate model assignment or inject a red-team devil's-advocate framing into one critic slot. The framing names no earlier review: "assume the triplet hides a defect", never "a previous reviewer was too lenient".

Each critic receives the full triplet and returns findings classified as **BLOCKING** (a competent implementer would have to ask the author — the critic writes down that question — or an SC is vacuous) or **NIT** (cosmetic), plus anything it suspects but couldn't confirm as **UNCONFIRMED**, saying where it looked and what it couldn't check. Critics must attempt refutation; "looks good" with no findings requires the critic to attach its procedure artifact and state what it tried and failed to break. Opinions without the artifact are discarded by the judge.

Expand Down
Loading