Skip to content

Add internal-contradictions check as #1 in design review prompt#740

Merged
wesm merged 2 commits into
kenn-io:mainfrom
tmylk:add-spec-contradiction-bullet
May 24, 2026
Merged

Add internal-contradictions check as #1 in design review prompt#740
wesm merged 2 commits into
kenn-io:mainfrom
tmylk:add-spec-contradiction-bullet

Conversation

@tmylk
Copy link
Copy Markdown
Contributor

@tmylk tmylk commented May 23, 2026

What

Add a new top-priority bullet to the design review prompt that asks the reviewer to flag internal contradictions between two parts of a spec, PRD, or task list.

 You are a design reviewer. ...

-1. **Completeness**: ...
-2. **Feasibility**: ...
-3. **Task scoping**: ...
-4. **Missing considerations**: ...
-5. **Clarity**: ...
+1. **Internal contradictions**: Flag places where two parts of the spec, PRD, or task list conflict — even if each is individually clear. Top priority, because downstream agents (codex, claude, etc.) may resolve them differently, producing inconsistent implementations.
+2. **Completeness**: ...
+3. **Feasibility**: ...
+4. **Task scoping**: ...
+5. **Missing considerations**: ...
+6. **Clarity**: ...

Why

I hit a case where roborev and codex effectively played tug-of-war over a contradiction between two parts of the spec — each side resolved the conflict differently, and neither flagged the underlying contradiction as the issue. The existing prompt covers Completeness ("are things defined?") and Clarity ("are decisions justified?"), but doesn't explicitly cover the case where two parts are each individually clear and complete, yet contradict each other.

Putting it at position #1 reflects the priority: when a spec contradicts itself, no implementation can satisfy all of it, and downstream agents will diverge in how they resolve the conflict — which compounds across commits.

Changes

Verification

$ go test ./internal/prompt/...
ok  	go.kenn.io/roborev/internal/prompt	46.329s
ok  	go.kenn.io/roborev/internal/prompt/analyze	0.413s

🤖 Generated with Claude Code

Surface contradictions between two parts of a spec/PRD/task list as the
first thing the design reviewer looks for. When two parts of a spec
conflict, the implementation cannot satisfy all of it, and downstream
agents (codex, claude, etc.) may resolve the conflict differently —
producing inconsistent implementations across commits.

This was prompted by a real tug-of-war between roborev and codex on a
spec contradiction that neither side flagged as the underlying issue.

Also updates the corresponding golden file.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@roborev-ci
Copy link
Copy Markdown

roborev-ci Bot commented May 23, 2026

roborev: Combined Review (372052b)

No Medium, High, or Critical issues found.

Both completed reviews found the change clean.


Synthesized from 3 reviews (agents: codex, gemini | types: default, security)

Note: gemini review skipped (agent quota exhausted)

3. **Task scoping**: Are implementation stages small enough to review incrementally? Are dependencies ordered correctly?
4. **Missing considerations**: Security, performance, backwards compatibility, error handling
5. **Clarity**: Are decisions justified and understandable?
1. **Internal contradictions**: Flag places where two parts of the spec, PRD, or task list conflict — even if each is individually clear. Top priority, because downstream agents (codex, claude, etc.) may resolve them differently, producing inconsistent implementations.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. **Internal contradictions**: Flag places where two parts of the spec, PRD, or task list conflict — even if each is individually clear. Top priority, because downstream agents (codex, claude, etc.) may resolve them differently, producing inconsistent implementations.
1. **Internal contradictions**: Flag places where parts of the spec, PRD, or task list conflict — even if each is individually clear. Top priority, because implementers could resolve these differently, resulting in inconsistencies.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no need to name implementers, it really shouldn't matter

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed on both — applied verbatim in abde8de.

  • Dropped "two" since contradictions can span more than two parts of the spec.
  • Dropped the named agents; "implementers" is the right level of abstraction here.

Per @mariusvniekerk's review on kenn-io#740:
- "two parts of the spec" → "parts of the spec" (contradictions can span
  more than two)
- "downstream agents (codex, claude, etc.) may resolve them differently,
  producing inconsistent implementations" → "implementers could resolve
  these differently, resulting in inconsistencies" (no need to name
  specific implementers; the concern holds regardless of who/what is
  implementing)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@roborev-ci
Copy link
Copy Markdown

roborev-ci Bot commented May 23, 2026

roborev: Combined Review (abde8de)

No Medium, High, or Critical issues found.

All completed reviews report the code is clean.


Synthesized from 3 reviews (agents: codex, gemini | types: default, security)

Note: gemini review skipped (agent quota exhausted)

@tmylk tmylk requested a review from mariusvniekerk May 24, 2026 05:13
@wesm
Copy link
Copy Markdown
Member

wesm commented May 24, 2026

LGTM

@wesm wesm merged commit 6cdde7a into kenn-io:main May 24, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants