feat/doubt-review-hardening #1

Merged
Lynx merged 6 commits from feat/doubt-review-hardening into main 2026-10-01 12:12:24 +02:00
Owner
No description provided.
- Waivers could never pass: the finding scan read every F-N row in the
  document, so Waivers rows were re-parsed as findings with an "invalid
  classification". The scan is now limited to the Findings section.
- Must-fix closure matched /resolved|fixed/ anywhere, so "unresolved",
  "not fixed" and "open (to be fixed)" counted as closed. Closure must now
  be exactly resolved or fixed.
- Scenario coverage used three independent substring checks, so citing
  "Invalid password lockout" also covered "Invalid password". References
  must now be contiguous and are not satisfied by a longer known name.
- quality-ui plans could omit the UI approval gate line (6 of 7 accepted).
- Waiver approval accepted any non-"no/none/pending" word (e.g. "TBD");
  it must now quote the user's words, matching the template's
  "Exact user approval".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Planned-By: Claude Opus 5.5 <noreply@anthropic.com>
A fallback means the orchestrator performed a reviewer's charter itself.
Previously all three reviewers could fall back with no recorded reason
and the gate still passed — the plan author reviewing its own plan.

check-plan now requires each fallback to state its failure in Verdicts
Notes, and fails when two or more reviewers fell back unless Waivers has
a `fallback` row quoting the user's approval of the reduced panel. The
schema retry policy and template comment describe the same rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Planned-By: Claude Opus 5.5 <noreply@anthropic.com>
Adopted from the OpenSpec reflection harness (qtalen/agentic-ai-playground
15_OpenSpec_Reflection_Harness): separate substantive defects from noise,
and stop review loops at a fixed round count with a human decision.

- Reviewers share one operational must-fix test (divergent builds,
  verification that fails or proves nothing, contradiction, unsafe or
  undecided) and must name the condition; everything else is an
  improvement. A "do not report" list removes cosmetic findings and
  re-litigation of recorded user decisions, which inflated must-fixes
  and revision churn.
- Each reviewer report now states cold-executor readiness, which the
  gate already required but no reviewer produced.
- Closure is limited to two rounds, then the user chooses: waive named
  findings, rework from design, or one more round. Previously
  "iterate once" left the next step undefined.
- check-plan flags open-ended task wording ("e.g.", "etc.", "such as")
  that leaves a cold executor to guess the rest of a list; etc/ paths
  are not affected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Planned-By: Claude Opus 5.5 <noreply@anthropic.com>
The reflection harness freezes artifacts by instruction only; here the
freeze becomes a check. Before this, tasks.md or any other reviewed
artifact could be edited after the doubt review and check-plan still
passed, so apply could run a plan nobody reviewed.

- check-plan --fingerprint prints a short sha256 over proposal, specs,
  design, tasks, verification and (quality-ui) every ui-mocks file.
  Task checkboxes are normalized so apply can tick them.
- doubt-review.md records it as **Reviewed fingerprint** after closure;
  check-plan fails on a missing or mismatched value.
- Schemas: record the fingerprint after closure; apply re-runs
  check-plan when resuming and treats any other artifact edit as needing
  closure confirmation or the user's approval to re-record.

It cannot stop an agent from deliberately re-recording, but every edit
after review now fails the gate and shows up in the doubt-review.md diff.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Planned-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Planned-By: Claude Opus 5.5 <noreply@anthropic.com>
List the files the tree was missing (subagent model router, its config,
enable-quality, tmux, tests) and fix ask-user-question's path. Drop the
Requirements table since bootstrap covers it, add pi-lsp-extension to the
manual install, and document OPENROUTER_API_KEY and PI_BROWSER_PROFILE.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Planned-By: Claude Opus 5.5 <noreply@anthropic.com>
Lynx merged commit 70abf5c9c2 into main 2026-10-01 12:12:24 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Lynx/pi-config!1
No description provided.