Repository navigation
Show the rule-anchored score range on the feedback first screen - #36
Merged
Merged
Conversation
Feedback written under an installed rubric with frozen weights now carries an optional score_range: verified rule bounds tighten it, pending, model-advice and undetermined criteria span their full weight, and not-applicable criteria leave the denominator, which is reported without rescaling. There is no single total. Candidate-2 rubrics have no frozen weights and record nothing, so their bytes are unchanged; partial read projections whose rule results changed withhold the range. The engine's own diagnostics stay byte-identical.
…re range Append the rule-score-range manifest history entry (previous revision expansion-v3-2a9777a2...), regenerate both exports through their official entry points (identical in two empty directories first), regenerate contracts-v2.ts and refresh the five protected release identities.
The short result now states the recorded range of the rule-anchored part with its denominator and the note that model advice is not scored and pending items widen the range; expanding an item names its weight share and whether rules anchor it, bound it, leave it pending or find it not applicable, with points only for rule results. Candidate-2 records say their rubric version has no range; a final record without one says so, and a partial projection says the range is withheld. Copy lives in the paired zh/en table.
Old candidate-2 sessions after the switch and new final-rubric launches, zh and en, desktop and 390px, light and dark.
A review limited to some criteria (an API or external-agent scope) would otherwise describe criteria it never evaluated; its feedback job also failed on the strict criterion check. Unknown or duplicate criteria are still rejected.
An upper end equal to the denominator (or to a rule-bounded item's weight) is written exactly as that number, and a rounded-up upper end never passes it; the lower end still rounds down. An exploration-note review now reads 0–33.3 of 33.3 instead of 0–33.4 of 33.3. The normal-entry check adds that review card.
Regenerate both exports (identical in two empty directories first), contracts-v2.ts and the two changed release identities.
Two cases shared one title, which the regression comparison rejects as a duplicate frontend test ID.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Show the rule-anchored score range on the feedback first screen (product decision 5, 2026-10-11). The product still never shows a single total; it shows the range the verified rules have already pinned down, and model advice still does not count.
What the user sees (zh/en, desktop and 390px, keyboard)
rangeEnds(lower, upper, cap)), so "33.3 of 33.3" never reads as "33.4 of 33.3".Backend and contract
rubrics/v4/score_range.pycomputes the range once when feedback is written;FeedbackV2.score_rangeis optional and older records are byte-for-byte unchanged (example compared byte for byte in tests). Weights come from the session package's installed final rubric file and are hash-checked; tampered weights are rejected.14439473, engineer-review-v1 →ce936180(previous2a9777a2);manifest_historynotes that scoped reviews record no range.Review and verification
080-review-139.md(two rounds; first round sent back for a display-rounding P1, fixed in2ee84bfwith 12 rounding cases): final verdict 可合入. Reviewer recomputed 217 weight/status combinations independently, scanned 721,801 rounding pairs (0 overflow, 0 narrowing), and probed weight tampering (all rejected).271378b: lint 0 new; backend 3212 passed / 31 skipped; frontend 404 / 7; 72 state checks; build; per-ID "Regression gate: 0 problems"; browser 20 steps zh+en; MCP bilingual pass. The branch containsmain06122d8, so the merge tree equals the gated tree.Not claimed / follow-ups
Two wording decisions taken on 2026-10-12 are not in this PR and follow separately: when some items' applicability is unconfirmed the denominator line will read "适用项共 X 分,其中 Y 分适用性待确认"; the coverage line will show item counts only (no percentage).
RANGED_VERSIONSlists the final rubric version explicitly; a future rubric version needs a one-line update. Receipt: 完成回执/claude-coordination/139-分数区间显示.md.