Skip to content

Bind Paper Review Apply rate to weekly decisions - #2295

Open
Chris0Jeky wants to merge 9 commits into
mainfrom
issue-2205/apply-rate-binding
Open

Bind Paper Review Apply rate to weekly decisions#2295
Chris0Jeky wants to merge 9 commits into
mainfrom
issue-2205/apply-rate-binding

Conversation

@Chris0Jeky

Copy link
Copy Markdown
Owner

Summary

  • compute the Paper Review queue rail's weekly Apply rate from the proposal page it already loads
  • share the current-user, local 7-day, and board-scope predicate with the existing cadence bars
  • bind the real value into ReviewQueueRail, preserving undefined for no attributable history and numeric 0 for a measured zero

Implementation notes

The numerator is proposals in the qualifying decided cohort with a non-null appliedAt; current status is deliberately not used. appliedAt is the lifecycle authority because an applied proposal can later be Dismissed and must remain part of Apply history.

The projection remains bounded by the existing 200-proposal review page. This PR adds no endpoint, paging path, or backend expansion.

Tests added / updated

  • pure apply-rate coverage for fractional, zero, unavailable, user/window/board exclusions, and Dismissed + appliedAt
  • reactive wrapper recomputation coverage
  • Paper Review binding coverage through the rendered rail

Verification

  • npx vitest --run --maxWorkers=2 src/tests/composables/useReviewCadence.spec.ts src/tests/views/paper/review/PaperReviewView.spec.ts src/tests/views/paper/review/ReviewQueueRail.spec.ts ? 3 files / 174 tests passed
  • npm run typecheck ? passed
  • npx eslint src/composables/useReviewCadence.ts src/tests/composables/useReviewCadence.spec.ts src/views/paper/PaperReviewView.vue src/tests/views/paper/review/PaperReviewView.spec.ts ? passed
  • npm run build ? passed
  • npx vitest --run --maxWorkers=2 ? 357 files / 5,273 tests passed
  • git diff --check ? passed

Docs

No canonical docs changed: this wires an already-shipped rail contract without changing API, operator workflow, or roadmap scope.

Risks / follow-ups

  • The rate is an honest projection of the loaded 200-proposal page, so it can be a bounded sample on unusually high-volume accounts; widening that bound remains a review-queue paging concern.
  • No manual browser or screen-reader pass was run; component and composable tests exercise the rendered behavior.

Closes #2205

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Aug 30, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-08-30T21:37:24.397313Z ee84f1b New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7cef9eef14

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread frontend/taskdeck-web/src/composables/useReviewCadence.ts
Comment thread frontend/taskdeck-web/src/views/paper/PaperReviewView.vue

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 67a4e82d08

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread frontend/taskdeck-web/src/views/paper/PaperReviewView.vue Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9fdd34c3fb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread frontend/taskdeck-web/src/views/paper/PaperReviewView.vue

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fbd648eaa0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread frontend/taskdeck-web/src/views/paper/PaperReviewView.vue
@Chris0Jeky Chris0Jeky moved this from Pending to Blocked in Taskdeck Execution Aug 30, 2026
@Chris0Jeky

Copy link
Copy Markdown
Owner Author

Parked at the bounded review ceiling.

Current checkpoint:

  • base: bd25419
  • head: fbd648e
  • local proof remains green: 177 affected tests, typecheck, scoped lint, production build, and diff checks
  • the board-scoped 403 disclosure was fixed and its thread resolved
  • the remaining unresolved HIGH is the distinct unscoped 200/filtering path in discussion r3888974971

Even a green CI run does not make this head merge-eligible.

Exact resume: bind retained metric history to an authoritative current readable-board set when the unscoped queue returns 200, or move the history projection server-side behind authorization. Pin file-away -> revoke board -> successful filtered 200 -> no inaccessible-board cadence/rate. Then run the current-base focused/full frontend gate and one review only for that defect.

The worktree and ready PR are preserved; no third fix round was attempted.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 07a7b5d8c4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread frontend/taskdeck-web/src/views/paper/PaperReviewView.vue Outdated
Comment thread frontend/taskdeck-web/src/views/paper/PaperReviewView.vue
Comment thread frontend/taskdeck-web/src/views/paper/PaperReviewView.vue
Comment thread frontend/taskdeck-web/src/views/paper/PaperReviewView.vue
@Chris0Jeky

Copy link
Copy Markdown
Owner Author

Resumed defect-only review checkpoint

Head: 07a7b5d8c459c5c19a0d33ebf3210db52dd90c12
Current-base merge: b26f8fb57861dd8b182b5025875cd4e22b9bac0a from origin/main a6cc459c90ce8fafe2e4785da5490f48b44cec19

Changed:

  • reconciled retained filed-away decisions against the complete paginated readable-board catalogue after landed queue polls
  • suppressed retained-only metrics while authorization is unknown
  • pruned unreadable boards only after a complete successful catalogue read
  • generation-guarded stale catalogue responses and retried transient failures

Verified:

  • focused cadence/view: 156/156
  • coordinator rerun: 156/156
  • documented Review seam: 211/211
  • typecheck, production build, and scoped ESLint: passed
  • full frontend: 357 files, 5,310 tests passed
  • independent exact-head review: no CRITICAL or HIGH findings

Review disposition:

  • MEDIUM: unavailable retained history can currently render as no decisions while a catalogue request is pending or failed. This is already tracked by [Frontend][Review] Apply-rate empty state conflates unavailable history with no decisions #2297 and is not expanded into this bounded authorization repair.
  • LOW: overlapping catalogue reads are generation-safe but not cancelled. No wrong-state or authorization path was found; deferred without another fix round.
  • Hosted Smart CI / Required Gate is green. The remaining exact-head jobs are still running.

NOT verified: live API, browser, or screen-reader behavior.

CLAUDE_SYNC_PACKET

@Chris0Jeky

Copy link
Copy Markdown
Owner Author

Review checkpoint superseded

The prior checkpoint recorded the independent review available at that time. A later exact-head Codex connector review found one confirmed HIGH: explicit accepted queue reloads do not run retained-board reauthorization. PR #2295 is not merge-eligible at 07a7b5d8c; a route-clear regression and bounded fix are in progress. The other connector suggestions were triaged as non-blocking in their threads.

CLAUDE_SYNC_PACKET

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ee84f1bb2e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

})
if (requestId !== latestProposalLoadRequestId) return
proposals.value = loadedProposals
onAuthoritativeQueueReplaced?.()

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Invalidate retained metrics on explicit 403 loads

When a mounted reviewer retains a decision from board A, navigates to another board, loses access to A, and then returns to ?boardId=A, the route-triggered loadProposals() receives 403, but this hook runs only on success; the catch leaves A in readableFiledAwayBoardIds and leaves queueAccessRevoked false, so the rail exposes A's cadence and Apply rate until a later background poll detects the revocation. Fresh evidence beyond the earlier background-poll finding is this explicit-load 403 path, which should synchronously clear or suppress retained authorization as the poll path does.

AGENTS.md reference: AGENTS.md:L97-L100

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Confirmed HIGH at ee84f1b. An explicit scoped load that returns 403 can leave retained cadence history readable until a later poll. This is a direct authorization-state defect. This is the second reopen at the bounded review ceiling, so I am parking this head rather than starting a third fix round. Exact resume point: add an authoritative rejection path for explicit 403 loads that synchronously clears or suppresses retained metrics, with a route-away, revoke-access, route-back regression.

@Chris0Jeky

Copy link
Copy Markdown
Owner Author

Parked at exact head ee84f1bb2e2e6092fee2637960d8a91e444ce742.

The final connector review confirmed a HIGH authorization-state defect: after a reviewer loses access, an explicit scoped load returning 403 can leave retained cadence history visible until a later poll. This is the second reopen in the bounded review pipeline, so no third fix round is starting.

Exact resume point: add an authoritative rejection path for explicit 403 loads that synchronously clears or suppresses retained metrics. Prove route away from board A, revoke A access, route back with ?boardId=A, receive 403, and show no A cadence/rate metrics plus the access-revoked state. Then rerun the documented Review seam, full frontend suite, exact-head CI, and one fresh review.

CLAUDE_SYNC_PACKET

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Blocked

Development

Successfully merging this pull request may close these issues.

[Frontend][Review] The queue rail Apply rate is permanently empty - PaperReviewView never binds the applyRate prop

2 participants