Money register UI recovery emits each_key_duplicate browser exceptions #1498

Closed
opened 2026-10-09 04:42:49 +00:00 by kayg · 10 comments
Owner

The real production UI probe for #688 reaches its keyboard paging, expired-cursor recovery, revision recovery, inline-draft retention, stable old link, touch target and context-menu assertions, then fails its zero-browser-exceptions assertion. Two runs on the unchanged Money web build produced 5 and 2 uncaught browser exceptions. The diagnostic run retains the Svelte error identifier: each_key_duplicate for both exceptions.

Reproduce in job/money-688 with a real local server and web production build:
TMPDIR=$PWD/target/tmp CALTERNAL_SERVER_BIN=$CARGO_TARGET_DIR/release/calternal-server CALTERNAL_E2E_ASSET_OVERRIDE=1 MONEY688_PROBE_ONLY=1 MONEY688_ROWS=200 MONEY688_OUTPUT=$PWD/artifacts/money688h/adversarial-ui-200.json bun bench/money-register-688.mjs

Evidence: artifacts/money688h/adversarial-ui.log. Its assertion is 2 !== 0, and each exception has framework_code=each_key_duplicate. The backend API probe passes separately: 9 rejected cursor/filter inputs, 4 rejected mark inputs, 16 concurrent reads, 8 concurrent marks, original mark restoration, repeated Tag-heavy writes and oversized-row paging. No web/UI source changed in money688h. The register renders keyed rows from resident pages with ${row.id}:${row.account_id}. Check resident-page overlap during cursor/revision recovery and reverse navigation; that source location is a lead, not a proved root cause. Do not weaken the zero-exception assertion.

The real production UI probe for #688 reaches its keyboard paging, expired-cursor recovery, revision recovery, inline-draft retention, stable old link, touch target and context-menu assertions, then fails its zero-browser-exceptions assertion. Two runs on the unchanged Money web build produced 5 and 2 uncaught browser exceptions. The diagnostic run retains the Svelte error identifier: `each_key_duplicate` for both exceptions. Reproduce in job/money-688 with a real local server and web production build: `TMPDIR=$PWD/target/tmp CALTERNAL_SERVER_BIN=$CARGO_TARGET_DIR/release/calternal-server CALTERNAL_E2E_ASSET_OVERRIDE=1 MONEY688_PROBE_ONLY=1 MONEY688_ROWS=200 MONEY688_OUTPUT=$PWD/artifacts/money688h/adversarial-ui-200.json bun bench/money-register-688.mjs` Evidence: artifacts/money688h/adversarial-ui.log. Its assertion is `2 !== 0`, and each exception has `framework_code=each_key_duplicate`. The backend API probe passes separately: 9 rejected cursor/filter inputs, 4 rejected mark inputs, 16 concurrent reads, 8 concurrent marks, original mark restoration, repeated Tag-heavy writes and oversized-row paging. No web/UI source changed in money688h. The register renders keyed rows from resident pages with `${row.id}:${row.account_id}`. Check resident-page overlap during cursor/revision recovery and reverse navigation; that source location is a lead, not a proved root cause. Do not weaken the zero-exception assertion.
Author
Owner

Started independent review on branch job/money2rev, at 6c237a329fb86518090e629a0640cd254b31b75e; requested base is origin/dev 4ebeba0b8e13b06223bc2b24ee7a398a0933bda0. I read CLAUDE.md, CONTEXT.md, and Money decisions in docs/DESIGN.md §48. I will keep product code read-only and record evidence in artifacts/money2rev/findings.md.

Started independent review on branch `job/money2rev`, at `6c237a329fb86518090e629a0640cd254b31b75e`; requested base is `origin/dev` `4ebeba0b8e13b06223bc2b24ee7a398a0933bda0`. I read `CLAUDE.md`, `CONTEXT.md`, and Money decisions in `docs/DESIGN.md` §48. I will keep product code read-only and record evidence in `artifacts/money2rev/findings.md`.
Author
Owner

Comparison finding: money-revisions-984.mjs passes its reversed-response assertion, then times out at line 100 waiting for Assigned for Food after Add category; money-fidelity-1130.mjs captures its import form, then times out at line 47 waiting for Account type for Card account (no import error text). Both failures reproduce on 6c237a329 and baseline 4ebeba0b8 with the same 4ebeba0b8 release server, Node 22.23.3 and the respective production web build. These are inherited test failures, not branch regressions. Details are in artifacts/money2rev/findings.md.

Comparison finding: `money-revisions-984.mjs` passes its reversed-response assertion, then times out at line 100 waiting for `Assigned for Food` after Add category; `money-fidelity-1130.mjs` captures its import form, then times out at line 47 waiting for `Account type for Card account` (no import error text). Both failures reproduce on `6c237a329` and baseline `4ebeba0b8` with the same `4ebeba0b8` release server, Node 22.23.3 and the respective production web build. These are inherited test failures, not branch regressions. Details are in `artifacts/money2rev/findings.md`.
Author
Owner

Finding for #1498: after loading 12 real one-row pages (each row has 98 Tags), moving into the middle of the register, and applying an API edit, delete, and add, restarting the release server caused the next Older transactions read to return HTTP 400. The open register kept its pre-restart signed cursor and did not reload around its visible stable row, so the User could not continue through older history. The server creates a new cursor signing key on process start (crates/plugins/money/src/store.rs), which invalidates cursors held by the open page. This is a BLOCK under the requested restart/complete-history check. I am adding only a focused failing regression test; product code remains read-only for this review.

Finding for #1498: after loading 12 real one-row pages (each row has 98 Tags), moving into the middle of the register, and applying an API edit, delete, and add, restarting the release server caused the next `Older transactions` read to return HTTP 400. The open register kept its pre-restart signed cursor and did not reload around its visible stable row, so the User could not continue through older history. The server creates a new cursor signing key on process start (`crates/plugins/money/src/store.rs`), which invalidates cursors held by the open page. This is a BLOCK under the requested restart/complete-history check. I am adding only a focused failing regression test; product code remains read-only for this review.
Author
Owner

Correction to my previous finding: I treated the first post-restart cursor response as the final outcome. The server returns 400 for a cursor signed by its previous in-memory key, and the register catches 400/409 and reloads around the visible stable row before replaying the page action. The initial 400 is an expected recovery trigger, not by itself a blocking failure. I am verifying that the replayed register then traverses the complete API history with matching values; I will classify it from that result.

Correction to my previous finding: I treated the first post-restart cursor response as the final outcome. The server returns 400 for a cursor signed by its previous in-memory key, and the register catches 400/409 and reloads around the visible stable row before replaying the page action. The initial 400 is an expected recovery trigger, not by itself a blocking failure. I am verifying that the replayed register then traverses the complete API history with matching values; I will classify it from that result.
Author
Owner

#1498 review finding after origin/dev merge: the requested bun run test -- --maxWorkers=2 command stops in design-rules.test.mjs before Vitest. It reports a new violation at apps/web/src/lib/components/money/MoneyImport.svelte:540: .source-choice:hover :global(.card) { background: var(--accent-soft); transform: translateY(-1px); }. The baseline used a border-color hover at this selector; commit 6c237a329 changed it to a feature-local background on the shared Card. This violates the owner rule against local restyling of shared primitives. Product code is read-only in this review, so this remains a BLOCK item for the owner to resolve.

The branch production build register sweep and imported Split/Transfer action probe passed with CALTERNAL_E2E_ASSET_OVERRIDE=1: exact API amounts/balances and account totals; complete scroll and restart coverage; no row gaps/overlaps at tested scales; and no Edit/Delete API writes from Split or Transfer rows.

#1498 review finding after `origin/dev` merge: the requested `bun run test -- --maxWorkers=2` command stops in `design-rules.test.mjs` before Vitest. It reports a new violation at `apps/web/src/lib/components/money/MoneyImport.svelte:540`: `.source-choice:hover :global(.card) { background: var(--accent-soft); transform: translateY(-1px); }`. The baseline used a border-color hover at this selector; commit `6c237a329` changed it to a feature-local background on the shared Card. This violates the owner rule against local restyling of shared primitives. Product code is read-only in this review, so this remains a BLOCK item for the owner to resolve. The branch production build register sweep and imported Split/Transfer action probe passed with `CALTERNAL_E2E_ASSET_OVERRIDE=1`: exact API amounts/balances and account totals; complete scroll and restart coverage; no row gaps/overlaps at tested scales; and no Edit/Delete API writes from Split or Transfer rows.
Author
Owner

BLOCK — Money register independent review (#1498)

Head: e87ee5b0224faeea1ab8dc7011f29511be4ec287 (reviewed 6c237a329fb86518090e629a0640cd254b31b75e, then merged origin/dev once; the merge only added performance evidence files).

Number correctness

The five requested E2E scripts were run on the branch and on 4ebeba0b8e13b06223bc2b24ee7a398a0933bda0, with each production web build routed to the shared release server and Chromium emulating macOS:

  • money.mjs: passed on both; #1556 was not reproduced.
  • money-create-visible-1554.mjs: passed on both.
  • money-revisions-984.mjs: pre-existing #1559 failure on both. The reversed-assign check passed, then Add category timed out waiting for Assigned for Food.
  • money-fidelity-1130.mjs: pre-existing #1558 failure on both. The first import form rendered; both timed out waiting for the Card account type control, with IMPORT_ERRORS [].
  • money-wizard-1140.mjs --formats-only: passed on both, including restart Undo and replacement restoration.

The branch production register probe passed with real API data: 13 rows in the 98-Tag Account had one row per API page; the normal Account had 102 rows across two API pages. Rendered Outflow, Inflow, running Balance, and Cleared/Uncleared/Working balance values matched the API. Scroll and paging coverage passed before and after concurrent edit (200), delete (204), add (201), revision recovery, and server restart. Row geometry passed at UI scales 1, 1.07, 1.25, 200% CSS zoom, and after viewport resize. One documented projection-pending 503 recovered through the UI Retry.

Imported real Split and Transfer rows showed shared Edit/Delete menu items with aria-disabled="true". Enter and pointer activation sent no PUT or DELETE request.

BLOCK item

bun run test -- --maxWorkers=2 fails before Vitest. Its design-rules check flags apps/web/src/lib/components/money/MoneyImport.svelte:540: .source-choice:hover :global(.card){background: var(--accent-soft); transform: translateY(-1px);}. The baseline used a border-color hover; commit 6c237a329 changed it to a feature-local background on the shared Card. This violates the owner rule against local restyling of shared primitives. This job is read-only for product code, so I did not change it. Vitest did not run because the command stopped at this failure.

Gate output (verbatim summaries)

cd apps/web && bun run check passed. Terminal summaries:

NOTE Bun skipped 1 lock package(s) not installed in this production environment
PASS production dependency licences: 759 locked package releases across apps/web, apps/docs and packages
perf-lint: PASS; 0 violations; 22128 scoped exceptions
User browser caches use userStorage; only documented device/public-link exceptions remain.
Glass alpha, blur and backdrop-filter roles use packages/ui/src/tokens.css.
Text sizes and UI shape values use shared role tokens.
Focus policy passes: 48 focus ring rules, 132 DOM focus calls and 2 data-input writers audited.
UI transitions and animation options use shared motion tokens or documented exceptions.
svelte-check found 0 errors and 0 warnings

cd apps/web && bun run test -- --maxWorkers=2:

............................................................................................................................................
----------------------------------------------------------------------
Ran 140 tests in 0.038s

OK
bun test v1.4.2 (744846f84)

scripts/perf-source.test.mjs:
(pass) a fixed enum has a proved finite render bound [4.69ms]
(pass) an array spread does not prove an API list has one item [0.92ms]
(pass) a literal zero-based slice proves its rendered row cap [0.76ms]
(pass) a top-level and a describe-nested test are enabled [2.03ms]
(pass) a declaration in a never-called helper is disabled [0.49ms]
(pass) conditional and skipped declarations are disabled [0.90ms]
(pass) a file outside the runner include patterns is not collected [0.86ms]
(pass) a local function named it is not the runner [0.40ms]

  8 pass
  0 fail
  16 expect() calls
Ran 8 tests across 1 file. [304.00ms]
New design-rule violations:
- apps/web/src/lib/components/money/MoneyImport.svelte:540: new hand-rolled shared primitive override: .source-choice:hover :global(.card){background: var(--accent-soft); transform: translateY(-1px);}
error: script "test" exited with code 1

Files added by the required merge: docs/perf/runs/2026-10-10T213004Z-4ebeba0b/raw/{content-type-851.json,content-type-851.uptime.txt,notes-filter-606.uptime.txt,routes.uptime.txt,theme-picker.uptime.txt}. No product code or tests were committed. Review details and ignored production screenshots are under artifacts/money2rev/findings.md and artifacts/money/.

# BLOCK — Money register independent review (#1498) Head: `e87ee5b0224faeea1ab8dc7011f29511be4ec287` (reviewed `6c237a329fb86518090e629a0640cd254b31b75e`, then merged `origin/dev` once; the merge only added performance evidence files). ## Number correctness The five requested E2E scripts were run on the branch and on `4ebeba0b8e13b06223bc2b24ee7a398a0933bda0`, with each production web build routed to the shared release server and Chromium emulating macOS: - `money.mjs`: passed on both; #1556 was not reproduced. - `money-create-visible-1554.mjs`: passed on both. - `money-revisions-984.mjs`: pre-existing #1559 failure on both. The reversed-assign check passed, then Add category timed out waiting for `Assigned for Food`. - `money-fidelity-1130.mjs`: pre-existing #1558 failure on both. The first import form rendered; both timed out waiting for the Card account type control, with `IMPORT_ERRORS []`. - `money-wizard-1140.mjs --formats-only`: passed on both, including restart Undo and replacement restoration. The branch production register probe passed with real API data: 13 rows in the 98-Tag Account had one row per API page; the normal Account had 102 rows across two API pages. Rendered Outflow, Inflow, running Balance, and Cleared/Uncleared/Working balance values matched the API. Scroll and paging coverage passed before and after concurrent edit (200), delete (204), add (201), revision recovery, and server restart. Row geometry passed at UI scales 1, 1.07, 1.25, 200% CSS zoom, and after viewport resize. One documented projection-pending 503 recovered through the UI Retry. Imported real Split and Transfer rows showed shared Edit/Delete menu items with `aria-disabled="true"`. Enter and pointer activation sent no PUT or DELETE request. ## BLOCK item `bun run test -- --maxWorkers=2` fails before Vitest. Its design-rules check flags `apps/web/src/lib/components/money/MoneyImport.svelte:540`: `.source-choice:hover :global(.card){background: var(--accent-soft); transform: translateY(-1px);}`. The baseline used a border-color hover; commit `6c237a329` changed it to a feature-local background on the shared Card. This violates the owner rule against local restyling of shared primitives. This job is read-only for product code, so I did not change it. Vitest did not run because the command stopped at this failure. ## Gate output (verbatim summaries) `cd apps/web && bun run check` passed. Terminal summaries: ```text NOTE Bun skipped 1 lock package(s) not installed in this production environment PASS production dependency licences: 759 locked package releases across apps/web, apps/docs and packages perf-lint: PASS; 0 violations; 22128 scoped exceptions User browser caches use userStorage; only documented device/public-link exceptions remain. Glass alpha, blur and backdrop-filter roles use packages/ui/src/tokens.css. Text sizes and UI shape values use shared role tokens. Focus policy passes: 48 focus ring rules, 132 DOM focus calls and 2 data-input writers audited. UI transitions and animation options use shared motion tokens or documented exceptions. svelte-check found 0 errors and 0 warnings ``` `cd apps/web && bun run test -- --maxWorkers=2`: ```text ............................................................................................................................................ ---------------------------------------------------------------------- Ran 140 tests in 0.038s OK bun test v1.4.2 (744846f84) scripts/perf-source.test.mjs: (pass) a fixed enum has a proved finite render bound [4.69ms] (pass) an array spread does not prove an API list has one item [0.92ms] (pass) a literal zero-based slice proves its rendered row cap [0.76ms] (pass) a top-level and a describe-nested test are enabled [2.03ms] (pass) a declaration in a never-called helper is disabled [0.49ms] (pass) conditional and skipped declarations are disabled [0.90ms] (pass) a file outside the runner include patterns is not collected [0.86ms] (pass) a local function named it is not the runner [0.40ms] 8 pass 0 fail 16 expect() calls Ran 8 tests across 1 file. [304.00ms] New design-rule violations: - apps/web/src/lib/components/money/MoneyImport.svelte:540: new hand-rolled shared primitive override: .source-choice:hover :global(.card){background: var(--accent-soft); transform: translateY(-1px);} error: script "test" exited with code 1 ``` Files added by the required merge: `docs/perf/runs/2026-10-10T213004Z-4ebeba0b/raw/{content-type-851.json,content-type-851.uptime.txt,notes-filter-606.uptime.txt,routes.uptime.txt,theme-picker.uptime.txt}`. No product code or tests were committed. Review details and ignored production screenshots are under `artifacts/money2rev/findings.md` and `artifacts/money/`.
Author
Owner

Additional #1498 BLOCK finding: a centered transaction leaves the virtual register window after a 1440×1000 to 390×844 resize on the branch production build. The focused real-API regression script apps/web/e2e/money-register-resize-1498.mjs fails on the branch: before resize, the anchor was rendered at 321 px in a 34 px row with scrollTop=1886; after resize, that same stable ID was absent from .tx. The same script and API data passed on baseline 4ebeba0b8: the anchor stayed visible, moving from 279 px to 249 px with the same scrollTop=4856.

This matches the branch-only responsive row-height change: the branch uses the measured compact desktop/phone row height, while the baseline row height remained 88 px in this fixture. The review job is read-only for product code, so I am committing only the focused failing regression test. The test is in apps/web/e2e/money-register-resize-1498.mjs.

Additional #1498 BLOCK finding: a centered transaction leaves the virtual register window after a 1440×1000 to 390×844 resize on the branch production build. The focused real-API regression script `apps/web/e2e/money-register-resize-1498.mjs` fails on the branch: before resize, the anchor was rendered at 321 px in a 34 px row with `scrollTop=1886`; after resize, that same stable ID was absent from `.tx`. The same script and API data passed on baseline `4ebeba0b8`: the anchor stayed visible, moving from 279 px to 249 px with the same `scrollTop=4856`. This matches the branch-only responsive row-height change: the branch uses the measured compact desktop/phone row height, while the baseline row height remained 88 px in this fixture. The review job is read-only for product code, so I am committing only the focused failing regression test. The test is in `apps/web/e2e/money-register-resize-1498.mjs`.
Author
Owner

BLOCK — Money register independent review (#1498)

Final head: 4791c80d0fce2bc5e722f7f05b29ca6dbfb51130. I merged origin/dev once at e87ee5b0224faeea1ab8dc7011f29511be4ec287 before the final gates; that merge added only performance evidence. The only job commit is 4791c80d0, a failing resize regression test. No product code changed.

Findings

  1. Register resize regression (BLOCK). With real API data, a centered transaction stayed visible at 1440×1000 but its stable ID disappeared from the branch virtual window after resizing to 390×844. The same focused E2E test passed against baseline 4ebeba0b8, where the anchor remained visible (top offset changed from 279 px to 249 px). Branch evidence: before resize the anchor was rendered at 321 px in a 34 px row; after resize its ID was absent. The regression test is money-register-resize-1498.mjs.
  2. Design-rule gate failure (BLOCK). bun run test -- --maxWorkers=2 stops before Vitest because MoneyImport.svelte:540 adds a feature-local background to the shared Card. Commit 6c237a329 changed the baseline border-color hover to this background. This conflicts with the owner rule against local restyling of shared primitives. Product code was read-only in this review.

Other number and action checks passed on the branch production build with real API data and Chromium macOS emulation. The 98-Tag Account returned 13 one-row pages; the normal Account returned 102 rows across two pages. Displayed Outflow, Inflow, running Balance, and Cleared/Uncleared/Working figures matched the API. Duplicate IDs, blank gaps, and overlaps were not observed during scroll and recovery. Concurrent edit (200), delete (204), add (201), revision recovery, and server-restart recovery passed. UI scales 1/1.07/1.25, CSS zoom: 2, and the 720×500 viewport equivalent to 200% zoom on a 1440×1000 display passed geometry checks. Imported Split and Transfer rows exposed disabled Edit/Delete items; keyboard and pointer activation sent no write requests.

Requested comparison scripts on branch and baseline: money.mjs, money-create-visible-1554.mjs, and money-wizard-1140.mjs --formats-only passed. money-revisions-984.mjs failed at the Add category label on both builds (#1559); money-fidelity-1130.mjs failed at the Card account type control on both (#1558). #1556 was not reproduced; money.mjs passed on both. E2E .mjs scripts ran with Node 22.23.3 because Bun could not load locked sharp in this host.

Gate output (verbatim summaries)

cd apps/web && bun run check passed:

NOTE Bun skipped 1 lock package(s) not installed in this production environment
PASS production dependency licences: 759 locked package releases across apps/web, apps/docs and packages
perf-lint: PASS; 0 violations; 22128 scoped exceptions
User browser caches use userStorage; only documented device/public-link exceptions remain.
Glass alpha, blur and backdrop-filter roles use packages/ui/src/tokens.css.
Text sizes and UI shape values use shared role tokens.
Focus policy passes: 48 focus ring rules, 132 DOM focus calls and 2 data-input writers audited.
UI transitions and animation options use shared motion tokens or documented exceptions.
svelte-check found 0 errors and 0 warnings

cd apps/web && bun run test -- --maxWorkers=2 failed before Vitest:

............................................................................................................................................
----------------------------------------------------------------------
Ran 140 tests in 0.038s

OK
bun test v1.4.2 (744846f84)

scripts/perf-source.test.mjs:
(pass) a fixed enum has a proved finite render bound [4.69ms]
(pass) an array spread does not prove an API list has one item [0.92ms]
(pass) a literal zero-based slice proves its rendered row cap [0.76ms]
(pass) a top-level and a describe-nested test are enabled [2.03ms]
(pass) a declaration in a never-called helper is disabled [0.49ms]
(pass) conditional and skipped declarations are disabled [0.90ms]
(pass) a file outside the runner include patterns is not collected [0.86ms]
(pass) a local function named it is enabled [0.40ms]

  8 pass
  0 fail
  16 expect() calls
Ran 8 tests across 1 file. [304.00ms]
New design-rule violations:
- apps/web/src/lib/components/money/MoneyImport.svelte:540: new hand-rolled shared primitive override: .source-choice:hover :global(.card){background: var(--accent-soft); transform: translateY(-1px);}
error: script "test" exited with code 1

Review details are in ignored artifacts/money2rev/findings.md. The money.mjs screenshot captures are in ignored artifacts/money/ at 390, 820 and 1440 px in light and dark. Native browser chrome zoom was not driven; the 200% checks used CSS zoom and its half-size CSS viewport equivalent. No design decisions outside docs/DESIGN.md were needed.

# BLOCK — Money register independent review (#1498) Final head: `4791c80d0fce2bc5e722f7f05b29ca6dbfb51130`. I merged `origin/dev` once at `e87ee5b0224faeea1ab8dc7011f29511be4ec287` before the final gates; that merge added only performance evidence. The only job commit is `4791c80d0`, a failing resize regression test. No product code changed. ## Findings 1. **Register resize regression (BLOCK).** With real API data, a centered transaction stayed visible at 1440×1000 but its stable ID disappeared from the branch virtual window after resizing to 390×844. The same focused E2E test passed against baseline `4ebeba0b8`, where the anchor remained visible (top offset changed from 279 px to 249 px). Branch evidence: before resize the anchor was rendered at 321 px in a 34 px row; after resize its ID was absent. The regression test is [money-register-resize-1498.mjs](apps/web/e2e/money-register-resize-1498.mjs). 2. **Design-rule gate failure (BLOCK).** `bun run test -- --maxWorkers=2` stops before Vitest because `MoneyImport.svelte:540` adds a feature-local background to the shared Card. Commit `6c237a329` changed the baseline border-color hover to this background. This conflicts with the owner rule against local restyling of shared primitives. Product code was read-only in this review. Other number and action checks passed on the branch production build with real API data and Chromium macOS emulation. The 98-Tag Account returned 13 one-row pages; the normal Account returned 102 rows across two pages. Displayed Outflow, Inflow, running Balance, and Cleared/Uncleared/Working figures matched the API. Duplicate IDs, blank gaps, and overlaps were not observed during scroll and recovery. Concurrent edit (200), delete (204), add (201), revision recovery, and server-restart recovery passed. UI scales 1/1.07/1.25, CSS `zoom: 2`, and the 720×500 viewport equivalent to 200% zoom on a 1440×1000 display passed geometry checks. Imported Split and Transfer rows exposed disabled Edit/Delete items; keyboard and pointer activation sent no write requests. Requested comparison scripts on branch and baseline: `money.mjs`, `money-create-visible-1554.mjs`, and `money-wizard-1140.mjs --formats-only` passed. `money-revisions-984.mjs` failed at the Add category label on both builds (#1559); `money-fidelity-1130.mjs` failed at the Card account type control on both (#1558). #1556 was not reproduced; `money.mjs` passed on both. E2E `.mjs` scripts ran with Node 22.23.3 because Bun could not load locked `sharp` in this host. ## Gate output (verbatim summaries) `cd apps/web && bun run check` passed: ```text NOTE Bun skipped 1 lock package(s) not installed in this production environment PASS production dependency licences: 759 locked package releases across apps/web, apps/docs and packages perf-lint: PASS; 0 violations; 22128 scoped exceptions User browser caches use userStorage; only documented device/public-link exceptions remain. Glass alpha, blur and backdrop-filter roles use packages/ui/src/tokens.css. Text sizes and UI shape values use shared role tokens. Focus policy passes: 48 focus ring rules, 132 DOM focus calls and 2 data-input writers audited. UI transitions and animation options use shared motion tokens or documented exceptions. svelte-check found 0 errors and 0 warnings ``` `cd apps/web && bun run test -- --maxWorkers=2` failed before Vitest: ```text ............................................................................................................................................ ---------------------------------------------------------------------- Ran 140 tests in 0.038s OK bun test v1.4.2 (744846f84) scripts/perf-source.test.mjs: (pass) a fixed enum has a proved finite render bound [4.69ms] (pass) an array spread does not prove an API list has one item [0.92ms] (pass) a literal zero-based slice proves its rendered row cap [0.76ms] (pass) a top-level and a describe-nested test are enabled [2.03ms] (pass) a declaration in a never-called helper is disabled [0.49ms] (pass) conditional and skipped declarations are disabled [0.90ms] (pass) a file outside the runner include patterns is not collected [0.86ms] (pass) a local function named it is enabled [0.40ms] 8 pass 0 fail 16 expect() calls Ran 8 tests across 1 file. [304.00ms] New design-rule violations: - apps/web/src/lib/components/money/MoneyImport.svelte:540: new hand-rolled shared primitive override: .source-choice:hover :global(.card){background: var(--accent-soft); transform: translateY(-1px);} error: script "test" exited with code 1 ``` Review details are in ignored `artifacts/money2rev/findings.md`. The `money.mjs` screenshot captures are in ignored `artifacts/money/` at 390, 820 and 1440 px in light and dark. Native browser chrome zoom was not driven; the 200% checks used CSS zoom and its half-size CSS viewport equivalent. No design decisions outside `docs/DESIGN.md` were needed.
Author
Owner

Correction to the posted final report: the verbatim bun run test transcript says (pass) a local function named it is not the runner [0.40ms]; the earlier report text incorrectly said “is enabled.” The test result and BLOCK finding are unchanged. Screenshot upload through the Forgejo issue asset API returned HTTP 403, so captures remain in ignored local artifacts/money/ and are not attached to the issue.

Correction to the posted final report: the verbatim `bun run test` transcript says `(pass) a local function named it is not the runner [0.40ms]`; the earlier report text incorrectly said “is enabled.” The test result and BLOCK finding are unchanged. Screenshot upload through the Forgejo issue asset API returned HTTP 403, so captures remain in ignored local `artifacts/money/` and are not attached to the issue.
Author
Owner

Deployed to calternal.cloud in merge round 40 (build c0f8da461, 01:38 IST 2026-10-12). Health state ok, /readyz 200, served-page check passed. Pre-deploy backup taken.

Deployed to calternal.cloud in merge round 40 (build c0f8da461, 01:38 IST 2026-10-12). Health state ok, /readyz 200, served-page check passed. Pre-deploy backup taken.
kayg closed this issue 2026-10-11 20:08:32 +00:00
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal-v0#1498
No description provided.