fix: guard deferred review receipts by decision locus - #2629
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
… inherit Review round 2. Both hoisted sentences state emptiness from an empty default that also means "still loading" and "the read failed". usePaperReviewSelectors initialises confidenceData to EMPTY_CONFIDENCE and similarPastData to an empty array, clearSelectorData resets both on every proposal switch, and a failed batch deliberately leaves them there so a partial snapshot cannot publish; no flag distinguishes that state, and evidenceUnavailable on ReviewRightRail is set only from the Apply-time refresh (activeRevisionReviewUnavailable), never from the page-load batch. Neither card can fix this. ReviewRightRail is a pure props component and the twelve props it receives are all bound in PaperReviewView.vue, which is held by open PR #2629. The composable does expose `loading`, but nothing threads it in. Adding a settled prop defaulting to true would compile and change nothing on the real surface, while presenting the defect as handled, so this commit records the gap instead of simulating a fix. Record it in both doc blocks, naming the three situations that arrive as the same empty value and the one place that could tell them apart. The copy itself is not new: the same sentences rendered inside the disclosures before #1940, so hoisting made an existing false claim easier to see rather than creating one. Also use the isEmpty computed for the apply-rate guard, which still read rows.length > 0 while the rest of the template had moved on. Refs #1940
|
Review gate (Codex review credits exhausted, SC-9; D-12 ruled 2026-09-05: the Codex session's PRs are reviewed and merged by the coordinator): one fresh-context read-only reviewer (Opus 5) on head Checked by reading: the new Findings and disposition (both LOW, none owed for merge):
Residual (pre-existing, identical to Issue disposition: slice of |
…s line, SC-10 scope, item-5 count, carry-forward) Answers the docs review of PR #2693: the header points forward to the coordination-lane subsection the coordinator adds after the block lands instead of at one that does not exist yet; a corrections line retires the thirteenth block's present-tense claim that #2629 and #2654 were unmerged; the SC-10 sentence scopes the platform lane's five to its own checkpoint and leaves the ten-PR measurement to the coordinator's sweep record; item 5's caller count is the measured five; the not-shipped line carries the fourteenth block's non-ruling residuals forward; items 5 to 10 named on the #2690 bullet; one bare issue number backticked.
Summary
onDeferdecision receipt with the current Paper Review decision locus.Refs #2128
Verification
npx vitest --run --maxWorkers=2 src/tests/views/paper/review/PaperReviewView.spec.ts -t "defer receipt"— 2 passed.npx vitest --run --maxWorkers=2 src/tests/views/paper/review/PaperReviewView.spec.ts— 171 passed.npx vitest --run --maxWorkers=2— 5,713 passed, 3 skipped across 370 files.npm run typecheck— passed.npx eslint src/views/paper/PaperReviewView.vue src/tests/views/paper/review/PaperReviewView.spec.ts --max-warnings=20— passed.npm run build— passed; existing ineffective dynamic import warning remains.git diff --check— passed.Scope
This PR implements only
TD-2128-defer. The execute and reject sibling recorders remain separate slices.