1this derivation will be built:2 /nix/store/jsd9kbwfydhgwzzn7j6a24ajkq2514js-horae-browser-checks.drv3building '/nix/store/jsd9kbwfydhgwzzn7j6a24ajkq2514js-horae-browser-checks.drv' on 'grpc://farm.numtide.com:50051?client-cert=/run/secrets/vars/per-machine/bld1/nix-farm-ci/crt&client-key=/run/secrets/vars/per-machine/bld1/nix-farm-ci/key&connect-timeout=23&system=aarch64-linux'4building '/nix/store/jsd9kbwfydhgwzzn7j6a24ajkq2514js-horae-browser-checks.drv' on farm.numtide.com:500515horae-browser-checks> elastic-arm-1d05d380: building jsd9kbwfydhgwzzn7j6a24ajkq2514js-horae-browser-checks.drv6horae-browser-checks> initdb: warning: enabling "trust" authentication for local connections7horae-browser-checks> initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.8horae-browser-checks> waiting for server to start.... done9horae-browser-checks> server started10horae-browser-checks> 2026-10-07T16:34:44.606677Z INFO horae: Running migrations...11horae-browser-checks> 2026-10-07T16:34:44.778724Z INFO horae: Migrations complete.12horae-browser-checks> 2026-10-07T16:34:44.790933Z INFO horae::seed: Seeding demo data…13horae-browser-checks> 2026-10-07T16:34:44.810384Z INFO horae::seed: Seed complete.14horae-browser-checks> 2026-10-07T16:34:44.814272Z INFO horae::seed: time_entries: 10 rows15horae-browser-checks> 2026-10-07T16:34:44.814878Z INFO horae::seed: clients: 2 rows16horae-browser-checks> PASS: archived own timer labels survive without granting catalog or global-rate access17horae-browser-checks> PASS: catalog/rate grants never enable unlinked or archived tasks for a new timer; valid start/stop persists18horae-browser-checks> PASS: rail popovers accept clicks and release the resize handle after closing19horae-browser-checks> PASS: scoped project list/detail expose workflow labels without directory access, private notes or rates20horae-browser-checks> PASS: edit and managed-project revocation remove current UI authority without legacy Administrator fallback21horae-browser-checks> PASS: inactive-account and changed-policy responses clear retained detail; retry recovers only the original binding22horae-browser-checks> PASS: keyboard manager removal preserves archived membership and withheld money/notes at desktop and narrow widths23horae-browser-checks> PASS: financial read grants display disabled values and ordinary saves preserve stored fields24horae-browser-checks> PASS: explicit zero, cost reset and lost-acknowledgement replay preserve exact original intent25horae-browser-checks> PASS: current-authority revocation discards old editor state; explicit reload restores a fresh authorized form26horae-browser-checks> PASS: an explicit hours-only budget edit preserves inactive hidden money and recorded history27horae-browser-checks> PASS: header actions, supported metrics and labelled native budget progress28horae-browser-checks> PASS: design heading, compact row typography and inline project type29horae-browser-checks> PASS: filtered empty state resets search, scope and client30horae-browser-checks> PASS: narrow/short layouts, keyboard row actions and export formats31horae-browser-checks> PASS: loading spend is unavailable until the read completes32horae-browser-checks> PASS: failed spend is unavailable; retry restores real amounts33horae-browser-checks> PASS: configured monthly consumption replaces lifetime spend only after loading34horae-browser-checks> PASS: keyboard-accessible scope breakdown exposes overruns without layout overflow35horae-browser-checks> PASS: failed configured budget never falls back to lifetime figures36horae-browser-checks> PASS: empty-state guidance and action visibility for admin37horae-browser-checks> PASS: empty-state guidance and action visibility for manager38horae-browser-checks> PASS: empty-state guidance and action visibility for member39horae-browser-checks> PASS: shared Menu, Combobox, empty-state and navigation-icon defaults are unchanged40horae-browser-checks> PASS: /clients header at 320px41horae-browser-checks> PASS: /clients header at 390px42horae-browser-checks> PASS: /clients header at 768px43horae-browser-checks> PASS: /clients header at 1280px44horae-browser-checks> PASS: /clients header at 1440px45horae-browser-checks> PASS: /projects header at 320px46horae-browser-checks> PASS: /projects header at 390px47horae-browser-checks> PASS: /projects header at 768px48horae-browser-checks> PASS: /projects header at 1280px49horae-browser-checks> PASS: /projects header at 1440px50horae-browser-checks> PASS: /invoices header at 320px51horae-browser-checks> PASS: /invoices header at 390px52horae-browser-checks> PASS: /invoices header at 768px53horae-browser-checks> PASS: /invoices header at 1280px54horae-browser-checks> PASS: /invoices header at 1440px55horae-browser-checks> PASS: /reports header at 320px56horae-browser-checks> PASS: /reports header at 390px57horae-browser-checks> PASS: /reports header at 768px58horae-browser-checks> PASS: /reports header at 1280px59horae-browser-checks> PASS: /reports header at 1440px60horae-browser-checks> PASS: /admin/users header at 320px61horae-browser-checks> PASS: /admin/users header at 390px62horae-browser-checks> PASS: /admin/users header at 768px63horae-browser-checks> PASS: /admin/users header at 1280px64horae-browser-checks> PASS: /admin/users header at 1440px65horae-browser-checks> PASS: /approvals header at 320px66horae-browser-checks> PASS: /approvals header at 390px67horae-browser-checks> PASS: /approvals header at 768px68horae-browser-checks> PASS: /approvals header at 1280px69horae-browser-checks> PASS: /approvals header at 1440px70horae-browser-checks> PASS: /settings header at 320px71horae-browser-checks> PASS: /settings header at 390px72horae-browser-checks> PASS: /settings header at 768px73horae-browser-checks> PASS: /settings header at 1280px74horae-browser-checks> PASS: /settings header at 1440px75horae-browser-checks> PASS: /admin/importers header at 320px76horae-browser-checks> PASS: /admin/importers header at 390px77horae-browser-checks> PASS: /admin/importers header at 768px78horae-browser-checks> PASS: /admin/importers header at 1280px79horae-browser-checks> PASS: /admin/importers header at 1440px80horae-browser-checks> PASS: /timesheet/week/2026-10-05 header at 320px81horae-browser-checks> PASS: /timesheet/week/2026-10-05 header at 390px82horae-browser-checks> PASS: /timesheet/week/2026-10-05 header at 768px83horae-browser-checks> PASS: /timesheet/week/2026-10-05 header at 1280px84horae-browser-checks> PASS: /timesheet/week/2026-10-05 header at 1440px85horae-browser-checks> PASS: /timesheet/day/2026-10-05 header at 320px86horae-browser-checks> PASS: /timesheet/day/2026-10-05 header at 390px87horae-browser-checks> PASS: /timesheet/day/2026-10-05 header at 768px88horae-browser-checks> PASS: /timesheet/day/2026-10-05 header at 1280px89horae-browser-checks> PASS: /timesheet/day/2026-10-05 header at 1440px90horae-browser-checks> PASS: /timesheet/calendar/2026-10-05 header at 320px91horae-browser-checks> PASS: /timesheet/calendar/2026-10-05 header at 390px92horae-browser-checks> PASS: /timesheet/calendar/2026-10-05 header at 768px93horae-browser-checks> PASS: /timesheet/calendar/2026-10-05 header at 1280px94horae-browser-checks> PASS: /timesheet/calendar/2026-10-05 header at 1440px95horae-browser-checks> PASS: project names and badges stay within aligned columns; scrolling to last-row actions opens editing96horae-browser-checks> PASS: small-screen timesheet pager, date picker and view controls remain usable97horae-browser-checks> PASS: admin subnavigation and its content remain reachable on mobile98horae-browser-checks> PASS: day strip scrolls to Sunday and long entry labels do not cover actions99horae-browser-checks> CHECK: late popover initialization restores missing focus without overriding deliberate focus100horae-browser-checks> PASS: late popover initialization restores missing focus without overriding deliberate focus101horae-browser-checks> CHECK: content reflow preserves an open menu while deliberate scrolling still dismisses it102horae-browser-checks> PASS: content reflow preserves an open menu while deliberate scrolling still dismisses it103horae-browser-checks> CHECK: first and last project-row actions are initially visible and clickable104horae-browser-checks> PASS: first and last project-row actions are initially visible and clickable105horae-browser-checks> CHECK: menu keyboard, disabled items, outside click and repeated opening106horae-browser-checks> PASS: menu keyboard, disabled items, outside click and repeated opening107horae-browser-checks> CHECK: scroll and resize dismiss without leaving stale menus or focus108horae-browser-checks> PASS: scroll and resize dismiss without leaving stale menus or focus109horae-browser-checks> CHECK: short-screen menu scrolls internally and supports reverse Tab and Space110horae-browser-checks> PASS: short-screen menu scrolls internally and supports reverse Tab and Space111horae-browser-checks> CHECK: filter and calendar menus keep their callbacks and survive route changes112horae-browser-checks> PASS: filter and calendar menus keep their callbacks and survive route changes113horae-browser-checks> CHECK: Timesheet keeps the shared calendar and week selection behavior114horae-browser-checks> PASS: Timesheet keeps the shared calendar and week selection behavior115horae-browser-checks> PASS: mobile content width, keyboard toggle, Escape/focus restoration and navigation close116horae-browser-checks> PASS: short mobile viewport reaches account navigation and preserves desktop collapse state117horae-browser-checks> PASS: desktop drag width survives mobile and breakpoint transitions118horae-browser-checks> PASS: keyboard selection, mixed/select-all states and Actions count119horae-browser-checks> PASS: search, status and client changes clear selection120horae-browser-checks> PASS: keyboard selection/confirmation and no document overflow in both themes at three widths121horae-browser-checks> PASS: cancel/focus, failure retry, pending guard and archive/reactivate confirmation122horae-browser-checks> PASS: oversized selection cannot submit and members have no bulk controls123horae-browser-checks> PASS: real atomic archive/reactivate, anonymous/member/inactive denial, manager/admin and safe retries124horae-browser-checks> PASS: bulk success restores focus and recovers the list without stale actions125horae-browser-checks> PASS: bulk pending restores focus and recovers the list without stale actions126horae-browser-checks> PASS: bulk pending-navigation restores focus and recovers the list without stale actions127horae-browser-checks> PASS: bulk failure restores focus and recovers the list without stale actions128horae-browser-checks> PASS: client activation failure remains visible with form closed, open and cancelled129horae-browser-checks> PASS: successful form save preserves action error; real status retry clears it and refreshes the row130horae-browser-checks> PASS: archive failure survives menu dismissal; shared edit failure preserves input and safely retries131horae-browser-checks> PASS: failed team removal preserves the draft, safely retries and can be restored through the shared editor132horae-browser-checks> PASS: initial catalog/draft failures show loading and recovery without rendering or saving an empty replacement133horae-browser-checks> PASS: design typography, section spacing, quiet dividers and theme-aware task information134horae-browser-checks> PASS: project types retain native keyboard selection and the designed icon/option-card states135horae-browser-checks> PASS: searchable client selection, pending/error recovery and explicit/inherited currency136horae-browser-checks> PASS: client default-rate currency rejects relabelling, preserves failed input and permits compatible edits137horae-browser-checks> PASS: task and teammate searches handle pending results, keyboard selection, duplicates and retry138horae-browser-checks> PASS: real client, team, task restrictions, billing and invoice defaults survive reload139horae-browser-checks> PASS: all invoice-default errors identify and focus their field, preserve input and recover at three widths140horae-browser-checks> PASS: basic-field rejections retain values, link visible errors and restore focus at three widths141horae-browser-checks> PASS: failed resume and retry preserve the existing draft without a replacement write142horae-browser-checks> PASS: invalid hourly rates and hour/fee budgets retain input and focus their error at three widths143horae-browser-checks> PASS: a stale email configuration rejection can be corrected without sending mail144horae-browser-checks> PASS: task/person rate, cost and budget errors identify their row and preserve other inputs at three widths145horae-browser-checks> PASS: single/monthly fees, empty schedules and individual milestone errors recover without changing another row146horae-browser-checks> PASS: responsive form, conditional panels and Cancel preserve the draft147horae-browser-checks> PASS: edits made while a save is pending are saved after its acknowledgement148horae-browser-checks> PASS: lost acknowledgement retries the same request and preserves newer edits149horae-browser-checks> PASS: real finalized budget reaches the authorized Projects endpoint and display150horae-browser-checks> PASS: a new tagged project reaches reports and both exports; pending/error filters never show stale rows151horae-browser-checks> PASS: project invoice defaults prefill real estimates, stale reviews cannot generate, and editable draft values persist independently152horae-browser-checks> PASS: lost creation response is idempotent and clears the completed draft153horae-browser-checks> PASS: stale tabs cannot overwrite saved input; explicit discard removes only the draft154horae-browser-checks> PASS: invoice selection, partial balances, exact excess, dirty/pending navigation, reload recovery, account-scoped replay, storage failure safety and authorized per-occurrence project balances155horae-browser-checks> PASS: New Project task rates and editor capabilities preserve configured/legacy modes, source currencies, unknown/zero recovery, scoped budgets and keyboard recovery across three widths156horae-browser-checks> PASS: organization admin real-session UI, draft ownership, progress/export scope and financial redaction157horae-browser-checks> PASS: organization manager real-session UI, draft ownership, progress/export scope and financial redaction158horae-browser-checks> PASS: project lead real-session UI, draft ownership, progress/export scope and financial redaction159horae-browser-checks> PASS: project admin real-session UI, draft ownership, progress/export scope and financial redaction160horae-browser-checks> PASS: visible assigned member real-session UI, draft ownership, progress/export scope and financial redaction161horae-browser-checks> PASS: private assigned member real-session UI, draft ownership, progress/export scope and financial redaction162horae-browser-checks> PASS: revoked assignment and outsider identities cannot grant project-wide access163horae-browser-checks> PASS: inactive/anonymous requests are denied and a manager creates a real project without private overrides164horae-browser-checks> PASS: stale client/task/person references and archived task-name conflicts preserve drafts and support field-level recovery at three widths165horae-browser-checks> PASS: saved invalid task names/access identify their row, preserve input and support keyboard recovery at three widths before real finalization166horae-browser-checks> PASS: 390/1 hourly Person/No budget167horae-browser-checks> PASS: 390/1 hourly Task/Hours per task168horae-browser-checks> PASS: 390/1 hourly Project/Total project hours169horae-browser-checks> PASS: 390/1 hourly Person/Hours per person170horae-browser-checks> PASS: 390/1 hourly Task/Fees per task171horae-browser-checks> PASS: 390/1 hourly Project/Total project fees172horae-browser-checks> PASS: 390/1 fixed/no budget173horae-browser-checks> PASS: 390/1 fixed/Single fee174horae-browser-checks> PASS: 390/1 fixed/Milestones175horae-browser-checks> PASS: 390/1 fixed/Monthly176horae-browser-checks> PASS: 390/1 non-billable/No budget177horae-browser-checks> PASS: 390/1 non-billable/Total project hours178horae-browser-checks> PASS: 390/1 non-billable/Hours per task179horae-browser-checks> PASS: 390/1 non-billable/Hours per person180horae-browser-checks> PASS: native Tab order, accessible names, reverse Tab and unclipped focus across all billing/budget branches at 390px and 100% text181horae-browser-checks> PASS: 768/1 hourly Person/No budget182horae-browser-checks> PASS: 768/1 hourly Task/Hours per task183horae-browser-checks> PASS: 768/1 hourly Project/Total project hours184horae-browser-checks> PASS: 768/1 hourly Person/Hours per person185horae-browser-checks> PASS: 768/1 hourly Task/Fees per task186horae-browser-checks> PASS: 768/1 hourly Project/Total project fees187horae-browser-checks> PASS: 768/1 fixed/no budget188horae-browser-checks> PASS: 768/1 fixed/Single fee189horae-browser-checks> PASS: 768/1 fixed/Milestones190horae-browser-checks> PASS: 768/1 fixed/Monthly191horae-browser-checks> PASS: 768/1 non-billable/No budget192horae-browser-checks> PASS: 768/1 non-billable/Total project hours193horae-browser-checks> PASS: 768/1 non-billable/Hours per task194horae-browser-checks> PASS: 768/1 non-billable/Hours per person195horae-browser-checks> PASS: native Tab order, accessible names, reverse Tab and unclipped focus across all billing/budget branches at 768px and 100% text196horae-browser-checks> PASS: 1440/1 hourly Person/No budget197horae-browser-checks> PASS: 1440/1 hourly Task/Hours per task198horae-browser-checks> PASS: 1440/1 hourly Project/Total project hours199horae-browser-checks> PASS: 1440/1 hourly Person/Hours per person200horae-browser-checks> PASS: 1440/1 hourly Task/Fees per task201horae-browser-checks> PASS: 1440/1 hourly Project/Total project fees202horae-browser-checks> PASS: 1440/1 fixed/no budget203horae-browser-checks> PASS: 1440/1 fixed/Single fee204horae-browser-checks> PASS: 1440/1 fixed/Milestones205horae-browser-checks> PASS: 1440/1 fixed/Monthly206horae-browser-checks> PASS: 1440/1 non-billable/No budget207horae-browser-checks> PASS: 1440/1 non-billable/Total project hours208horae-browser-checks> PASS: 1440/1 non-billable/Hours per task209horae-browser-checks> PASS: 1440/1 non-billable/Hours per person210horae-browser-checks> PASS: native Tab order, accessible names, reverse Tab and unclipped focus across all billing/budget branches at 1440px and 100% text211horae-browser-checks> PASS: 1440/2 hourly Person/No budget212horae-browser-checks> PASS: 1440/2 hourly Task/Hours per task213horae-browser-checks> PASS: 1440/2 hourly Project/Total project hours214horae-browser-checks> PASS: 1440/2 hourly Person/Hours per person215horae-browser-checks> PASS: 1440/2 hourly Task/Fees per task216horae-browser-checks> PASS: 1440/2 hourly Project/Total project fees217horae-browser-checks> PASS: 1440/2 fixed/no budget218horae-browser-checks> PASS: 1440/2 fixed/Single fee219horae-browser-checks> PASS: 1440/2 fixed/Milestones220horae-browser-checks> PASS: 1440/2 fixed/Monthly221horae-browser-checks> PASS: 1440/2 non-billable/No budget222horae-browser-checks> PASS: 1440/2 non-billable/Total project hours223horae-browser-checks> PASS: 1440/2 non-billable/Hours per task224horae-browser-checks> PASS: 1440/2 non-billable/Hours per person225horae-browser-checks> PASS: native Tab order, accessible names, reverse Tab and unclipped focus across all billing/budget branches at 1440px and 200% text226horae-browser-checks> PASS: New client227horae-browser-checks> PASS: Who can track to this task?228horae-browser-checks> PASS: restricted task members229horae-browser-checks> PASS: Discard this draft?230horae-browser-checks> PASS: configured email threshold at 390231horae-browser-checks> PASS: configured email threshold at 768232horae-browser-checks> PASS: configured email threshold at 1440233horae-browser-checks> PASS: budget amount and checkbox choices survive draft reload and finalize correctly at 390px234horae-browser-checks> PASS: keyboard-only Time & Materials creation at 390px took 1890ms and survives reopening235horae-browser-checks> PASS: keyboard-only Fixed Fee creation at 390px took 1012ms and survives reopening236horae-browser-checks> PASS: keyboard-only Non-Billable creation at 390px took 971ms and survives reopening237horae-browser-checks> PASS: budget amount and checkbox choices survive draft reload and finalize correctly at 768px238horae-browser-checks> PASS: keyboard-only Time & Materials creation at 768px took 2800ms and survives reopening239horae-browser-checks> PASS: keyboard-only Fixed Fee creation at 768px took 920ms and survives reopening240horae-browser-checks> PASS: keyboard-only Non-Billable creation at 768px took 935ms and survives reopening241horae-browser-checks> PASS: budget amount and checkbox choices survive draft reload and finalize correctly at 1440px242horae-browser-checks> PASS: keyboard-only Time & Materials creation at 1440px took 3170ms and survives reopening243horae-browser-checks> PASS: keyboard-only Fixed Fee creation at 1440px took 1241ms and survives reopening244horae-browser-checks> PASS: keyboard-only Non-Billable creation at 1440px took 1102ms and survives reopening245horae-browser-checks> PASS: modal traversal/Escape restores focus and configured email threshold is keyboard reachable without sending mail246horae-browser-checks> PASS: interrupted response bodies remain retryable without losing newer edits247horae-browser-checks> PASS: shared editor prefills, cancels, saves the same project and survives reload at 390px248horae-browser-checks> PASS: shared editor prefills, cancels, saves the same project and survives reload at 768px249horae-browser-checks> PASS: shared editor prefills, cancels, saves the same project and survives reload at 1440px250horae-browser-checks> PASS: configured editor prefills exact zero, budgets, private notes and invoice defaults; persists changes and preserves identity on no-op251horae-browser-checks> PASS: sidebar, back, forward, reload and replacement navigation preserve dirty edits until explicitly discarded252horae-browser-checks> PASS: lost save acknowledgement blocks navigation and retries the identical committed request without another update253horae-browser-checks> PASS: concurrent edits reject a stale save, retain local input and require confirmation before reloading254horae-browser-checks> PASS: pending creation saves protect sidebar, Back, replacement, reload and full-document exits without losing newer edits255horae-browser-checks> PASS: a lost acknowledgement blocks Forward and exits until the identical retry and newer edits are acknowledged256horae-browser-checks> PASS: explicit Cancel preserves the draft, confirmed discard clears it, and successful creation releases the guard