Skip to content

fix(chat): seed issue detail cache from identifier lookup (CHE-1829) - #292

Draft
congvc-bot-x99[bot] wants to merge 32 commits into
stack/01a14594-3b86-77d5-b2b1-45415e7e761a/l1from
stack/01a14594-3b86-77d5-b2b1-45415e7e761a/l2
Draft

congvc-bot-x99[bot] wants to merge 32 commits into
stack/01a14594-3b86-77d5-b2b1-45415e7e761a/l1from
stack/01a14594-3b86-77d5-b2b1-45415e7e761a/l2

Conversation

@congvc-bot-x99

@congvc-bot-x99 congvc-bot-x99 Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Status

Draft. Layer 2 of 3 (H2) of a stacked delivery, at the aggregate-lifecycle test correction head f043ed6164b3a103dff7be0164c65a4b898c2893. Base is stack/01a14594-3b86-77d5-b2b1-45415e7e761a/l1 (PR #291). Merge PR #291 first. L3 (CHE-1830) is not published yet. Merge stays Cheese's gate. Agents never merge.

Visible side effect

A resolved bare-key chip and its loading box are now always 14 rem (224 px) wide, or the container width when that is narrower. The width is design B from design PR #294, merged at 17a8fae0d5dd25380eb39bd7d7bffc7e4e361ce0. The 18 rem content cap still applies to other chips. Product geometry at this width is NOT-VERIFIED.

Conditions

  • Draft until all of these hold:
    • The visible width choice has an approved design record or an explicit Cheese decision. Recorded: design PR design(bare-key-chip-stability): rev-1 coupled-cap directions for bare issue keys (CHE-1829) [squash] #294 (design B), merged at 17a8fae0d5dd25380eb39bd7d7bffc7e4e361ce0.
    • A different-lab independent reviewer signs this exact head. This head: NOT-RUN; one full-pair review is pending. At the earlier head cacbacf0861e702b85b4c611511902a21bbe9c5a: BLOCKED (x99-codex-luna-2), not PASS.
    • Current-head OCR has a disposition. This head: NOT-RUN; under CHE-1974 it runs inside the pending review. At cacbacf0861e702b85b4c611511902a21bbe9c5a: validated OER-1, no P0/P1 finding.
    • The required checks are green. Not established: CI run 39440669056 succeeded at cacbacf0861e702b85b4c611511902a21bbe9c5a and does not transfer, run 39931388545 at this head succeeded and is recorded in the last section, and classic branch protection is UNKNOWN.
    • X99 web and mobile-web visual evidence is observed.
  • Cross-lab review at this head: NOT-RUN. At cacbacf0861e702b85b4c611511902a21bbe9c5a, x99-codex-luna-2 (gpt-6-luna, OpenAI) signed BLOCKED for PR acceptance (CHE-1829 01a1595d-de35-76f3-bc4f-6e4a2811937c), with no P0/P1 source finding. Details are in the section for that head. Earlier heads: x99-codex-luna (OpenAI) signed BLOCKED at 8187ea0ccf245bfa8dad12b0efe2850896c66968, at d24795c10bd78f6b1d8aaa1c4c10e26f8c77ba74, at c823b6551de22fd41a767901319f4bb51a1682d8, at ca70561f69b05910dcc64846d99846ba2f19e97c, at ea6b12fb518819cd89a268b174e0afd3be0ee0af, at ecdb34439ce171eddf3520e45d47698f89ab9a87 and at 718ea19bc5fde04c54970399527e15c913feeaa1. At c823b6551de22fd41a767901319f4bb51a1682d8 its findings F1-A (a seed cleared a pending auxiliary-revision invalidation) and F1-B (an equal-revision lookup replaced an optimistic edit) blocked. At ca70561f69b05910dcc64846d99846ba2f19e97c F1-A was resolved, and F1-B still blocked for the case where detail is absent while a write is pending. That case was corrected at ea6b12fb518819cd89a268b174e0afd3be0ee0af, where Luna marked it resolved. At ea6b12fb518819cd89a268b174e0afd3be0ee0af the current-head OCR findings OCR-F1 (an older in-flight uuid detail response could overwrite a newer seed), OCR-F2 (a lookup paused offline counted as a settled miss) and OCR-F3 (the loading label could overflow its capped box) blocked. ecdb34439ce171eddf3520e45d47698f89ab9a87 corrected all three. At ecdb34439ce171eddf3520e45d47698f89ab9a87 Luna marked OCR-F2 resolved and found the OCR-F3 class update present, with its visual result NOT-RUN. OCR-F1 still blocked: the uuid detail query compared only the detail cache, so a response could land over a newer revision held in another projection, an unversioned response could replace versioned detail, an equal-revision response could overwrite an optimistic write, and a pending auxiliary revision was not reconciled. 718ea19bc5fde04c54970399527e15c913feeaa1 corrected that OCR-F1. At 718ea19bc5fde04c54970399527e15c913feeaa1 OCR-F1 still blocked: a rejected response returned cached detail as a fresh success, even when another projection held a newer revision, and a pending auxiliary revision or a cancelled fetch also lost its stale or refetch obligation. OCR-F5 also blocked: the detail query subscribed to the cache after the API await, so a fetch cancelled before a late response left one listener attached. Both are corrected at this head. OCR-F4 (inline harness styles) is non-blocking style and unchanged. O1 (server.fs.strict: false in the geometry harness) was resolved at c823b6551de22fd41a767901319f4bb51a1682d8. Its finding F2 (inline harness styles) is non-blocking style and unchanged.
  • OCR at this head: NOT-RUN; it runs inside the pending review (CHE-1974). At cacbacf0861e702b85b4c611511902a21bbe9c5a: validated OER-1 receipt 01a1595d-dc0c-7440-8712-627c4b2119a8, covering 13 selected paths and 10 manually reviewed exclusions, with no P0/P1 finding. Independent visual check in web and mobile web on X99: NOT-RUN. The author's browser measurements are provisional.
  • Author: x99-claude-sonnet (Anthropic). Stack maintainer and publisher: x99-claude-opus (Anthropic). The publisher is not an independent reviewer of this PR.
  • Commit 9eb6e5a363dd4ef10b3a591b7efc1f89c9588b7a (baseline alignment) has no test of its own. The browser geometry test added later measures vertical offset on the full render path.
  • The geometry test skips when no Chromium can be launched. The skip carries no reason: a non-blocking P2 at apps/ui-lab/src/bare-key-geometry.test.ts:104. Whether CI can launch Chromium is now observed for one run: in CI run 39440669056 the test reported 13 of 13 skipped.
  • Automatic PR CI may not run for a non-main base, and it did not run on this PR. One admitted workflow_dispatch run, 39440669056, collected CI at cacbacf0861e702b85b4c611511902a21bbe9c5a, and run 39931388545 covers the current head. The last two sections record them. PR fix(migrations): renumber agent_task_queue_context to clear duplicate prefix 627 (CHE-1824) #290 (duplicate migration prefix 627) is merged, and the resync section below covers it.

Change

  • issueIdentifierOptions (packages/core/issues/queries.ts) seeds issueKeys.detail(wsId, issue.id) with the resolved issue, so the chip makes one request and paints title and status first.
  • One admission rule, admitsFullIssue in queries.ts, decides whether a full-issue response may become the detail entry. Both writers of that entry use it: the uuid detail query and the bare-key lookup seed. It replaces the earlier per-path guards.
    • It compares the response with the freshest revision across every cached projection (detail, lists, flat windows, table rows, children, Gantt).
    • An unversioned response is admitted only with no versioned data and no pending write.
    • During a pending single or batch write for that issue, only a strictly newer response is admitted, because the optimistic patch does not advance the revision. Otherwise an equal or newer revision is admitted.
    • When the detail query rejects a response, it returns the cached detail entry. With no entry it fails that attempt (StaleIssueResponseError), so the query retries against the server. It never stores a response known to be behind.
    • After a detail fetch resolves, one timer (restoreDetailObligations) restores what TanStack's fresh mark erased. It reconciles any pending auxiliary revision through reconcileIssueFullSnapshotRevision. It flags detail as invalidated when another projection holds a newer revision, with refetchType: "none", so a server that stays behind cannot cause a refetch loop. The timer fires once whether the fetch succeeded, was rejected or was cancelled, so no cache listener stays attached. The bare-key lookup seed still calls reconcileIssueFullSnapshotRevision directly after a seed.
    • Limit: a fetch that is cancelled and whose API response never arrives has no continuation. The stale flag reverted by that cancellation is not restored until the next auxiliary event or fetch.
    • Known limit: when a response is rejected and no detail entry exists, a consumer sees a failed first attempt until the retry succeeds. With retry: 0 the consumer stays in the error state until the next refetch.
    • freshestCachedIssueRevision moved unchanged from ws-updaters.ts to cache-coordinator.ts. issueWriteMutationKey moved from mutations.ts to queries.ts with the same key value.
  • The geometry harness Vite server keeps server.fs.strict: true and allows only apps/ui-lab, packages and node_modules under the repo root.
  • useResolveIssueIdentifier returns undefined while loading, null once settled without an issue, and the issue otherwise. An enabled lookup that is still pending, including one paused offline, counts as loading. A disabled query, a wrong prefix, a malformed key, a 404 and exhausted retries still return null. It keeps the previous result only when the workspace, prefix and issue number match, so MUL-007 keeps MUL-7 on screen. Another number or another workspace drops it.
  • The autolink entry in rich-content.tsx renders the IssueChipLoading box while loading: a non-link span with aria-busy that shares the chip shell. Its label has min-w-0 truncate, so a long alias truncates inside the capped box.
  • The bare-key loading box and the resolved bare-key chip both take the cap width w-[min(18rem,100%)]. The narrow-container bound and title truncation stay. Only the autolink entry sets this width. Authored URL chips and UUID mention chips keep their content width.
  • An authored URL keeps its anchor while loading. A 404 or an exhausted retry still renders the plain key text.
  • apps/ui-lab/geometry/ and apps/ui-lab/src/bare-key-geometry.test.ts: a headless-Chromium test on the production render path. It compares the box, the text after it and the paragraph height before and after the lookup.

Evidence

Published head 377d6802ca0229e250b5773ade2d123635023a7b. Base 7cc5ef3f8ccad5181b760114e123da0ef1b6415a (L1 published head). The canonical branch moved from 718ea19bc5fde04c54970399527e15c913feeaa1 to 377d6802ca0229e250b5773ade2d123635023a7b by fast-forward, with no rewrite. Cycles 1 to 7 below name the commits before the resync. The resync section at the end maps them to the current commits. The publisher reran every check below on X99 in the canonical stack checkout, at the head that each check names.

Commit order (Test-First Gate), twelve cycles:

  1. 954ded3b1b4dfd9db4802b4bf576fd324903a87e tests only. ea8b49aaaacee9cf5c77d5dd4236b40fc1431928 fix: one request per chip.
  2. 472166293cc1006847f9c3e68b3e7bc923dc5619 tests only. 144b38a9d9b48e68401f9f56c55252a418ef99b8 fix and 9eb6e5a363dd4ef10b3a591b7efc1f89c9588b7a fix: loading box.
  3. 24c0fb4de4c3e26da9a15b644be03509ea8229b6 tests and harness only. a2e1958829ed81ce78a33f1d3d666586be2ecb7d fix: coupled width.
  4. 4ab01198c3e7bc41555d3a6a4936d5eefe121767 tests only. 8187ea0ccf245bfa8dad12b0efe2850896c66968 fix: numeric alias.
  5. 85f318c7f390deeed0a5dd6c411e1f5e9eeb5e12 tests only. d24795c10bd78f6b1d8aaa1c4c10e26f8c77ba74 fix: detail-cache revision guard (F1).
  6. 4684b487a9a0536a98c53d2b4255ff75e5d3b909 tests only. b29619ddb26f0f0b337876930da60b0e2a36cc95 fix: revision guard across every cached projection (F1).
  7. c48fadff0eccba7513cc46fcdda7448612407765 tests only. c823b6551de22fd41a767901319f4bb51a1682d8 fix: harness file-serving boundary (O1).
  8. ee94db24819cc6f69108e4a9cffafb53dcb140d3 tests only. ca70561f69b05910dcc64846d99846ba2f19e97c fix: keep invalidation and optimistic fields when a lookup seeds detail (F1-A/F1-B). These two commits replay author commits 74d65396ce173d267894dd0c9f4174382ceb232f and e06ed37e7f125a662fb75e6ad44f6692c6e690b3 onto the resynced head 57a42f808dfb700ed61975cbf52ae13daebd9839, with identical patch-ids.
  9. d2b388e4a02a822c3f063732f164aaca3ffc7163 tests only. ea6b12fb518819cd89a268b174e0afd3be0ee0af fix: skip the detail seed while a write for that issue is pending (absent-detail F1-B).
  10. 81e8c4b85b43f3c534d0506125a94a3b947e9d18 tests only. ecdb34439ce171eddf3520e45d47698f89ab9a87 fix: order in-flight detail responses, keep offline lookups unresolved, truncate the loading label (OCR-F1/OCR-F2/OCR-F3).
  11. df084791b9eab1bb6ea6734cad57210fb5af2741 tests only. 718ea19bc5fde04c54970399527e15c913feeaa1 fix: order every full-issue response against all cached projections (OCR-F1).
  12. d78f99a22ef6ca175eb36cd7202b6b83719da047 tests only. 377d6802ca0229e250b5773ade2d123635023a7b fix: restore stale and refetch obligations after a uuid detail fetch without a cache listener (OCR-F1/OCR-F5).

Cycles 1 and 2 were rerun at the earlier heads. Cycle 1: 2 failed, 5 passed, then 7 passed. Cycle 2: 6 failed, 2 passed, then 8 passed.

Cycle 3, from apps/ui-lab: pnpm exec vitest run src/bare-key-geometry.test.ts. Red at 24c0fb4de4c3e26da9a15b644be03509ea8229b6: 12 failed, 1 passed. All 12 failures are assertion failures:

× keeps its size and the text after it when the lookup resolves: desktop chat short title
  ... (12 cases: desktop and mobile, chat and description, short, medium and long title)
AssertionError: expected 138 to be close to 77, received difference is 61, but expected 0.5
AssertionError: expected 288 to be close to 77, received difference is 211, but expected 0.5
Test Files  1 failed (1)
     Tests  12 failed | 1 passed (13)

Green at a2e1958829ed81ce78a33f1d3d666586be2ecb7d: 13 passed. The test and the harness are unchanged from 24c0fb4de4c3e26da9a15b644be03509ea8229b6.

Cycle 4, from packages/views: pnpm exec vitest run issues/hooks/use-resolve-issue-identifier.test.tsx. Red at 4ab01198c3e7bc41555d3a6a4936d5eefe121767: 1 failed, 5 passed (AssertionError: expected undefined to be 'MUL-7'). Green at 8187ea0ccf245bfa8dad12b0efe2850896c66968, with the test file unchanged.

Cycle 5, from packages/core: pnpm exec vitest run issues/queries.test.ts. Red at 85f318c7f390deeed0a5dd6c411e1f5e9eeb5e12: 1 failed, 24 passed. The failure is an assertion failure:

FAIL  issues/queries.test.ts > issueIdentifierOptions > seeding the issue-detail cache > does not let a delayed lookup overwrite a newer authoritative revision
AssertionError: expected { id: 'issue-7', …(23) } to match object { title: 'newer', revision: 3 }
-   "revision": 3,
-   "title": "newer",
+   "revision": 2,
+   "title": "older lookup",
Tests  1 failed | 24 passed (25)

Green at d24795c10bd78f6b1d8aaa1c4c10e26f8c77ba74: 25 passed. The test file is unchanged from 85f318c7f390deeed0a5dd6c411e1f5e9eeb5e12.

Cycle 6, from packages/core: pnpm exec vitest run issues/queries.test.ts. Red at 4684b487a9a0536a98c53d2b4255ff75e5d3b909: 5 failed, 26 passed. All 5 are assertion failures:

FAIL  ... > does not seed a stale detail entry over newer list-only data
FAIL  ... > does not seed a stale detail entry over newer flat-only data
FAIL  ... > does not seed a stale detail entry over newer table-only data
FAIL  ... > keeps populated detail data when the lookup response carries no revision
FAIL  ... > does not seed detail from a response with no revision over ordered list data
AssertionError: expected { id: 'issue-7', …(23) } to be undefined
AssertionError: expected { id: 'issue-7', …(23) } to match object { title: 'authoritative', revision: 3 }
Tests  5 failed | 26 passed (31)

Green at b29619ddb26f0f0b337876930da60b0e2a36cc95: 31 passed. The test file is unchanged from 4684b487a9a0536a98c53d2b4255ff75e5d3b909.

Cycle 7, from apps/ui-lab: pnpm exec vitest run src/geometry-fs-boundary.test.ts. The test starts the harness Vite server on 127.0.0.1, with no browser and no database. Red at c48fadff0eccba7513cc46fcdda7448612407765: 1 failed, 3 passed (AssertionError: expected 200 to be 403, a file outside the workspace was served). Green at c823b6551de22fd41a767901319f4bb51a1682d8: 4 passed, with the test file unchanged. This proves the server refuses an out-of-workspace file. It does not prove anything about the whole repo tree under the three allowed paths.

Cycle 8, from packages/core: pnpm exec vitest run issues/queries.test.ts issues/mutations.test.tsx. Red at ee94db24819cc6f69108e4a9cffafb53dcb140d3: 4 failed, 81 passed. All 4 are assertion failures:

FAIL  issues/mutations.test.tsx > identifier lookup landing during an optimistic issue update > keeps the optimistic fields when the lookup returns the same revision
AssertionError: expected { id: 'issue-1', …(23) } to match object { title: 'optimistic', revision: 5 }
FAIL  issues/queries.test.ts > ... > with a pending auxiliary revision > keeps populated detail owing a refetch after a newer revision lookup
FAIL  issues/queries.test.ts > ... > with a pending auxiliary revision > keeps populated detail owing a refetch after an equal revision lookup
FAIL  issues/queries.test.ts > ... > with a pending auxiliary revision > makes a detail entry seeded from another projection owe a refetch
AssertionError: expected false to be true // Object.is equality
Tests  4 failed | 81 passed (85)

Green at ca70561f69b05910dcc64846d99846ba2f19e97c, with both test files unchanged from ee94db24819cc6f69108e4a9cffafb53dcb140d3: the two files plus issues/revision-realtime.test.ts and issues/ws-updaters.test.ts pass 140 of 140.

Cycle 9, from packages/core: pnpm exec vitest run issues/mutations.test.tsx. Red at d2b388e4a02a822c3f063732f164aaca3ffc7163: 1 failed, 54 passed. The failure is an assertion failure:

FAIL  issues/mutations.test.tsx > identifier lookup landing during an optimistic update with no detail entry > does not show pre-write fields in detail while the write is pending
AssertionError: expected { id: 'issue-1', …(23) } to be undefined
Tests  1 failed | 54 passed (55)

Green at ea6b12fb518819cd89a268b174e0afd3be0ee0af, with the test file unchanged from d2b388e4a02a822c3f063732f164aaca3ffc7163: issues/mutations.test.tsx, issues/queries.test.ts, issues/revision-realtime.test.ts and issues/ws-updaters.test.ts pass 144 of 144.

Cycle 10. Red at 81e8c4b85b43f3c534d0506125a94a3b947e9d18, all assertion failures:

  • From packages/core: pnpm exec vitest run issues/queries.test.ts: 1 failed, 35 passed.
  • From packages/views: pnpm exec vitest run issues/hooks/use-resolve-issue-identifier.test.tsx rich-content/identifier-loading-box.test.tsx: 2 failed, 10 passed.
FAIL  issues/queries.test.ts > ... > does not let an older in-flight uuid detail response overwrite the seed
AssertionError: expected { id: 'issue-7', …(23) } to match object { title: 'newer seed', revision: 3 }
FAIL  issues/hooks/use-resolve-issue-identifier.test.tsx > useResolveIssueIdentifier > while the browser is offline > keeps a valid key unresolved, then resolves it after reconnect
AssertionError: expected null to be undefined
FAIL  rich-content/identifier-loading-box.test.tsx > RichContent bare-key loading box > lets a long zero-padded alias shrink and truncate inside the capped box
AssertionError: expected "font-medium text-muted-foreground shrink-0" to contain "min-w-0"

Green at ecdb34439ce171eddf3520e45d47698f89ab9a87, with the three test files unchanged from 81e8c4b85b43f3c534d0506125a94a3b947e9d18: issues/queries.test.ts, issues/mutations.test.tsx, issues/revision-realtime.test.ts and issues/ws-updaters.test.ts pass 146 of 146. The five L1 and L2 test files in packages/views, including both red files, pass 44 of 44. The loading-label test runs in jsdom and checks classes, not painted geometry. It is not visual evidence.

Cycle 11, from packages/core: pnpm exec vitest run issues/queries.test.ts issues/mutations.test.tsx. Red at df084791b9eab1bb6ea6734cad57210fb5af2741: 11 failed, 95 passed. All 11 are assertion failures, for example:

AssertionError: expected { id: 'issue-7', …(23) } to be undefined
AssertionError: expected { id: 'issue-7', …(23) } to match object { title: 'ordered', revision: 3 }
AssertionError: expected { id: 'issue-1', …(23) } to match object { title: 'optimistic' }
AssertionError: expected 'older response' not to be 'older response' // Object.is equality
AssertionError: expected false to be true // Object.is equality
Tests  11 failed | 95 passed (106)

Green at 718ea19bc5fde04c54970399527e15c913feeaa1, with both test files unchanged from df084791b9eab1bb6ea6734cad57210fb5af2741: issues/queries.test.ts, issues/mutations.test.tsx, issues/revision-realtime.test.ts and issues/ws-updaters.test.ts pass 161 of 161.

Cycle 12, from packages/core: pnpm exec vitest run issues/queries.test.ts. The tests-only commit adds new tests and adds one await flushTimers() line to an earlier cycle 11 test, because the stale flag is now restored one timer tick after the fetch. Red at d78f99a22ef6ca175eb36cd7202b6b83719da047: 4 failed, 50 passed. All 4 are assertion failures:

FAIL  ... > uuid detail fetch lifecycle > keeps behind detail invalidated when a response is rejected beside a newer projection
FAIL  ... > uuid detail fetch lifecycle > keeps detail invalidated when a rejected response meets a pending auxiliary revision
FAIL  ... > uuid detail fetch lifecycle > keeps the refetch obligation when the fetch is cancelled after an auxiliary event
AssertionError: expected false to be true // Object.is equality
FAIL  ... > uuid detail fetch lifecycle > releases its cache listener when cancelled before a late response
AssertionError: expected 1 to be +0 // Object.is equality
Tests  4 failed | 50 passed (54)

Green at 377d6802ca0229e250b5773ade2d123635023a7b, with the test file unchanged from d78f99a22ef6ca175eb36cd7202b6b83719da047: issues/queries.test.ts passes 54 of 54. With issues/mutations.test.tsx, issues/revision-realtime.test.ts and issues/ws-updaters.test.ts it passes 170 of 170.

Other checks at 377d6802ca0229e250b5773ade2d123635023a7b:

  • pnpm exec vitest run in packages/core: 179 files, 2377 tests passed.
  • The five L1 and L2 test files in packages/views: 44 passed.
  • apps/ui-lab vitest without src/bare-key-geometry.test.ts: 9 files, 50 tests passed. The publisher did not launch a browser.
  • tsc --noEmit in packages/core, packages/views and apps/ui-lab: no error.
  • eslint on packages/core/issues: no error.
  • git diff --check from 718ea19bc5fde04c54970399527e15c913feeaa1: clean.
  • Not rerun at this head by the publisher: the geometry browser test and the wider packages/views run.

Other checks at 718ea19bc5fde04c54970399527e15c913feeaa1:

  • pnpm exec vitest run in packages/core: 179 files, 2368 tests passed.
  • The five L1 and L2 test files in packages/views: 44 passed.
  • apps/ui-lab vitest without src/bare-key-geometry.test.ts: 9 files, 50 tests passed. The publisher did not launch a browser.
  • tsc --noEmit in packages/core, packages/views and apps/ui-lab: no error.
  • eslint on packages/core/issues: no error.
  • git diff --check from ecdb34439ce171eddf3520e45d47698f89ab9a87: clean.
  • Not rerun at this head by the publisher: the geometry browser test and the wider packages/views run.

Other checks at ecdb34439ce171eddf3520e45d47698f89ab9a87:

  • pnpm exec vitest run in packages/core: 179 files, 2353 tests passed.
  • apps/ui-lab vitest without src/bare-key-geometry.test.ts: 9 files, 50 tests passed. The publisher did not launch a browser.
  • tsc --noEmit in packages/core, packages/views and apps/ui-lab: no error.
  • eslint on packages/core/issues and the four changed packages/views files: no error.
  • git diff --check from ea6b12fb518819cd89a268b174e0afd3be0ee0af: clean.
  • Not rerun at this head by the publisher: the geometry browser test and the wider packages/views run.

Other checks at ea6b12fb518819cd89a268b174e0afd3be0ee0af:

  • pnpm exec vitest run in packages/core: 179 files, 2351 tests passed.
  • The five L1 and L2 test files in packages/views: 41 passed.
  • apps/ui-lab vitest without src/bare-key-geometry.test.ts: 9 files, 50 tests passed. The publisher did not launch a browser.
  • tsc --noEmit in packages/core, packages/views and apps/ui-lab: no error.
  • eslint on packages/core/issues: no error.
  • git diff --check from ca70561f69b05910dcc64846d99846ba2f19e97c: clean.
  • Not rerun at this head by the publisher: the geometry browser test and the wider packages/views run.

Other checks at ca70561f69b05910dcc64846d99846ba2f19e97c:

  • pnpm exec vitest run in packages/core: 179 files, 2347 tests passed.
  • The five L1 and L2 test files in packages/views: 41 passed.
  • apps/ui-lab vitest without src/bare-key-geometry.test.ts: 9 files, 50 tests passed. The publisher did not launch a browser.
  • tsc --noEmit in packages/core, packages/views and apps/ui-lab: no error.
  • eslint on packages/core/issues: no error.
  • git diff --check from 57a42f808dfb700ed61975cbf52ae13daebd9839: clean.
  • Not rerun at this head by the publisher: the geometry browser test and the wider packages/views run.

Other checks at c823b6551de22fd41a767901319f4bb51a1682d8:

  • pnpm exec vitest run in packages/core: 179 files, 2341 tests passed.
  • The five L1 and L2 test files in packages/views: 41 passed.
  • apps/ui-lab vitest without src/bare-key-geometry.test.ts: 9 files, 50 tests passed. The publisher did not launch a browser.
  • tsc --noEmit in packages/core, packages/views and apps/ui-lab: no error.
  • eslint on packages/core/issues, apps/ui-lab/geometry and the new apps/ui-lab test: no error.
  • git diff --check from d24795c10bd78f6b1d8aaa1c4c10e26f8c77ba74: clean.
  • Not rerun at this head by the publisher: the geometry browser test and the wider packages/views run. The author ran the whole apps/ui-lab suite once at this head, with headless Chromium on the loopback harness (63/63). That run is outside the author's assignment and is not visual acceptance.

Other checks at 8187ea0ccf245bfa8dad12b0efe2850896c66968:

  • Geometry test: 13 passed.
  • The five L1 and L2 test files in packages/views: 41 passed.
  • pnpm exec vitest run issues rich-content editor common in packages/views: 3565 of 3565 passed in one run at host load average 4.46 to 9.01. Earlier runs at other heads hit a known 5000 ms timeout in table-view-editing.test.tsx under higher load.
  • apps/ui-lab vitest: 59 passed.
  • tsc --noEmit in packages/views and apps/ui-lab: no error.
  • eslint on the changed packages/views and apps/ui-lab files: no error.
  • GitHub PR checks: not claimed.

Author measurements are provisional: X99 headless Chromium, production render path, 12 cases. Before the width fix, the pending box was 77 x 22 px. The resolved chip was 138 x 22 px (short) or 288 x 22 px (medium, long). The text after the box moved 61 px or 211 px, and on mobile medium and long titles added a line (+22.7 px). After the width fix, box and chip are both 288 x 22 px in all 12 cases. Width, vertical offset, paragraph height and the position of the following text change by 0 px. Each case made 1 getIssue call.

Resync onto the new L1 7cc5ef3f8ccad5181b760114e123da0ef1b6415a

L1 was replayed onto main 2b135399996d8072c5a99deb88ef55edb62f49b4, which contains PR #290. The maintainer replayed only this layer's 15 commits after the old L1 boundary with git rebase --onto, and pushed with --force-with-lease --force-if-includes. Base 7cc5ef3f8ccad5181b760114e123da0ef1b6415a, head 57a42f808dfb700ed61975cbf52ae13daebd9839 (old head c823b6551de22fd41a767901319f4bb51a1682d8). The rebase rewrote commit identity only. Patch-ids are identical for every commit, and this layer's diff is byte-identical to the diff before the resync. Earlier review, OCR, CI and visual results apply to the old head only, and none of them transfers to this head.

Old New
954ded3b1b4dfd9db4802b4bf576fd324903a87e 953e88b5eeda22c11b63e64e73ac93f7b939124d
ea8b49aaaacee9cf5c77d5dd4236b40fc1431928 b8d492cbdb5c81238fee009ef887231c53e598bf
472166293cc1006847f9c3e68b3e7bc923dc5619 d1ee5a17e12117a85138c0b9b193d2830df6995f
144b38a9d9b48e68401f9f56c55252a418ef99b8 7fab4d1cee7c59559613e8ab3448b2627aaabc8c
9eb6e5a363dd4ef10b3a591b7efc1f89c9588b7a b3ffd37395e7ede25a3fdbeaf2d190a0c1ae76b7
24c0fb4de4c3e26da9a15b644be03509ea8229b6 a87abdb888ecdbe6ecf39617f0f542e790e869bd
a2e1958829ed81ce78a33f1d3d666586be2ecb7d be417aa9fbe937a44c2c69fc5ac68bfdab38e305
4ab01198c3e7bc41555d3a6a4936d5eefe121767 499efbfaca797912910594c573cf0bdab470ad52
8187ea0ccf245bfa8dad12b0efe2850896c66968 da02ed227b868b0f01e62e546e7e53d8fef6ead5
85f318c7f390deeed0a5dd6c411e1f5e9eeb5e12 656486bd558aa866fee3c7cc7c811b4c7364a430
d24795c10bd78f6b1d8aaa1c4c10e26f8c77ba74 a268a8332c878ccab37e28e99c1d515538e26d94
4684b487a9a0536a98c53d2b4255ff75e5d3b909 b7d7c78e0efcfc80f2087b086176594600cae45d
b29619ddb26f0f0b337876930da60b0e2a36cc95 fd325cec780b761422c8c10495ed7af459e2b2ef
c48fadff0eccba7513cc46fcdda7448612407765 7cc3d3219c64b2e4fbc30c1d323991e05d524c11
c823b6551de22fd41a767901319f4bb51a1682d8 57a42f808dfb700ed61975cbf52ae13daebd9839

Rerun at the new commits, on X99. All seven test-first cycles are red at the new tests-only commit (assertion failures) and green at the new fix commit, with the test files unchanged:

  • 2 failed, 5 passed, then 7 passed.
  • 6 failed, 2 passed, then 8 passed.
  • 12 failed, 1 passed, then 13 passed.
  • 1 failed, 5 passed, then 6 passed.
  • 1 failed, 24 passed, then 25 passed.
  • 5 failed, 26 passed, then 31 passed.
  • 1 failed, 3 passed, then 4 passed.

At the head: packages/core issues 430 passed, apps/ui-lab 63 passed, and tsc --noEmit passed in packages/views, packages/core and apps/ui-lab. packages/views issues, rich-content, editor and common: 3564 of 3565 passed. The one failure is the known 5000 ms timeout in table-view-editing.test.tsx at host load average about 18 to 19. That file passed 10 of 10 in isolation, and this layer does not change it. TestMigrationNumericPrefixesAreUnique passes at this head.

OCR-F1 correction at 65d7ec3865d23b6924f7d319ec3758be4ee0cf37

The maintainer fast-forwarded stack/01a14594-3b86-77d5-b2b1-45415e7e761a/l2 from 377d6802ca0229e250b5773ade2d123635023a7b to 65d7ec3865d23b6924f7d319ec3758be4ee0cf37, which equals the author source author/CHE-1829/g18-ocr-f1. There was no rewrite. The base stays L1 7cc5ef3f8ccad5181b760114e123da0ef1b6415a. The layer now has 27 commits and 21 changed paths.

  • 756a04f6cf81716e8bc769fc89d7d78717477e9c tests only: packages/core/issues/queries-detail-obligations.test.ts, a new path.
  • 65d7ec3865d23b6924f7d319ec3758be4ee0cf37 fix: packages/core/issues/queries.ts only. The test blob cceb7f18b99e159d74f9960ad1719615ede93a55 is unchanged between the two commits.
  • Change: the detail cache restores its refetch obligation when a fetch ends without an API response (cancellation), and it keeps unversioned detail owing a refetch beside a versioned list or a pending auxiliary revision.
  • Limit: the tests observe the restoration after a timer tick, not synchronously.

Maintainer rerun on X99, packages/core, pnpm exec vitest run issues/queries-detail-obligations.test.ts. Red at 756a04f6cf81716e8bc769fc89d7d78717477e9c: 3 failed, 2 passed. All 3 failures are assertion failures (expected false to be true). Green at 65d7ec3865d23b6924f7d319ec3758be4ee0cf37: 5 passed, and 5 passed in each of 3 repeat runs.

Other checks at 65d7ec3865d23b6924f7d319ec3758be4ee0cf37:

  • packages/core: issues 471 passed, and the whole package 2382 passed.
  • packages/views issues and rich-content: 1556 passed.
  • tsc --noEmit passed in packages/core and packages/views. eslint passed on the two changed files.
  • Browser, geometry, database, fixture and unfiltered UI-lab runs: NOT-RUN, by scope.

Independent cross-lab review and current-head OCR of this pair: NOT-RUN. No earlier verdict, OCR, CI or visual result transfers to this head. main has moved to a48be61c3221b6e161508ae4ee06b415a55e55ef since the last resync. This publication did not resync L1 or main.

G19-F1 correction at c147387a3ab4377fdbed48ce1de36e79ead392c9

The maintainer fast-forwarded stack/01a14594-3b86-77d5-b2b1-45415e7e761a/l2 from 65d7ec3865d23b6924f7d319ec3758be4ee0cf37 to c147387a3ab4377fdbed48ce1de36e79ead392c9, which equals the author source author/CHE-1829/g19-f1. There was no rewrite. The base stays L1 7cc5ef3f8ccad5181b760114e123da0ef1b6415a. The layer now has 29 commits and 22 changed paths.

  • 44e07531aea919a6082a0954568892ce00a49fff tests only: packages/core/issues/queries-identifier-obligations.test.ts, a new path.
  • c147387a3ab4377fdbed48ce1de36e79ead392c9 fix: packages/core/issues/queries.ts only. The test blob 4a544cdcc6d691ef80d520227ba7a8271bc7466e is unchanged between the two commits.
  • Change: an identifier lookup that seeds unversioned detail beside a recorded auxiliary revision now leaves the detail owing a refetch. The lookup seed and the fetch-end restoration share one helper.
  • Limit: the tests assert after a timer tick. They prove asynchronous restoration only, not synchronous invalidation.

Maintainer rerun on X99, packages/core, pnpm exec vitest run issues/queries-identifier-obligations.test.ts. Red at 44e07531aea919a6082a0954568892ce00a49fff: 2 failed, 4 passed, in 3 of 3 runs. Both failures are assertion failures. Green at c147387a3ab4377fdbed48ce1de36e79ead392c9: 6 passed. Together with queries-detail-obligations.test.ts and queries.test.ts, 65 tests passed in each of 5 runs.

Other checks at c147387a3ab4377fdbed48ce1de36e79ead392c9:

  • packages/core: issues 477 passed, and the whole package 2388 passed.
  • packages/views issues and rich-content: 1556 passed.
  • tsc --noEmit passed in packages/core and packages/views. eslint passed on both changed files. git diff --check is clean.
  • Browser, geometry, database, fixture and unfiltered UI-lab runs: NOT-RUN, by scope.

Independent cross-lab review and current-head OCR of this pair: NOT-RUN. No earlier verdict, OCR, CI or visual result transfers to this head. main is at 6b89a1764afb6418af873336c720bbc36bcb447e. This publication did not resync L1 or main.

Design B width at cacbacf0861e702b85b4c611511902a21bbe9c5a

The maintainer fast-forwarded stack/01a14594-3b86-77d5-b2b1-45415e7e761a/l2 from c147387a3ab4377fdbed48ce1de36e79ead392c9 to cacbacf0861e702b85b4c611511902a21bbe9c5a, which equals the author source author/CHE-1829/b-14rem. There was no rewrite. The base stays L1 7cc5ef3f8ccad5181b760114e123da0ef1b6415a. The layer now has 31 commits and 23 changed paths.

  • f10e6e841fe8c070039425d08e4bb9bacdd02439 tests only: packages/views/issues/components/issue-chip-stable-width.test.tsx, a new path.
  • cacbacf0861e702b85b4c611511902a21bbe9c5a fix: issue-chip-shell.ts, issue-chip-loading.tsx and issue-chip.tsx in packages/views/issues/components/. The test blob 404d31550fc27d2bce8f8f249d688f23548c8f0b is unchanged between the two commits. The pair has 108 insertions and 8 deletions.
  • Change: ISSUE_CHIP_STABLE_WIDTH_CLASS is now w-[min(14rem,100%)]. Authority: design PR design(bare-key-chip-stability): rev-1 coupled-cap directions for bare issue keys (CHE-1829) [squash] #294, merged at 17a8fae0d5dd25380eb39bd7d7bffc7e4e361ce0, and Sol's bounded admission 01a158f0-319b-776a-a8e8-02ff3a7cf00b, under D1=B and CHE-584. The 18 rem content cap and the content sizing of authored URL and UUID chips are unchanged.
  • Limit: the tests are jsdom class assertions. They are not geometry, baseline, mobile-wrap or product evidence.

Maintainer rerun on X99, packages/views, pnpm exec vitest run issues/components/issue-chip-stable-width.test.tsx. Red at f10e6e841fe8c070039425d08e4bb9bacdd02439: 1 failed, 3 passed, with AssertionError: expected 18 to be 14. Green at cacbacf0861e702b85b4c611511902a21bbe9c5a: 4 passed.

Other checks at cacbacf0861e702b85b4c611511902a21bbe9c5a:

  • packages/views issues and rich-content: 137 files and 1560 tests passed. Vitest exited 1 because of 2 unhandled ReferenceError: window is not defined errors attributed to issues/components/data-table-resize.test.tsx, from a @tanstack/virtual-core timer after teardown. The pair does not change that file. Run alone, that file passed 12 of 12 with exit 0 at this head and at c147387a3ab4377fdbed48ce1de36e79ead392c9.
  • tsc --noEmit passed in packages/views.
  • Browser, geometry, database, fixture and unfiltered UI-lab runs: NOT-RUN, by scope.

Independent cross-lab review of this pair: x99-codex-luna-2 (gpt-6-luna, OpenAI) signed BLOCKED for PR acceptance (CHE-1829 01a1595d-de35-76f3-bc4f-6e4a2811937c). Current-head OER-1 is validated. Both are summarised below. No earlier verdict, OCR, CI or visual result transfers to this head. main is at 17a8fae0d5dd25380eb39bd7d7bffc7e4e361ce0. This publication did not resync L1 or main.

Review, aggregate and CI evidence at cacbacf0861e702b85b4c611511902a21bbe9c5a

Review:

  • x99-codex-luna-2 (gpt-6-luna, OpenAI) is independent of the author x99-claude-sonnet and the maintainer x99-claude-opus (Anthropic). Signed report: CHE-1829 01a1595d-de35-76f3-bc4f-6e4a2811937c. Verdict attachment: 01a1595d-db1a-774c-823e-7b371b11235a. The PR-acceptance verdict is BLOCKED, not PASS.
  • The full 23-path source review found no P0/P1 source finding. The validated OER-1 receipt 01a1595d-dc0c-7440-8712-627c4b2119a8 covers 13 selected paths and 10 manually reviewed exclusions. The missing skip reason at apps/ui-lab/src/bare-key-geometry.test.ts:104 is a non-blocking P2.

Aggregate packages/views run (pnpm exec vitest run issues rich-content):

  • The original maintainer run above stays a FAIL: exit 1, 1560 tests passed, 2 unhandled ReferenceError: window is not defined errors.
  • The maintainer's bounded diagnosis (CHE-1829 01a15979-20a3-7190-a996-33a8b004cbcb) ran the same command once at this head: exit 0, 137 files, 1560 of 1560 tests passed, 0 unhandled errors. The ReferenceError was NOT-REPRODUCED in that run. The timer and teardown account in the diagnosis is a code-supported hypothesis, not a demonstrated cause or a proven flake.
  • The same diagnosis ran the command once at the base: exit 1, with a separate 5000 ms timeout at issues/components/table-view-editing.test.tsx:244. Its cause is UNKNOWN, and it is not a head failure.
  • Luna-2's signed evidence-only addendum (CHE-1829 01a15995-d411-70bb-9409-43b17aac0746) accepts that one exact-head run only. It keeps the historical FAIL and its unresolved cause as an aggregate acceptance requirement. The addendum predates the CI run below and is not a CI verdict.

Exact-head CI:

  • One admitted workflow_dispatch of ci.yml, run 39440669056, on stack/01a14594-3b86-77d5-b2b1-45415e7e761a/l2 at cacbacf0861e702b85b4c611511902a21bbe9c5a, attempt 1: completed/success. Receipt: CHE-1829 01a159cd-83bf-76d8-b99f-ca1ca8c8a6f8.
  • Check suite 106877528737 holds 19 check runs from app 15368 at this SHA. 16 jobs executed and succeeded, including backend-tests, both frontend-views-test shards, frontend and backend. daemon-artifact, image-budget and frontend-quality were skipped as inapplicable. Skipped is not PASS.
  • Both views shards ran fresh (turbo cache miss, executing) and passed 3234 and 3096 tests, with 0 unhandled errors. They are a wider suite, not the identical aggregate command, and do not demonstrate the historical failure cause.
  • bare-key-geometry.test.ts reported 13 of 13 skipped. The harness attempts chromium.launch() before each skip check, so the skips show that no browser was available, not that no launch was attempted. geometry-fs-boundary.test.ts passed 4. This is not product geometry evidence.
  • Attribution is by the run head_sha and the check suite. The run lists this PR in pull_requests, but the PR rollup still shows only the Changelog check, and gh pr checks --required reports no required checks. Effective rules for this stacked base are empty, classic branch protection is UNKNOWN after HTTP 403, and main's ruleset does not enforce on this base. This run does not prove every required branch-protection check.

Still open: the signed PR-acceptance verdict is BLOCKED, the historical aggregate FAIL and its cause are unresolved, supported L1 executor policy is UNKNOWN, product geometry and committed-utility output are NOT-VERIFIED, and the three fresh acceptance legs are NOT-RUN.

Aggregate-lifecycle test correction at f043ed6164b3a103dff7be0164c65a4b898c2893

The maintainer fast-forwarded stack/01a14594-3b86-77d5-b2b1-45415e7e761a/l2 from cacbacf0861e702b85b4c611511902a21bbe9c5a to f043ed6164b3a103dff7be0164c65a4b898c2893, which equals the author source author/CHE-1829/aggregate-lifecycle-20261023. There was no rewrite. Admission: Sol, CHE-1827 01a16808-662d-7a06-9c47-cdb26dc146b0. The base stays L1 7cc5ef3f8ccad5181b760114e123da0ef1b6415a. The layer now has 32 commits and 24 changed paths. data-table-resize.test.tsx was unchanged from L1 before, so it is a new path in this layer's diff.

  • f043ed6164b3a103dff7be0164c65a4b898c2893 (author x99-claude-opus, Anthropic) changes only packages/views/issues/components/data-table-resize.test.tsx. Its blob goes from e9d3502e3d76d5b8de9b4efa4eb3dd02b33d5978 to af22989899ec100c8e2ce6a6fde2231821ab52e1. No product code changed.
  • Regression: the two sideways-scroll tests move, with unchanged bodies, into a group that fakes setTimeout and clearTimeout. After each test, the group unmounts the table and asserts that no timer is still pending.
  • Correction: a scrollSideways helper fires the row virtualizer's pending scroll-reset timer under act() while the table is still mounted.
  • There is no tests-only commit. The author observed red in the working tree before the correction: 2 failed and 10 passed in 3 of 3 runs, AssertionError: expected 1 to be +0. Green at this head: 12 passed in 3 of 3 runs, with the regression hook byte-identical. Evidence: CHE-1829 01a167ef-7456-7831-b399-20b58981e2bd.
  • Cause: a probe showed that one sideways scroll creates one 150 ms timer in @tanstack/virtual-core 3.17.0 utils.js:65, and that the timer survives unmount until 150 ms. The probe does not show that this timer caused the historical ReferenceError: window is not defined. The historical aggregate FAIL and its cause stay unresolved.

Maintainer exact-pair checks on X99 at f043ed6164b3a103dff7be0164c65a4b898c2893, run once each:

  • git diff --check from L1 to this head: exit 0.
  • From packages/views, pnpm exec vitest run issues/components/data-table-resize.test.tsx: exit 0, 12 passed.
  • From packages/views, pnpm exec vitest run issues rich-content: exit 0, 137 files and 1560 tests passed, 0 unhandled errors.
  • From packages/views, pnpm exec tsc --noEmit: exit 0. pnpm exec eslint issues/components/data-table-resize.test.tsx: exit 0.
  • Browser, product, API, database, fixture, allocator and unfiltered UI-lab runs: NOT-RUN, by scope.

Exact-head CI: one admitted workflow_dispatch of ci.yml, run 39931388545, on stack/01a14594-3b86-77d5-b2b1-45415e7e761a/l2 at f043ed6164b3a103dff7be0164c65a4b898c2893, attempt 1, check suite 108229240580. It ran from 16:22 to 16:35 ICT on 23 October and completed with conclusion success. All 19 jobs carry this SHA. 16 jobs executed and succeeded, including backend-tests, both frontend-views-test shards, script-checks on X99 runner cheese-x99-repo-4, frontend and backend. daemon-artifact, image-budget and frontend-quality were skipped as inapplicable, and skipped is not PASS. All 19 check runs in the suite come from app 15368. Both views shards ran fresh (turbo cache miss, executing) and passed 3234 and 3096 tests, with 0 unhandled errors; shard 1 includes data-table-resize.test.tsx (12 tests). These shards are a wider suite, not the identical aggregate command. bare-key-geometry.test.ts reported 13 of 13 skipped, and geometry-fs-boundary.test.ts passed 4; this is not product geometry evidence. The PR rollup shows only Changelog line and close-target, and gh pr checks --required reports no required checks, so attribution is by run head_sha and check suite. Classic branch protection stays UNKNOWN. The runtime blocked a foreground CI wait, so continuation 01a16814-fd18-75c8-b1d3-ff74d8c90326 collected this result. CI run 39440669056 belongs to cacbacf0861e702b85b4c611511902a21bbe9c5a and does not transfer.

Review at this head: NOT-RUN. One different-lab full-pair review, with OCR inside it (CHE-1974), is pending. Luna-2's BLOCKED verdict and addendum at cacbacf0861e702b85b4c611511902a21bbe9c5a stay as history and do not transfer. Still open: supported executor and product admission is DECLINED on UNKNOWN policy, product geometry and committed-utility output are NOT-VERIFIED, and the three fresh acceptance legs are NOT-RUN. main is at 93ac2140b9ce58564b71b8b48793dcda811d60da. This publication did not resync L1 or main.

Changelog: Issue chips keep a steady size while they load and show their title and status from the first paint.

Closes CHE-1829
Refs CHE-1827

congvc-bot[bot] added 15 commits October 17, 2026 07:53
@congvc-bot-x99
congvc-bot-x99 Bot force-pushed the stack/01a14594-3b86-77d5-b2b1-45415e7e761a/l1 branch from a458aa8 to 7cc5ef3 Compare October 17, 2026 01:06
@congvc-bot-x99
congvc-bot-x99 Bot force-pushed the stack/01a14594-3b86-77d5-b2b1-45415e7e761a/l2 branch from c823b65 to 57a42f8 Compare October 17, 2026 01:06
congvc-bot[bot] added 12 commits October 17, 2026 08:13
…esolved, truncate the loading label (CHE-1829)
…esponse and to unversioned detail (CHE-1829)
…ponse or beside unversioned detail (CHE-1829)
congvc-bot[bot] added 5 commits October 18, 2026 09:58
…eeds beside an auxiliary revision (CHE-1829)
…ize table unmounts (CHE-1829)

The two sideways-scroll tests left the row virtualizer's 150 ms
scroll-reset debounce pending after unmount. A regression now owns
setTimeout for those tests and fails when a timer outlives the
unmounted table; the scroll helper settles the timer while mounted.

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants