mirror of
https://github.com/obra/superpowers.git
synced 2026-06-16 15:49:05 +08:00
Compare commits
40 Commits
f/sp6-reln
...
sdd-review
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
db6077bb21 | ||
|
|
65e702f92a | ||
|
|
7f126acda6 | ||
|
|
06f7789487 | ||
|
|
330aba6dd6 | ||
|
|
5b9eb20f76 | ||
|
|
7e421713ac | ||
|
|
8476908a1b | ||
|
|
e6118e02b9 | ||
|
|
9a221229a5 | ||
|
|
7d8f0ce9e9 | ||
|
|
f37c5e5115 | ||
|
|
618698d9b3 | ||
|
|
2d6e56ee90 | ||
|
|
4a92407ae7 | ||
|
|
cc81ffe7f3 | ||
|
|
a0dcb77596 | ||
|
|
bc7d93de1a | ||
|
|
63a155692b | ||
|
|
4866fe8b2d | ||
|
|
e45a8f2548 | ||
|
|
fc75b0b3b4 | ||
|
|
da0a11f6d4 | ||
|
|
b42846401f | ||
|
|
c087105ff3 | ||
|
|
29e5842917 | ||
|
|
1d94bc939d | ||
|
|
833ec4177e | ||
|
|
c4abda336c | ||
|
|
c874cf0cb3 | ||
|
|
08a2e7eed3 | ||
|
|
077dd192a7 | ||
|
|
441d22a2c0 | ||
|
|
efcaa40f1f | ||
|
|
622a3887f3 | ||
|
|
d3d6800b07 | ||
|
|
246b493db4 | ||
|
|
7dc323c28b | ||
|
|
55938589d3 | ||
|
|
450b02a11b |
@@ -2,13 +2,6 @@
|
|||||||
|
|
||||||
Superpowers is a complete software development methodology for your coding agents, built on top of a set of composable skills and some initial instructions that make sure your agent uses them.
|
Superpowers is a complete software development methodology for your coding agents, built on top of a set of composable skills and some initial instructions that make sure your agent uses them.
|
||||||
|
|
||||||
|
|
||||||
## We're Hiring!
|
|
||||||
|
|
||||||
We're hiring someone to help out full time with Superpowers community and code work.
|
|
||||||
You can read about the job at https://primeradiant.com/jobs/superpowers-community-engineer/
|
|
||||||
If this sounds like someone you know, definitely send them our way.
|
|
||||||
|
|
||||||
## Quickstart
|
## Quickstart
|
||||||
|
|
||||||
Give your agent Superpowers: [Claude Code](#claude-code), [Antigravity](#antigravity), [Codex App](#codex-app), [Codex CLI](#codex-cli), [Cursor](#cursor), [Factory Droid](#factory-droid), [Gemini CLI](#gemini-cli), [GitHub Copilot CLI](#github-copilot-cli), [Kimi Code](#kimi-code), [OpenCode](#opencode), [Pi](#pi).
|
Give your agent Superpowers: [Claude Code](#claude-code), [Antigravity](#antigravity), [Codex App](#codex-app), [Codex CLI](#codex-cli), [Cursor](#cursor), [Factory Droid](#factory-droid), [Gemini CLI](#gemini-cli), [GitHub Copilot CLI](#github-copilot-cli), [Kimi Code](#kimi-code), [OpenCode](#opencode), [Pi](#pi).
|
||||||
|
|||||||
@@ -1,103 +1,5 @@
|
|||||||
# Superpowers Release Notes
|
# Superpowers Release Notes
|
||||||
|
|
||||||
## v6.0.0 (date TBD)
|
|
||||||
|
|
||||||
Superpowers 6.0 is a big release. The headline is a rewrite of how `subagent-driven-development` reviews each task — cheaper, stricter, and harder to game.
|
|
||||||
|
|
||||||
While these numbers won't hold on every harness and for every workload, in our evals, Claude Code and Codex produce similar high-quality results roughly twice as fast and while spending almost 50% fewer tokens.
|
|
||||||
|
|
||||||
It also adds three new harnesses (Kimi Code, Pi, and Antigravity), gives the brainstorming visual companion a better security model, and rewrites a number of skills' tool calls to be significantly more vendor-neutral.
|
|
||||||
|
|
||||||
### Visible Changes
|
|
||||||
|
|
||||||
- **The two per-task reviewer prompts became one.** `spec-reviewer-prompt.md` and `code-quality-reviewer-prompt.md` are gone, replaced by a single `task-reviewer-prompt.md`. If you dispatch the old files directly, switch to the new one.
|
|
||||||
- **The legacy global worktree directory is gone.** `using-git-worktrees` and `finishing-a-development-branch` no longer use `~/.config/superpowers/worktrees/`. Worktrees now land in the project — an existing `.worktrees/` or `worktrees/` if you have one, otherwise a fresh `.worktrees/` — unless you say otherwise.
|
|
||||||
|
|
||||||
### New Harness Support
|
|
||||||
|
|
||||||
Superpowers now runs on three more harnesses. Each ships its own bootstrap, a tool-mapping reference, and tests, and each gets its own install section in the README.
|
|
||||||
|
|
||||||
- **Kimi Code** — a plugin manifest, install docs, and manifest tests; install from Kimi's marketplace or straight from the repo. (initial manifest by @qer)
|
|
||||||
- **Pi** — a session-start extension that registers the skills and injects the `using-superpowers` bootstrap. Pi has native skills, so it needs no compatibility shim.
|
|
||||||
- **Antigravity (`agy`)** — installs the plugin directly and bootstraps from the first message; verified end-to-end against the standard "make a react todo list" acceptance test.
|
|
||||||
|
|
||||||
### Subagent-Driven Development
|
|
||||||
|
|
||||||
A long run of cost-and-quality experiments on real projects reshaped how the controller reviews each task. The old flow ran two reviewers per task and leaned on the controller's judgment for model choice and severity, and both turned out to be expensive and easy to game. The new flow runs one reviewer per task, hands work off as files instead of pasted text, and takes several judgment calls away from the controller.
|
|
||||||
|
|
||||||
- **One reviewer per task, two verdicts.** A single `task-reviewer-prompt.md` reads the task's diff once and returns both a spec-compliance verdict and a quality verdict, so one fix pass clears both. A new "can't verify from the diff" verdict flags requirements that live in untouched code, for the controller to check itself. (#1538, #1543)
|
|
||||||
- **One broad review at the end.** The run finishes with a single whole-branch review on the most capable model, instead of re-reviewing everything task by task.
|
|
||||||
- **Plans get a pre-flight read.** Before the first task, the controller checks the plan for internal conflicts — and for anything the plan asks for that a reviewer would flag as a defect — and raises it all at once, rather than stumbling into it mid-run.
|
|
||||||
- **Diffs and task text move as files.** A pasted diff parks itself permanently in the most expensive context, and a reviewer without one rebuilds it by hand — the single biggest reviewer cost. Two new scripts, `task-brief` and `review-package`, write the task text and the review diff to files for the subagent to read.
|
|
||||||
- **Every dispatch states its model.** Left to choose, controllers stopped naming a model at all — and an unnamed model quietly inherits the session's most expensive one, so one run put all 26 of its reviewers on the top tier. The templates now require a model, with guidance that reaches for cheaper tiers when the work allows.
|
|
||||||
- **The controller can't tell a reviewer what to ignore.** Real runs caught controllers coaching reviewers to skip a finding or call it "Minor at most," and the flaw shipped. Suppressing findings and pre-rating severity are now banned outright, and a defect the plan itself mandates gets reported for you to decide on rather than waved through.
|
|
||||||
- **Reviewers are read-only and skeptical of rationales.** Review no longer touches the working tree or branch — a reviewer running `git checkout` had been orphaning later commits — and an implementer's "I left this unabstracted on purpose" no longer talks a reviewer out of a real finding.
|
|
||||||
- **Stronger evidence and reporting.** Reviewers back each answer with a file and line, the implementer's report moves to a file and carries red/green evidence when TDD applies, and a progress ledger lets a controller that loses its context resume instead of redoing finished work. (#994)
|
|
||||||
|
|
||||||
### Writing Plans
|
|
||||||
|
|
||||||
Plans now carry the structure the controller and reviewers used to re-derive on every dispatch.
|
|
||||||
|
|
||||||
- **A Global Constraints block** lists the rules that bind every task — version floors, dependency limits, naming and copy, exact values — copied in verbatim, so they actually reach the implementers and reviewers downstream.
|
|
||||||
- **A per-task Interfaces block** names exactly what each task consumes and produces, so an implementer who sees only its own task still knows its neighbors' contracts.
|
|
||||||
- **Right-sizing guidance** keeps a task at the size that earns its own test cycle and a reviewer's pass, folding setup, config, and docs into the task that needs them. In testing, a plan written this way needed one round of fixes where the control needed two to four — and the control shipped a real bug.
|
|
||||||
|
|
||||||
### Brainstorming Visual Companion
|
|
||||||
|
|
||||||
The visual companion is a small web server the agent opens alongside the conversation. It had no authentication at all, so on a shared or remote machine anyone who could reach the port could read your brainstorm — or inject events the agent treats as your input. This release gives it a real security model and makes it survive restarts and dropped connections.
|
|
||||||
|
|
||||||
- **A per-session key now guards everything.** The agent's URL carries a one-time key, the browser tucks it into a tab-scoped cookie, and every request and WebSocket connection has to present it. This closes the door to stray local tabs and routable remote hosts alike, including the DNS-rebinding case an origin allowlist can't catch. (Closes #1014)
|
|
||||||
- **The file server stays in its sandbox.** It refuses symlinks, dotfiles, and any path that climbs out of the content directory, ignores macOS resource-fork files, and sends the usual no-store and deny-framing headers. Files that hold the session key are written owner-only.
|
|
||||||
- **The companion is offered only when it helps.** The skill raises it the first time a question would read better shown than told, as its own message, and lets a decline stand. Accepting opens your browser to the first screen. (Closes #755)
|
|
||||||
- **It survives restarts and flaky connections.** Given a project directory, the server keeps the same port and key across restarts, so an open tab simply reconnects. The page reconnects on its own, shows a live status pill, and raises a "paused" overlay while the server is down.
|
|
||||||
- **Longer idle life, safer shutdown.** The idle timeout went from 30 minutes to 4 hours, and `stop-server.sh` now confirms it owns the right process before signaling, so it never kills an unrelated `node` after a reboot. (#1703)
|
|
||||||
- **Windows launch hardening** — consolidated shell detection, and Windows now relies on the idle timeout for shutdown, since Node can't track POSIX process ownership across MSYS2.
|
|
||||||
|
|
||||||
|
|
||||||
### Existing Harness Updates
|
|
||||||
|
|
||||||
- **Codex** now bootstraps through its own SessionStart hook rather than shared wiring, and the Codex App gained an install section and fuller tool docs (web search, `AGENTS.md`, personal skills). (#1540)
|
|
||||||
- **OpenCode** got an action-based tool mapping across its plugin, install doc, and README, plus a bootstrap-caching test.
|
|
||||||
- **Cursor**'s manifest dropped its `agents` and `commands` entries, since those directories no longer exist.
|
|
||||||
|
|
||||||
### One Set of Skills, Every Harness
|
|
||||||
|
|
||||||
The skills used to speak Claude Code's dialect — "use the Task tool," "put it in CLAUDE.md." This release rewrites that vocabulary in terms of what you're actually doing ("dispatch a subagent," "your instructions file") and adds a per-harness reference that maps each action to the right tool, checked against each runtime. Prose that named "Claude" now says "your agent."
|
|
||||||
|
|
||||||
- **A tool reference per harness** at `skills/using-superpowers/references/`, covering Claude Code, Codex, Copilot, Gemini, Pi, and Antigravity.
|
|
||||||
- **`finishing-a-development-branch` went forge-neutral** — it no longer hardcodes `gh pr create`, so agents push with whatever forge tooling they have. (#1609)
|
|
||||||
- **One rename:** "Claude Search Optimization" is now "Skill Discovery Optimization," since the technique isn't Claude-specific.
|
|
||||||
|
|
||||||
### Writing Skills
|
|
||||||
|
|
||||||
Two additions for skill authors.
|
|
||||||
|
|
||||||
- **Match the Form to the Failure** — a short table for picking the right kind of guidance. A flat "don't do X" works for discipline slips but backfires when the problem is the *shape* of an output, where a worked example does better. The table, and a tighter scope on the existing rationalization section, steer authors to the form that actually helps.
|
|
||||||
- **Micro-Test Wording** — a cheap way to check a phrasing before committing to it: sample it a handful of times against a no-guidance control and read every result by hand, treating run-to-run variance as a warning sign.
|
|
||||||
|
|
||||||
### Testing
|
|
||||||
|
|
||||||
Skill-behavior testing moved out of `tests/` into a new `evals/` submodule built on "drill," which runs real Claude Code, Codex, and Gemini sessions and judges them with an LLM. Several in-tree bash suites retired once a stricter drill scenario covered them; the few with no equivalent stayed. From here on, `tests/` holds plugin-code tests and `evals/` holds skill-behavior tests, and `docs/testing.md` explains the split. New backends reach Antigravity, Pi, and more models, and new shell-lint and pre-commit checks guard the harness. (#1541)
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
- **systematic-debugging no longer forces every session into extended thinking.** One bullet held the exact keyword Claude Code scans for, quietly tripping the switch on every session that loaded the skill. A hyphen breaks the keyword; the text still reads. (#1283, by @Nick Galatis)
|
|
||||||
- **The Windows SessionStart hook stopped printing a write error every session** — each `printf` now routes through `cat` to absorb the broken pipe, and the output is otherwise unchanged. (#1612, reported by @silvertakana)
|
|
||||||
- **Windows foreground mode** tracks the right process and clears its owner PID on MSYS2. (by @nestorluiscamachopaz)
|
|
||||||
- **The `using-superpowers` bootstrap** no longer lists "debugging" as a skill that doesn't exist. (reported by @mhat)
|
|
||||||
- **The TDD skill** links the testing anti-patterns reference. (#1532, #1529; link fix #1474 by @Stable Genius)
|
|
||||||
- **`using-git-worktrees`** fixes its step numbering and drops stale Cursor references. (#1522, and by @fuleinist)
|
|
||||||
- **The Codex review skill** swaps a private in-joke for plain guidance. (#1531)
|
|
||||||
|
|
||||||
### Documentation & Contributor Guidelines
|
|
||||||
|
|
||||||
- **A guide to porting Superpowers to a new harness** (`docs/porting-to-a-new-harness.md`) lays out the three pieces every integration needs and the one rule that makes or breaks it: load the bootstrap at session start.
|
|
||||||
- **Every PR and issue now discloses how it was made** — model, harness, version, and installed plugins, or a note that it was written by hand. We weigh a contribution differently depending on what produced it. PRs also target `dev`, not `main`. The PR template, all three issue templates, and a new platform-support template carry this.
|
|
||||||
|
|
||||||
### Contributors
|
|
||||||
|
|
||||||
Thanks to @mattvanhorn, @nawfal, @Nick Galatis, @silvertakana, @nestorluiscamachopaz, @qer, @mhat, @Stable Genius, @fuleinist, @dev_Hakaze, @robotsnh, Rahul, and @arittr.
|
|
||||||
|
|
||||||
## v5.1.0 (2026-04-30)
|
## v5.1.0 (2026-04-30)
|
||||||
|
|
||||||
### Removals
|
### Removals
|
||||||
|
|||||||
@@ -133,29 +133,8 @@ opus controller flagged it 5/5. Cheap controllers handle explicit
|
|||||||
escalation; they absorb implicit authority-vs-quality adjudication.
|
escalation; they absorb implicit authority-vs-quality adjudication.
|
||||||
A possible L2b (discrete rule: "a reviewer finding that conflicts with
|
A possible L2b (discrete rule: "a reviewer finding that conflicts with
|
||||||
the plan's text is the human's decision — escalate it") would route the
|
the plan's text is the human's decision — escalate it") would route the
|
||||||
failing judgment through the escalation behavior that held.
|
failing judgment through the escalation behavior that held; untested.
|
||||||
|
Original recon notes follow.
|
||||||
**L2b tested 2026-06-11 (E35/E36, evals
|
|
||||||
`docs/experiments/2026-06-11-build-loop-autoresearch.md`): improves the
|
|
||||||
opus stack, does NOT rescue the sonnet rung.** Two rules: a reviewer
|
|
||||||
tripwire (a plan-mandated defect IS a finding — Important, labeled
|
|
||||||
plan-mandated; the human decides) and a controller escalation rule
|
|
||||||
(plan-mandated findings go to the human like any plan contradiction).
|
|
||||||
Micro on frozen sonnet-composed inputs: 0/6 → 6/6 labeled findings.
|
|
||||||
Full battery: opus controllers 2/2 internalized the rule, caught their
|
|
||||||
reviewer's miss as self-described backstop, and escalated for a
|
|
||||||
sanctioned fix (the 4241 ad-hoc behavior made structural); escalation
|
|
||||||
sanity 2/2 unbroken. Sonnet controllers: 1/5 full pass — paraphrase
|
|
||||||
drops the tripwire from dispatches (2/5 transmitted), transmission
|
|
||||||
alone doesn't fire it live (read-once dilution across the reviewer's
|
|
||||||
tool reads; placement within the dispatch refuted as the variable),
|
|
||||||
and no sonnet controller showed backstop behavior; 1/5 shipped the
|
|
||||||
defect. The L2b rules are a candidate commit for the opus stack.
|
|
||||||
A future L2c for the sonnet rung would pair the SKILL.md
|
|
||||||
constraints-recipe (the one channel sonnet transmits verbatim) with a
|
|
||||||
mandatory output-format slot for plan-mandated findings (the skeleton
|
|
||||||
survives every observed paraphrase and is consulted at composition
|
|
||||||
time); untested. Original recon notes follow.
|
|
||||||
|
|
||||||
**Recon (superseded):**
|
**Recon (superseded):**
|
||||||
Sonnet-controller runs (claude-sonnet coding-agent): all gates green at
|
Sonnet-controller runs (claude-sonnet coding-agent): all gates green at
|
||||||
|
|||||||
@@ -11,9 +11,6 @@ Execute plan by dispatching a fresh implementer subagent per task, a task review
|
|||||||
|
|
||||||
**Core principle:** Fresh subagent per task + task review (spec + quality) + broad final review = high quality, fast iteration
|
**Core principle:** Fresh subagent per task + task review (spec + quality) + broad final review = high quality, fast iteration
|
||||||
|
|
||||||
**Narration:** between tool calls, narrate at most one short line — the
|
|
||||||
ledger and the tool results carry the record.
|
|
||||||
|
|
||||||
**Continuous execution:** Do not pause to check in with your human partner between tasks. Execute all tasks from the plan without stopping. The only reasons to stop are: BLOCKED status you cannot resolve, ambiguity that genuinely prevents progress, or all tasks complete. "Should I continue?" prompts and progress summaries waste their time — they asked you to execute the plan, so execute it.
|
**Continuous execution:** Do not pause to check in with your human partner between tasks. Execute all tasks from the plan without stopping. The only reasons to stop are: BLOCKED status you cannot resolve, ambiguity that genuinely prevents progress, or all tasks complete. "Should I continue?" prompts and progress summaries waste their time — they asked you to execute the plan, so execute it.
|
||||||
|
|
||||||
## When to Use
|
## When to Use
|
||||||
@@ -82,20 +79,6 @@ digraph process {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Pre-Flight Plan Review
|
|
||||||
|
|
||||||
Before dispatching Task 1, scan the plan once for conflicts:
|
|
||||||
|
|
||||||
- tasks that contradict each other or the plan's Global Constraints
|
|
||||||
- anything the plan explicitly mandates that the review rubric treats as a
|
|
||||||
defect (a test that asserts nothing, verbatim duplication of a logic block)
|
|
||||||
|
|
||||||
Present everything you find to your human partner as one batched question —
|
|
||||||
each finding beside the plan text that mandates it, asking which governs —
|
|
||||||
before execution begins, not one interrupt per discovery mid-plan. If the
|
|
||||||
scan is clean, proceed without comment. The review loop remains the net for
|
|
||||||
conflicts that only emerge from implementation.
|
|
||||||
|
|
||||||
## Model Selection
|
## Model Selection
|
||||||
|
|
||||||
Use the least powerful model that can handle each role to conserve cost and increase speed.
|
Use the least powerful model that can handle each role to conserve cost and increase speed.
|
||||||
@@ -105,8 +88,6 @@ Use the least powerful model that can handle each role to conserve cost and incr
|
|||||||
**Integration and judgment tasks** (multi-file coordination, pattern matching, debugging): use a standard model.
|
**Integration and judgment tasks** (multi-file coordination, pattern matching, debugging): use a standard model.
|
||||||
|
|
||||||
**Architecture and design tasks**: use the most capable available model.
|
**Architecture and design tasks**: use the most capable available model.
|
||||||
The final whole-branch review is one of these — dispatch it on the most
|
|
||||||
capable available model, not the session default.
|
|
||||||
|
|
||||||
**Review tasks**: choose the model with the same judgment, scaled to the
|
**Review tasks**: choose the model with the same judgment, scaled to the
|
||||||
diff's size, complexity, and risk. A small mechanical diff does not need the
|
diff's size, complexity, and risk. A small mechanical diff does not need the
|
||||||
@@ -119,10 +100,8 @@ most expensive — which silently defeats this section.
|
|||||||
**Turn count beats token price.** Wall-clock and context cost scale with how
|
**Turn count beats token price.** Wall-clock and context cost scale with how
|
||||||
many turns a subagent takes, and the cheapest models routinely take 2-3× the
|
many turns a subagent takes, and the cheapest models routinely take 2-3× the
|
||||||
turns on multi-step work — costing more overall. Use a mid-tier model as the
|
turns on multi-step work — costing more overall. Use a mid-tier model as the
|
||||||
floor for reviewers and for implementers working from prose descriptions.
|
floor for implementers and reviewers; reserve the cheapest tier for
|
||||||
When the task's plan text contains the complete code to write, the
|
single-file mechanical fixes.
|
||||||
implementation is transcription plus testing: use the cheapest tier for
|
|
||||||
that implementer. Single-file mechanical fixes also take the cheapest tier.
|
|
||||||
|
|
||||||
**Task complexity signals (implementation tasks):**
|
**Task complexity signals (implementation tasks):**
|
||||||
- Touches 1-2 files with a complete spec → cheap model
|
- Touches 1-2 files with a complete spec → cheap model
|
||||||
@@ -195,11 +174,6 @@ final whole-branch review. When you fill a reviewer template:
|
|||||||
findings in the progress ledger as you go, and point the final
|
findings in the progress ledger as you go, and point the final
|
||||||
whole-branch review at that list so it can triage which must be fixed
|
whole-branch review at that list so it can triage which must be fixed
|
||||||
before merge. A roll-up nobody reads is a silent discard.
|
before merge. A roll-up nobody reads is a silent discard.
|
||||||
- A finding labeled plan-mandated — or any finding that conflicts with
|
|
||||||
what the plan's text requires — is the human's decision, like any plan
|
|
||||||
contradiction: present the finding and the plan text, ask which governs.
|
|
||||||
Do not dismiss the finding because the plan mandates it, and do not
|
|
||||||
dispatch a fix that contradicts the plan without asking.
|
|
||||||
- The final whole-branch review gets a package too: run
|
- The final whole-branch review gets a package too: run
|
||||||
`scripts/review-package MERGE_BASE HEAD` (MERGE_BASE = the commit the
|
`scripts/review-package MERGE_BASE HEAD` (MERGE_BASE = the commit the
|
||||||
branch started from, e.g. `git merge-base main HEAD`) and include the
|
branch started from, e.g. `git merge-base main HEAD`) and include the
|
||||||
|
|||||||
@@ -115,11 +115,6 @@ Subagent (general-purpose):
|
|||||||
"yes." A tight report that cites lines gives the controller everything
|
"yes." A tight report that cites lines gives the controller everything
|
||||||
it needs.
|
it needs.
|
||||||
|
|
||||||
Your final message is the report itself: begin directly with the
|
|
||||||
spec-compliance verdict. Every line is a verdict, a finding with
|
|
||||||
file:line, or a check you ran — no preamble, no process narration,
|
|
||||||
no closing summary.
|
|
||||||
|
|
||||||
## Calibration
|
## Calibration
|
||||||
|
|
||||||
Categorize issues by actual severity. Not everything is Critical.
|
Categorize issues by actual severity. Not everything is Critical.
|
||||||
@@ -128,11 +123,6 @@ Subagent (general-purpose):
|
|||||||
would block a merge over — verbatim duplication of a logic block,
|
would block a merge over — verbatim duplication of a logic block,
|
||||||
swallowed errors, tests that assert nothing. "Coverage could be broader"
|
swallowed errors, tests that assert nothing. "Coverage could be broader"
|
||||||
and polish suggestions are Minor.
|
and polish suggestions are Minor.
|
||||||
If the plan or brief explicitly mandates something this rubric calls a
|
|
||||||
defect (a test that asserts nothing, verbatim duplication of a logic
|
|
||||||
block), that IS a finding — report it as Important, labeled
|
|
||||||
plan-mandated. The plan's authorship does not grade its own work; the
|
|
||||||
human decides.
|
|
||||||
Acknowledge what was done well before listing issues — accurate praise
|
Acknowledge what was done well before listing issues — accurate praise
|
||||||
helps the implementer trust the rest of the feedback.
|
helps the implementer trust the rest of the feedback.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user