You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat: step-precision concern + tier3 thin-coverage + walker round emission + self-cycle wording
Fix B (walker.py): generate_step_precision_concerns — four structural patterns
per step action: pip install without version pin, python -m <pkg> with no
subcommand, bare URL with no version token, bare model ID alongside LLM vendor SDK.
Each emits an edge-case concern with a per-step idempotency guard.
Fix C (llm_judge.py, findings.py): tier3-negative-paths-thin-coverage — when a
negative-path-omission finding is present and the step's negative-paths count is
< 3, emit an alongside warn finding. Threshold is >= 3 = documented. New kind
registered in KNOWN_KINDS and TIER3_CONTRADICTION_SEVERITY.
Fix D (walker.py): after each round_count increment in record_answer, emit
_status.emit("info", "walker.round", round=N, pending=K) for per-round operator
visibility. Wrapped in try/except so test contexts without _status can't break it.
Fix M (spec_ast.py): rewrite self-cycle-produces message and suggested_fix.
Message now says "references X which it also declares in produces (possible
self-cycle)." Suggested fix offers the two-branch operator choice: remove from
produces if action only names the path, or assert idempotency if it reads it.
Glossary (docs/glossary.md): added tier3-negative-paths-thin-coverage (finding)
and walker.round (status) entries with full dev/pm/triggered_by/user_action.
Tests: 1896 passed (+28 over 1868 baseline).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(glossary): correct tier3-negative-paths-thin-coverage description
The 'Tier-3 demotion alongside-finding' framing was inaccurate. negative-path-omission is info-severity and never enters the faithfulness demotion path (_BLOCK_CONTRADICTION_KINDS in llm_judge.py only contains block-severity kinds). The new check fires alongside the original finding when negative-paths count < 3 — co-occurrence, not demotion. Rewriting dev:, pm:, triggered_by:, and dropping the misleading tier3-unfaithful-contradiction related: entry.
Caught in Wave 4 Opus aggregate review.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/glossary.md
+18Lines changed: 18 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1216,3 +1216,21 @@ Status codes: dotted identifiers like `walker.init`. Terms: `term:<noun>` prefix
1216
1216
- user_action: Run `spectre catalog upgrade-taxonomy --spec <slug> --to <version>` when you want to consider the newer axes, or ignore.
1217
1217
- related: term:taxonomy-version
1218
1218
- since: v1.0
1219
+
1220
+
## tier3-negative-paths-thin-coverage
1221
+
- kind: finding
1222
+
- dev: Emitted alongside any `negative-path-omission` finding whose step has fewer than 3 `negative-paths:` entries. No demotion is involved — `negative-path-omission` is info-severity and never enters the faithfulness demotion path. The pairing signals "the LLM judge flagged a missing failure branch AND the step's structural coverage is thin." Tier-3 warn, dismissable.
1223
+
- pm: A step's failure-branch coverage is thin (fewer than 3 entries) and the automated review flagged a missing failure scenario. Consider adding more failure scenarios to the step's negative-paths section.
1224
+
- triggered_by: Co-occurrence of a `negative-path-omission` finding (LLM-judge output) and `< 3` negative-paths entries on the affected step.
1225
+
- user_action: Add more negative-paths entries to the flagged step (at least 3 entries covering different failure modes), or dismiss if the step genuinely has only one or two realistic failure branches.
1226
+
- related: negative-path-omission
1227
+
- since: v1.2
1228
+
1229
+
## walker.round
1230
+
- kind: status
1231
+
- dev: Emitted after each concern answer in the walker interview loop. Fields: round=N (1-based count of answered concerns), pending=K (remaining non-stale concerns). Provides per-round visibility into walk progress without exposing convergence decisions.
1232
+
- pm: The walker just finished interview round N. There are K questions still to answer.
- user_action: No action required. Monitor round and pending counts to gauge walk progress. Operator interpretation only — walker.round does not imply any threshold or convergence signal.
0 commit comments