Skip to content

Remove the misleading Review apply-rate metric - #2413

Merged
Chris0Jeky merged 25 commits into
mainfrom
codex-2205-remove-apply-rate
Sep 3, 2026
Merged

Remove the misleading Review apply-rate metric#2413
Chris0Jeky merged 25 commits into
mainfrom
codex-2205-remove-apply-rate

Conversation

@Chris0Jeky

@Chris0Jeky Chris0Jeky commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Summary

  • remove the dead Paper Review queue Apply-rate metric and its false No decisions yet empty claim
  • keep the truthful weekly review cadence visualization unchanged
  • remove the orphaned English, Spanish, and Italian copy
  • pin that Paper Review no longer renders either Apply-rate state

Tests

  • focused Review Vitest: 163 passed
  • locale catalog Vitest: 19 passed
  • npm run typecheck: passed
  • scoped ESLint across the six changed files: passed
  • npm run build: passed, 810 modules; pre-existing ineffective dynamic-import warning only
  • current-base git diff --check: passed

Review

Fresh-context review of exact head b577db14627c5212d0625ed939bc2e29337fe30b against current origin/main 07534d9c653e91e827ffc19a78ada78b731bc498 found no CRITICAL or HIGH defect. The branch contains that main head and the live comparison is exactly the six claimed Review rail, locale, and test files. PRs #2417 and #2419 are disjoint from this seam. Automatic Codex review completed with no finding.

The truthful This week cadence heading without bars remains a declined nonblocking observation. Similar Past and Today Apply-rate metrics are separate and unchanged.

Docs

No canonical documentation changed. This is the accepted removal path recorded on #2205. The canonical STATUS correction is already handed to its active owner.

Verification boundary

  • exact-head hosted CI passed
  • no browser or Playwright visual pass was run

Closes #2205

The seam map is read instead of the codebase, so a wrong row misroutes an
agent and a wrong Verify column lets an unproven change look proven.

The false-green is the important one. The Frontend row's Verify column said
`npx vitest --run`, but vitest.config.ts:15 excludes
tests/pwa-generated-worker.spec.ts, so a vite.config.ts workbox change or an
src/pwa/** change passes that command while its only contract test never runs.
The column now says so and names `npm run test:pwa-generated-worker`.

Added a PWA / offline / cache boundary row. The seam is four modules under
src/pwa/, a public cleanup script, ApiCacheControlMiddleware and a behaviour
contract doc, and it had zero occurrences in the map after #2350/#2381 and
#2382/#2402. Its load-bearing invariant, that no runtime cache may ever admit
an API response, was invisible to anyone reading only this file.

Corrected four stale rows against main d629129:

- Capture row pointed at views/InboxView.vue and views/ReviewView.vue, which
  are 12-line theme switches. Paper is the default skin (ADR-0038,
  paperThemeStore.ts DEFAULT_MODE = 'paper'), so the real surfaces are
  views/paper/PaperInboxView.vue and views/paper/PaperReviewView.vue with
  their subdirectories; the legacy views are named as opt-out fallbacks.
- Transcript row said transcript input is held in LlmRequest.Payload "until
  #1305 links triage to Transcript". #1305 closed 2026-08-27 via PR #2144,
  which also deleted the RFAI-02 intent-envelope vocabulary, so the row was
  sending agents to look for something that no longer exists.
- Smart CI row said the shadow lane was "landing with CI-02 #2326". It has
  landed and runs three checks on every PR. Also names the five smart-ci CLIs
  including resolve-merge-ref.mjs from #2401 / PR #2404.
- Td* primitive count 17 to 18.

Also: STATUS is 935 lines and the masterplan 2068, not the "~1.5k" and "~1.7k"
the orient section claimed; added the two path-scoped rule files
(.claude/rules/ci-control.md, .claude/rules/docs.md), which load by path rather
than directory and were unlisted; added OUTSTANDING_TASKS.md, the strategy
spine and the decisions index to the orient pointers.

Stamped 2026-09-03 with an explicit rule that any edit bumps the stamp,
including an add-only edit, since an unbumped stamp claims verification the
edit did not perform.

Verified: every path in the new row exists on main; vitest.config.ts:15
exclusion and the package.json test:pwa-generated-worker script read directly;
InboxView.vue and ReviewView.vue confirmed 12 lines each; #1305 confirmed
closed 2026-08-27; Td*.vue count 18; STATUS/masterplan line counts by wc -l.
check-docs-governance, check-golden-principles and check-github-ops-governance
all exit 0; git diff --check clean; every table row still has four columns.
The Paper Color Audit does not scan autodoc/, so the backticked issue refs
follow the file's existing convention safely.
Answers a confirmed Codex P1 on this PR. The row I added claimed the runtime
caches "never admit an API response". That is false, and it is exactly the
class of defect this PR exists to remove: a false safety property in the file
agents read instead of the code.

Proven, not argued. The deny test only matches a path starting with /api. The
admit test is anchored on /assets/ and /icons/ but its middle segment spans
any nested path, so an API base nested under either directory is admitted:

  /api/users/by-username/alice.png            -> not cached (deny hits)
  /taskdeck/api/users/by-username/alice.png   -> not cached (no dir match)
  /assets/api/users/by-username/alice.png     -> CACHED
  /icons/api/users/by-username/alice.png      -> CACHED

The last two would enter the shared, cross-identity taskdeck-static-assets
cache. The row now states the directory-anchored boundary, names the
admitted case, and says not to deploy an API base under those two
directories or to restate the invariant as unconditional.

The same overstatement exists in the source comment at
src/pwa/runtimeCachePolicy.ts and is mirrored in vite.config.ts and
docs/platform/PWA_OFFLINE_BEHAVIOR.md. That is a code-surface fix in a seam
this docs PR does not own, so it is tracked separately rather than fixed here.

Also fixed a table break I introduced with the first attempt at this
correction: the regex alternation put nine extra pipe characters into a
markdown table cell, splitting the row into fourteen columns. Restated
without regex syntax. Every row in the seams table is back to four columns,
verified by pipe count.

Verified: the four cases above executed against the exact regexes from
vite.config.ts:115-117; check-docs-governance and check-golden-principles
exit 0; git diff --check clean.

@Chris0Jeky Chris0Jeky left a comment

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.

Fresh-context review of exact head 6b5ff7af43ee6022cd893cd2933861cb53066208 against merge-base 4c6ce5f83e7e393c4d5790d7dd4afe9f2d97af15: 0 CRITICAL/HIGH findings; no review merge blocker.

The diff is exactly the six claimed Review rail, locale, and test files. It removes the dead Apply-rate claim while retaining ReviewMiniCadence; Similar Past and Today metrics are untouched. The current-base merge added only #2299's six disjoint Inbox files and did not alter any owned path.

Focused Review tests passed 163/163, catalog tests passed 19/19, and typecheck, scoped ESLint, build, and diff checks passed. The remaining visual observation is non-blocking: the truthful “This week” heading can remain when no cadence bars exist. No browser/Playwright pass was run.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 3, 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-09-03T05:57:49.621004Z b577db1 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.

Round two, from an independent verification of every remaining claim in the
new PWA row. The row was substantially accurate; these are the places it
claimed more than the code enforces. Two of them would have caused a wrong
change.

The important one is another false green, the same class this PR exists to
remove. src/pwa/runtimeCachePolicy.ts ships NOTHING: Workbox serializes the
urlPattern callbacks out of vite.config.ts, so the inlined copies there are
what reaches sw.js. An agent closing the /assets/api/... gap in the policy
module alone, then running exactly the commands my Verify column listed,
would have seen green from src/tests/pwa/, from startupCacheBoundary.spec.ts
and from test:pwa-generated-worker, and shipped a security fix that changed
nothing. The column now states the mirror relationship and names
tests/runtime-cache-policy-parity.spec.ts, which is the only test that pins
the two copies together.

The second would have deleted working code. The row said "a one-shot read of
registration.waiting would race and never deliver", unqualified, while
legacyApiCacheWorker.ts:191 deliberately does that read to catch a
replacement already waiting because the user dismissed the update banner. The
real claim needs "at the moment update() resolves". Left as written, an agent
tightening the seam removes :191; a user who dismissed the banner then gets no
updatefound on an unchanged script, the 12s deadline expires, the purge
reports failure, and router/index.ts:390 clears credentials on every
navigation. The row now marks that read as deliberate and says not to delete
it, and states that the migration is fail-closed and gates identity, which it
did not say at all.

Also corrected in the row: the cache is not origin-anchored either
(predicates test url.pathname only and cacheableResponse is
{statuses: [0, 200]}, so an opaque third-party response under a matching path
is admitted); "two runtime handlers" scoped to Workbox runtimeCaching, since
share-target-handler.js writes a third cache; dropped "build-owned", which
implied a first-party scope the predicate does not have; and #2411 now cited
by number rather than "tracked separately".

docs/platform/PWA_OFFLINE_BEHAVIOR.md is corrected in the same commit because
the row names it as the behaviour contract while it still carried the exact
absolute claim the row exists to qualify, on lines 17 and 25. Following the
row's own pointer landed on "never admits an API response". A correction that
is undone one hop away is not a correction. No open PR touches that file,
src/pwa/ or vite.config.ts, so there is no lease conflict.

Verified: every claim re-checked against code by an independent pass;
ApiCacheControlMiddleware.cs:10 confirmed to set the literal string
"no-store, private"; vitest.config.ts:15 exclusion and package.json:27
confirmed; runtime-cache-policy-parity.spec.ts confirmed present and NOT in
the exclude list, so it does run in the default suite. Both markdown tables
re-checked by pipe count. check-docs-governance, check-golden-principles and
check-github-ops-governance exit 0; git diff --check clean.

Not verified: no test or build executed; no built dist/sw.js inspected.

@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: 6b5ff7af43

ℹ️ 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/review/ReviewQueueRail.vue
Two merges landed without canonical entries, and one of them made an existing
STATUS sentence untrue.

The false sentence is the important half. The #2202 entry said of the Legacy
batch-triage reconciliation: "this is not a poll, so an item finishing after
that fetch still needs the existing refresh paths." PR #2299 (merge 4c6ce5f)
made it a poll. Left standing, the source of truth would have contradicted
shipped behaviour on the exact seam #2230 is about. Retracted in place with a
pointer rather than deleted, so the supersession is legible.

Added the #2388 entry: an 8-second deadline on each background Review queue
request, the last trustworthy queue preserved behind a polite degraded notice
after three consecutive transient failures, cleared by any successful poll or
explicit load, with 403 authority and teardown/supersession semantics intact
in both skins. The Paper hardcoded-English stale copy stays a known MEDIUM on
#2214 item 4.

That entry also records something worth knowing: PR #2388's body asserted
"docs/STATUS.md now records PR #2388" and it did not. Merge 4b80756 changed
nothing in this file, and no mention of the deadline or the degraded state
existed anywhere in it. Verified with git show on the merge and by grep.

Added the #2299 entry with the observedPostEnqueueList guard that fixed the
twice-parked defect, and, deliberately, why #2230 stays open: the poll's
60-second wall is shorter than the server's worst-case drain (at most
MaxBatchSize items total per tick then a QueuePollIntervalSeconds sleep,
shipped 5 and 5, shared between capture and non-capture work, against a
50-item accepted batch), and expiry is silent, so a large batch can expire
back into the cached Triaging detail the issue exists to remove. The two
Codex P2s are recorded as declined-unreachable with the citation.

Verified: check-docs-governance and check-golden-principles exit 0; git diff
--check clean; both new entries and the retraction present by grep; the
merge SHAs, the absence of any STATUS change in 4b80756, and the shipped
worker settings all re-read this session.

Not verified: no test, build or application run. The batch-drain timing is
arithmetic over committed configuration, not an observed run.

@Chris0Jeky Chris0Jeky left a comment

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.

Current-base interaction recheck of exact head b9ab692df972f04d5ecdd20f88d7f759c145ba02 against merge-base a32b4818df04fffeab348ed63012fafd6bd18631: 0 CRITICAL/HIGH findings; no new merge blocker.

The incoming base is exactly #2410's nine backend files and changes none of the six #2205 frontend paths. The PR diff remains exactly those six paths. Current-head Review tests passed 163/163, catalogs passed 19/19, and scoped ESLint, build/typecheck, source guard, and diff checks passed.

The already triaged “This week” without bars observation remains a valid non-blocking P2 and is declined for this bounded cycle. Exact-head hosted CI is running.

…icting

Answers a confirmed Codex P2. Recording #2388's delivery made the adjacent
#2298 entry false: line 91 still listed per-request deadlines and
stale/degraded queue disclosure as open on #2214 while the new entry recorded
both as shipped. In the file that is the declared source of shipped reality,
two adjacent entries disagreeing about remaining scope would send an
implementer to build something that already exists.

I declined this pruning when opening the PR, on the grounds that #2388's own
claim about what it removed could not be verified. That reasoning still holds
for the claim; it does not hold for these two items, which I verified directly
against main rather than against the PR body:

  REVIEW_QUEUE_REQUEST_DEADLINE_MS = 8_000   useReviewProposals.ts:53
  raced via Promise.race                     :590, cleared :592
  consecutiveQueueRefreshFailures            :543-560
  degraded indication cleared on success     :519-520

So exactly two items are struck, each with its evidence inline, and the strike
is attributed to #2388 with its merge SHA so the supersession is traceable
rather than looking like a silent edit.

The stale copy's Paper localization stays open as #2214 item 4, because it is
hardcoded English. Deep-link re-authorization, count-neutral replacement
announcements and the low-impact accessibility/diagnostic residuals are
untouched and still listed. Nothing else was pruned.

Verified: the four line references read from main this session;
check-docs-governance and check-golden-principles exit 0; git diff --check
clean.

@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: b9ab692df9

ℹ️ 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/review/ReviewQueueRail.vue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

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

1 participant