Fix functional test flakes and duplicate move usage accounting #825
Open
kayg
wants to merge 1 commit from
fix/parallel-test-flakes into dev
pull from: fix/parallel-test-flakes
merge into: kayg:dev
kayg:main
kayg:feat/style-sheet-fixes
kayg:storage/wal-checkpoint-off-save-1051
kayg:feat/contrast
kayg:t3/paged-search-reconcile-final
kayg:feat/pass8
kayg:review/calendar-2
kayg:fix/shared-row-swipes
kayg:dev
kayg:feat/collections-db
kayg:fix/instant-keys-1056
kayg:feat/money-round
kayg:perf/stalls-1054
kayg:wip/tiering-v3-cold4
kayg:wip/tiering-v3-cold5
kayg:port/rows-actions
kayg:port/rows-drop
kayg:port/hidden-blocks
kayg:port/rows
kayg:port/port-tables
kayg:port/port-tables-2
kayg:t3/mail-1011-liveness
kayg:port/devices
kayg:port/port-attachments
kayg:port/port-attachments-2
kayg:port/port-attachments-3
kayg:docs/design-consistency
kayg:docs/engineering-standards
kayg:fix/rusqlite-0.41-rustsec-2026-0459
kayg:feat/iphone-fixes
kayg:shared/restore-and-stale-918-919
kayg:fix/phone-top-band-contrast
kayg:feat/notes-approve
kayg:perf/soak-max-gate
kayg:feat/files-s1-identity
kayg:fix/lifecycle-event-id
kayg:feat/quickfix
kayg:wip/tiering-v3-cold
kayg:perf/web-mockup-frame-fixes
kayg:port/contacts-merge
kayg:port/contacts-edit
kayg:test/shared-room-no-deleted-text
kayg:perf/first-paint-credits
kayg:fix/shared-history-after-grant
kayg:fix/phone-swipe-regressions
kayg:feat/contrast-r1
kayg:review/sharing-pr3-review
kayg:feat/tiering-v3-s2-tags
kayg:feat/folder-drop
kayg:fix/deskpills-lazy-share
kayg:feat/sharing-s1-pr3
kayg:tmp/money-round-before
kayg:fix/phone-pane-backdrop-roots
kayg:fix/palette-preload-chips
kayg:fix/invite-defaults
kayg:port/tasks-matrix
kayg:fix/restore-green-gates
kayg:fix/sharing-fast-path-hardening
kayg:t3/photos-s1
kayg:feat/tiering-v3-s1-namespace
kayg:notes-archive-hide
kayg:feat/tasks-actions
kayg:t3/photos-plan-slice-one
kayg:feat/whiteboard-s1
kayg:t3/paged-search-reconcile
kayg:t3/smooth-pane-transitions
kayg:t3/index-position-startup-scan
kayg:fix/private-staging-759b-r2
kayg:feat/dav-transport
kayg:feat/imap-notes-fetch
kayg:feat/imap-notes-projection
kayg:feat/imap-notes-readonly
kayg:feat/imap-notes-auth
kayg:feat/imap-notes-server-foundation
kayg:docs/undo-block-ids-plan
kayg:fix/undo-768
kayg:proto/block-identity-v7d
kayg:issue/carddav-read-perf-fix-r2
kayg:issue/carddav-read-r2
kayg:docs/imap-766-plan-v2
kayg:docs/imap-notes-plan
kayg:docs/quota-plan-2
kayg:feat/contacts-companion-pure
kayg:docs/calendar-backend-v2-plan
kayg:feat/calendar-ical-converter
kayg:docs/tasks-writes-v2-plan
kayg:docs/carddav-writes-v2-plan
kayg:docs/contacts-import-v2-plan
kayg:issue/610-pm-midnight
kayg:feat/calendar-v2-s1-containment
kayg:docs/dav-recorder-v2-plan
kayg:plan/previews-865
kayg:plan/save-log-durable-entry
kayg:fix/e2e-data-on-ram
kayg:feat/appwindow3
kayg:feat/appwindow2
kayg:feat/appwindow
kayg:feat/money-p1
kayg:feat/keys-sheet
kayg:review/calendar-2-themes
kayg:feat/smooth-cursor
kayg:fix/float-style
kayg:review/calendar-2-float
kayg:release/2026-11-06-hotfix
kayg:archive/port/rows-drop-code
kayg:archive/port/rows-actions
kayg:archive/port/rows
kayg:scratch/tasks-894-ui-gates
kayg:review/calendar-2-night-wip
kayg:release/2026-11-05
kayg:archive/feat/tiering-v3-s1-namespace
kayg:archive/flaky/rows-drop-fixed
kayg:archive/flaky/rows-actions
kayg:archive/feat/tiering-v3-reader
kayg:archive/feat/tiering-v3-roots
kayg:archive/flaky/rows
kayg:sim/bm15-final
kayg:sim/bm15-fix
kayg:sim/bm15-bis-932
kayg:sim/bm15-bis-909
kayg:sim/bm15
kayg:sim/bm15-bis-887
kayg:perf/tiering-option-b
kayg:port/style-3
kayg:port/style-2
kayg:port/style
kayg:fix/sw-lazy-precache
kayg:fix/vim-w-waits-for-save
kayg:fix/signout-test-races
kayg:fp-scratch/all
kayg:sim/bm15-first-paint
kayg:archive/bm15/rows-drop
kayg:archive/bm15/rows-actions
kayg:fix/palette-snippet-contrast
kayg:archive/bm15/rows
kayg:archive/bm15/hidden
kayg:archive/plan/save-log-durable-entry
kayg:mock/money-fix2
kayg:archive/fix/e2e-data-on-ram
kayg:mock/appearance-all
kayg:mock/pill-press
kayg:archive/docs/design-consistency
kayg:mock/auto-swipes
kayg:mock/mail-actions
kayg:archive/feat/mail-p1
kayg:mock/money-static
kayg:archive/review/standards-917
kayg:archive/docs/engineering-standards
kayg:perf/tiering-761-fix
kayg:mock/type-audit
kayg:mock/third-pane
kayg:feat/contacts-import-v2-s1
kayg:perf/executor-hot-path
kayg:archive/port/hidden-blocks
kayg:archive/port/devices
kayg:scratch/executor-on-894
kayg:scratch/executor-spans2
kayg:scratch/executor-spans
kayg:train/2026-11-03-bm14c
kayg:archive/port/rows-drop
kayg:feat/tiering-761-d-scale
kayg:feat/tiering-761-c-index
kayg:feat/tiering-761-b-reader
kayg:archive/review/sharing-pr3-review-9fec3d1f
kayg:train/2026-11-03-bm14b
kayg:perf/ports-lazy-budgets
kayg:feat/tiering-761-a-migration
kayg:train/2026-11-03-bm14
kayg:train/2026-11-03-bm12
kayg:archive/review/sharing-pr3-review
kayg:archive/feat/sharing-s1-pr3
kayg:train/2026-11-03-bm11
kayg:archive/feat/imap-notes-fetch
kayg:train/2026-11-03-bm10
kayg:archive/review/sharing-pr3-review-code
kayg:archive/plan/previews-865
kayg:train/2026-11-02-bm9
kayg:archive/port/port-attachments-3
kayg:archive/port/contacts-merge
kayg:fix/motion-audit-859
kayg:train/2026-11-02-bm8
kayg:archive/scratch/bm8-prep
kayg:archive/port/port-pickers
kayg:archive/port/port-tables-2
kayg:archive/port/port-tables
kayg:archive/feat/sharing-s1-pr3-code
kayg:archive/scratch/bm7-fixed
kayg:train/2026-11-02-bm7
kayg:archive/fix/parallel-test-flakes-code-minipc01
kayg:train/2026-11-02-bm6
kayg:docs/imap-766-readonly-slice
kayg:feat/dav-recorder-v3
kayg:research/788-diagnosis
kayg:archive/fix/parallel-test-flakes
kayg:archive/perf/pr792-cold-index-edit
kayg:docs/sharing-slice-1
kayg:archive/docs/imap-766-plan-v2
kayg:feat/dav-recorder-v2
kayg:archive/docs/dav-recorder-v2-plan
kayg:spike/imap-766-s0-cases
kayg:archive/fix/undo-768
kayg:feat/dav-recorder
kayg:archive/docs/contacts-import-v2-plan
kayg:archive/feat/calendar-ical-converter
kayg:feat/contacts-import
kayg:perf/cold-growth-on-764
kayg:perf/cold-growth-on-tiering
kayg:archive/docs/tasks-writes-v2-plan
kayg:archive/docs/calendar-backend-v2-plan
kayg:archive/feat/contacts-companion-pure
kayg:feat/tasks-set-status
kayg:feat/tasks-move-reorder
kayg:archive/docs/carddav-writes-v2-plan
kayg:archive/feat/calendar-v2-s1-containment
kayg:feat/tasks-delete-promote-duplicate
kayg:archive/feat/dav-transport
kayg:archive/fix/carddav-rebuild-r1
kayg:archive/fix/carddav-retention-r1
kayg:feat/carddav-writes
kayg:perf/quota-on-tiering
kayg:perf/quota-simple
kayg:perf/cold-growth-on-quota-stack
kayg:feat/calendar-identity
kayg:feat/calendar-event-parser
kayg:feat/calendar-props-maps
kayg:port/glass-when-ring
kayg:feat/tiering-761-s1
kayg:wip/10by32-01-impl-759b-scratch-20261030
kayg:wip/6by32-01-bm3-webkit-pause-20261030
kayg:wip/10by32-01-bm3-chromium-pause-20261030
kayg:wip/6by32-01-tier-761-s1-pause-20261030
kayg:spike/imap-766-s0
kayg:wip/6by32-02-calternal-pause-20261030
kayg:wip/8by64-01-review-688-pause-20261030
kayg:wip/6by32-01-verify-744-pause-20261030
kayg:wip/6by32-01-verify-742-pause-20261030
kayg:fix/private-staging-759b
kayg:wip/6by32-01-review-748-pause-20261030
kayg:wip/6by32-01-review-733c-pause-20261030
kayg:wip/6by32-01-review-733b-pause-20261030
kayg:wip/6by32-01-perf-idle-8-pause-20261030
kayg:wip/6by32-01-perf767-base-pause-20261030
kayg:wip/6by32-01-perf767b-767-pause-20261030
kayg:wip/6by32-01-perf767b-764-pause-20261030
kayg:wip/6by32-01-perf767-767-pause-20261030
kayg:wip/6by32-01-perf767-764-pause-20261030
kayg:wip/6by32-01-lists-b-pause-20261030
kayg:wip/6by32-01-ids-verify5-pause-20261030
kayg:wip/6by32-01-ids-verify4-pause-20261030
kayg:review/calendar-month
kayg:wip/10by32-02-undo-768-20261030
kayg:test/ids-verify3
kayg:wip/10by32-02-bm3-chromium-20261030
kayg:wip/10by32-01-review-753-20261030
kayg:wip/10by32-01-perf-idle-2-20261030
kayg:wip/10by32-01-bm2-webkit2-20261030
kayg:plan/759b-staging
kayg:train/2026-10-30-bm2
kayg:review/758b-tests
kayg:review/758-tests
kayg:review/764d-tests
kayg:review/767b-tests
kayg:review/preview-2026-10-29
kayg:review/767-tests
kayg:docs/tiering-731-plan
kayg:wip/c6b02-when2
kayg:wip/c6b02-tasks-create-fix5
kayg:wip/c6b02-settings-frost-mock
kayg:wip/c6b02-settings-frost-base
kayg:wip/c6b02-settings-frost
kayg:wip/c6b02-ring
kayg:wip/c6b02-review-733d
kayg:wip/c6b02-bm1-full-a
kayg:wip/compute02-when-field
kayg:wip/compute02-webkit-lists-repro
kayg:wip/compute02-train-bl2-dev
kayg:wip/compute02-dev-green-pw164
kayg:docs/deploy-plan
kayg:review/764c-tests
kayg:review/764b-tests
kayg:review/748g-tests
kayg:review/764-tests
kayg:review/759b-tests
kayg:fix/storage-owner-liveness-642
kayg:fix/storage-fix-7
kayg:wip/compute02-storage-fix-7
kayg:review/759-tests
kayg:feat/tiering-731
kayg:wip/tiering-731-first-attempt
kayg:wip/compute02-storage-fix-1
kayg:review/754g-tests
kayg:perf/idle-honest-2
kayg:review/754f-tests
kayg:review/754e-tests
kayg:review/755-tests
kayg:review/754d-tests
kayg:review/754c-tests
kayg:review/754b-tests
kayg:review/754-tests
kayg:fix/storage-private-tmp-642-dev
kayg:wip/compute02-verify-750
kayg:test/ids-verify5
kayg:test/ids-verify4
kayg:fix/storage-exact-file-quarantine-642
kayg:wip/compute02-verify-740
kayg:perf/one-flush-save
kayg:review/calendar-static
kayg:wip/compute02-verify-737
kayg:review/indexing-ring
kayg:review/when-field-2
kayg:wip/compute02-review-733
kayg:proto/block-identity-2-review
kayg:proto/block-identity-review
kayg:wip/c6b02-tc-design
kayg:review/when-field
kayg:issue/tasks-create-ids
kayg:issue/tasks-create
kayg:review/combined
kayg:wip/compute02-review-combined
kayg:review/task-polish
kayg:review/top-buttons
kayg:review/q1-q5
kayg:train/2026-10-26-bl2
kayg:archive/wt-398h
kayg:archive/train-bm-proptest-seed
kayg:archive/integ325-293
kayg:archive/integ325-ci
kayg:archive/client-auth-review-baseline
kayg:archive/wt-sim-4853
kayg:archive/wt-sim-4811
kayg:archive/wt-448m
kayg:archive/wt-398a-allocator
kayg:issue/calendar-adr
kayg:archive/old/train/2026-10-23bk2
kayg:archive/old/train/2026-10-23bk
kayg:issue/469-mockup-9a
kayg:issue/smart-tasks-mockup
kayg:issue/469-menus
kayg:issue/652-signout-flake
kayg:issue/652-history-fix7
kayg:issue/652-history-fix6
kayg:archive/old/issue/spring-check-perf
kayg:issue/spring-check-perf
kayg:issue/659-rename-fast
kayg:archive/old/train/2026-10-21ar
kayg:issue/search-hardening-3
kayg:issue/652-history-fix5
kayg:issue/660-port-sheets-glass
kayg:issue/652-history-fix4
kayg:issue/652-history-fix3
kayg:issue/652-history-fix2
kayg:issue/652-history-flake
kayg:train/2026-10-21an
kayg:issue/settings-admin-port
kayg:issue/search-port
kayg:train/2026-10-20am
kayg:issue/storage-split-fix2
kayg:issue/storage-split
kayg:archive/old/issue/folder-ids-fix
kayg:train/2026-10-20al
kayg:archive/old/issue/folder-ids
kayg:train/2026-10-20ak
kayg:issue/tables-mockup
kayg:train/2026-10-19aj
kayg:train/2026-10-19ai
kayg:issue/469-merge-fixes
kayg:issue/sidebar-band
kayg:archive/old/issue/608-settings-spec
kayg:train/2026-10-19ah
kayg:issue/swipe-offscreen
kayg:train/2026-10-19ag
kayg:archive/old/issue/590-nlp-adr
kayg:archive/old/issue/587-event-after-write-2
kayg:train/2026-10-19af
kayg:archive/old/issue/587-event-after-write
kayg:issue/469-pill-room-c
kayg:issue/469-pill-room
kayg:train/2026-10-19ae
kayg:issue/469-narrow-handle
kayg:issue/397-ios-swipe-2
kayg:archive/old/issue/adrs-photos-files-tasks
kayg:issue/469-desk-fixes
kayg:archive/old/issue/auto-update-adr
kayg:issue/469-filter-gap
kayg:issue/469-port-1b
kayg:issue/442-opacity-flake
kayg:archive/397-ios-swipe-2
kayg:issue/327-web-fast-3
kayg:archive/old/issue/469-port-1
kayg:issue/469-port-1
kayg:issue/327-web-fast-2
kayg:archive/old/issue/327-web-fast
kayg:archive/old/issue/425-stt-bench-vq1
kayg:archive/old/issue/445-no-bleed
kayg:archive/old/issue/400-swipe-mockup-2
kayg:issue/426-client-review
kayg:issue/426-client-2
kayg:issue/426-client
kayg:archive/old/issue/476-safe-area-lab
kayg:archive/445-top-light-2
kayg:archive/old/issue/445-top-light
kayg:issue/471-blocks-mockup
kayg:archive/old/issue/448-links-app-2
kayg:archive/old/issue/448-links-app
kayg:archive/old/issue/398-cold-links
kayg:issue/434-442-small-2
kayg:issue/434-442-small
kayg:archive/old/issue/398-unload
kayg:archive/old/issue/445-bottom-band
kayg:issue/445-bottom-band
kayg:issue/351-rem-3
kayg:archive/312-views-mockup
kayg:issue/351-rem-2
kayg:issue/351-rem
kayg:archive/old/issue/327-first-note
kayg:issue/395-width-phone
kayg:archive/old/issue/327-typing
kayg:issue/396-ios-edges
kayg:issue/397-ios-swipe
kayg:archive/398-allocator
kayg:archive/old/issue/327-notes-index
kayg:issue/345-347-contrast-empty-2
kayg:archive/old/issue/44-arenas
kayg:issue/44-arenas
kayg:archive/integ325
kayg:archive/old/issue/327-perf-harness
kayg:archive/old/issue/44-thp
kayg:issue/44-thp
kayg:archive/old/issue/285-sticky-pills
kayg:archive/old/issue/44-trim-3
kayg:issue/44-trim-3
kayg:archive/old/issue/165-cards
kayg:archive/old/issue/165-picker-2
kayg:archive/old/issue/212-multi-select
No reviewers
Labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
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!825
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/parallel-test-flakes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Functional tests now prove progress and ordering during parked work, with documented 120-second deadlock watchdogs for positive completion. They no longer impose notes/auth speed budgets on fsync. Fresh verification at
d0f89de360a964f5f718c2a3b9faa1025c05decbpassed all eight default-parallel workspace commands: dev-01 5/5, dev-02 3/3, zero failures.Original commit
a55e9af9is a product fix, rebased as04c6f09e. A recount can cache both names across a rename. The move notification must subtract the destination's cached contribution before replacing it, or logical Home usage is double-counted. The fix adds O(1) work per cached moved path; existing directory traversal/recount remains O(N), with no persistent format change.Test, cause, fix, run results
/procobservation raced I/ONo test retries were added. Functional watchdogs were deliberately increased to 120 s per maintainer direction, with a shared comment explaining that they catch deadlocks, not speed regressions. Ignored perf tests retain their performance budgets on perf VMs; frame budgets belong on the Mac VM.
Workspace wall-clock audit
Full workspace inventory and follow-up table lists paths, lines and functions found by
Instant::now,elapsed(), literal timeout/recv_timeout and millisecond-assert searches. Notes/auth completion guards were converted; their remaining clocks are documented liveness, expiry/backoff/cache-age policy, watcher polling, or ignored perf measurements.Follow-up candidates outside this scope include tasks, backdrops uploads, contacts actions, daily, prefs, server live/signout, search, fsio usage and the remaining calternal live/startup/storage/admin/shutdown-I/O tests. Policy grace bounds need virtual-clock review; functional speed assertions should become ordering checks or deadlock watchdogs. The inventory also lists frontend
performance.nowcandidates, engine/search measurement helpers and markdown scaling. This PR does not claim those follow-ups are fixed.Exact verification
Each VM uses its dedicated worktree, locked Bun dependencies, formatting check, and disk check before heavy work:
No
-jlimit or test-thread override. Repository defaultRUST_TEST_THREADS=4applies. Logs:~/parallel-flakes/liveness-d0f89de3/on each VM.Storage evidence for maintainer
On idle dev-02, three independent 4 KiB writes plus fsync took 2.012433 s, 2.034076 s and 16.228720 s. Full I/O pressure averaged 84.98% over 10 seconds, with ext4 journal/flush workers blocked and 73 GB free. A single durable write exceeded both old five-second shutdown and ten-second admission guards. Functional correctness must tolerate these stalls; speed belongs in the perf harness. During investigation, dev-02's generated prefs and task workers were also observed waiting in
jbd2_log_wait_commit; increasing process write counters confirmed progress. No durability requirement or concurrency setting was weakened.Commit review and rebase
Rebased onto
55f35fcde3bc91ca3781055577b93e93819f6cd4, still the current remotedevat final verification. There were five branch-only commits at the supplied head, all reviewed:c3b90bef→f65c492ca55e9af9→04c6f09eFiles::insert(&Path, ...)API1a4f1572→26783f65fd814050→46bbe220d1310c40→fd9c9586Resume fix
e15507abisolates refused-anchor snapshots from automatic saves. Temporary settlement diagnostics were reverted.Earlier evidence retained
At
074aac50, all eight scheduled commands finished: dev-01 5/5, dev-02 exits 101, 0, 0. The failed command contained the two server guard failures above. This failed epoch is retained, not counted as successful current-head verification. Logs:~/parallel-flakes/final-074aac50/.During replacement-check development, focused fan-out tests exposed two incorrect assumptions: API reads could precede edit application, and a parked actor does not close the client channel. The final checks use a sync acknowledgement and an explicit reached fan-out checkpoint. At
8723264a, dev-01 runs 1–2 passed; run 3 failed the old cold-valid concurrency test with 429 versus 200. The bounded cold admission window had expired. This false speed requirement was replaced with explicit admitted-lookup ordering. Ata3b68c6e, dev-01 passed all five commands and dev-02 run 1 passed; dev-02 run 2 failed markdown-view containment recovery at the implicit production 50 ms parser budget. That recovery check now uses explicit test limits. At3a93293b, dev-01 passed all five commands and dev-02 run 1 passed; dev-02 run 2 failed the search stalled-rebuild test at its three-second action guard. It now checks completion while the provider stays parked with deadlock watchdogs. Atba2367f4, dev-01 passed all five commands and dev-02 run 1 passed; run 2 failed the missing-note live join at its five-second response guard. Live note completion guards now use the shared deadlock watchdog. At9e6582a6, dev-01 completed three commands before its fourth was stopped; dev-02 run 1 failed fsio temporary-file creation with NotFound. The fixture helper used timestamps without exclusive creation; process-unique fixture names now prevent parallel cleanup from sharing a root. Other in-progress development batches were stopped before completion and are not counted. Earlier diagnostic and previous-head results remain in PR history. Never merge.Final gate: 8 workspace commands, 8 passes, 0 failures at the head above. Formatting and locked dependency preparation passed on both VMs. All task jobs finished; both VM worktrees and the control worktree are clean. Removed the task target directories after verification; small run logs remain at the path above.
fix: reconcile parallel test usage accounting and bridge diagnosticsto fix: avoid counting moved files twice during usage recountfix: avoid counting moved files twice during usage recountto fix: remove usage recount race and crash-test throughput assumptionfix: remove usage recount race and crash-test throughput assumptionto fix: remove parallel-test accounting and timing racesfix: remove parallel-test accounting and timing racesto Fix parallel crash/auth test flakes and duplicate move usage accountingWorkspace wall-clock guard audit at
d0f89de3Searched Rust tests and inline test modules for
Instant::now,elapsed(), literaltimeout/recv_timeout, andDuration::from_millisinside assertions. Production clocks/logging, expiry inputs, and dedicated perf binaries/examples are excluded. This is a static inventory: policy timers and measurements are identified separately from speed requirements.Notes and auth disposition
calternal_testkit::LIVENESS(120 s), documented as a deadlock watchdog, never a speed budget. This includes the two failing server guards and crash-test waits./proc/self/fdover two seconds.Instantuses in notesclients,storm,writers, tag crash recovery, and native watcher tests are the documented 120-second liveness deadlines.index::reload_speed, tag keystroke tests, save/slow-disk/group-commit measurement helpers and auth sign-in/source-churn/invite timing budgets are ignored perf-harness cases. Their speed budgets remain in the perf harness.Other Rust functional candidates, left for follow-up
Convert short completion waits to explicit ordering or the shared liveness watchdog. Review true expiry/grace-policy bounds with virtual clocks. Move actual throughput/latency requirements to perf harnesses. Entries are grouped by file; line numbers identify candidate sites, including helper functions used by tests.
upload_admission_is_bounded_and_cancellation_restores_capacityjoin,kill_nine_while_people_type_loses_and_doubles_nothing,run,startstarteventually,http,starta_new_server_prints_a_setup_token,launch_and_wait_for_healtha_big_upload_streams_in_bounded_memory,start,wait_fora_live_h1_collision_keeps_contact_and_incoming_link_identity,a_phone_renames_a_contact_while_someone_types_in_a_linking_note,starta_lock_held_past_the_longest_grace_still_fails_startup,startsjoin,start,strip_tz_markers_on_a_live_home_with_a_client_typinga_restart_waits_out_an_admin_request_longer_than_ten_seconds,a_stop_sent_before_subscribing_is_still_seen,an_active_request_gets_a_graceful_shutdown_window,shutdown_stops_a_client_waiting_on_a_partial_requestshutdown_bounds_response_writes_to_a_peer_that_stops_reading,shutdown_finishes_an_idle_read_and_keeps_response_writes_opennextnextassembly_is_bounded_per_connection_and_globally_and_expiry_releases_itkill_ateventually,runeventuallyinterrupted_conflict_exchange_restores_outside_file_on_restarta_change_on_one_device_reaches_the_otheropening_today_then_creating_tasks_scopes_keys_and_retriesbehind_answers_at_once_and_catching_up_is_announced_once,searches_answer_while_indexing_runssettlefive_thousand_links_across_a_thousand_notesbounded_shutdown_joins_the_card_write_and_refuses_later_copies,kill_delete_atkill9_import_during_file_placement,kill_delete_restore,kill_import_phase_in_folder,kill_restore_linkskilled_ateventuallyreads_do_not_wait_for_the_counter_writer,stale_metadata_cannot_replace_a_newer_updateA subsequent workspace run also exposed an implicit 50 ms production parser budget in markdown-view's containment-recovery success assertion. That check now passes explicit 120-second test limits to extraction inside containment; the production limit and deterministic deadline boundary test are unchanged. Other functional callers of production parser defaults need follow-up review.
Engine's
interleave_with_huge_job, search's ignoredordinary_save_p95_during_executor_and_rebuildtiming, and markdown-view extraction scaling are measurement helpers or ignored perf cases, not new functional speed gates.Frontend follow-up candidates
These test files also call
performance.now(). Review speed/frame assertions separately: frames must run on the Mac VM. Date-based content/fixture timestamps are not speed requirements.Maintainer evidence: dev-02 independently took 2.012433 s, 2.034076 s, and 16.228720 s for 4 KiB writes followed by fsync, with 73 GB free; full I/O stall pressure reached 84.98% over 10 seconds. Functional correctness must tolerate that storage latency. Fresh verification at
d0f89de360a964f5f718c2a3b9faa1025c05decbpassed: dev-01 5/5, dev-02 3/3 default-parallel workspace commands, zero failures.The functional search case
stalled_rebuild_uses_old_sources_while_writer_and_new_readers_finishsubsequently failed its three-second action guard at3a93293b. It now waits under the shared liveness watchdog and explicitly asserts the rebuild remains parked until writer and new-reader completion. Its one-second snapshot guard was converted too. Other search guard candidates in the inventory remain follow-ups.Live note follow-up resolved in
9e6582a6:crates/calternal/tests/notes_live.rsstartup, sync, edit visibility and missing-note response guards now use shared 120 s LIVENESS; protocol ordering/content/error assertions remain. Atba2367f4, dev-02 run 2 failed the five-second missing-note response guard.Fix parallel crash/auth test flakes and duplicate move usage accountingto Fix functional test flakes and duplicate move usage accountingkayg referenced this pull request2026-11-05 23:21:11 +00:00
housekeeping #1009: rebased+failing, left open for review.
rebased test flake and move-accounting fixes. used functional liveness/join_all checks in place of obsolete wall-clock probes; removed stale diagnostic variable references.
head:
a4a316206a359f1ea9c4453aa9d34ed7c7686d8f; based on devcd7f84432febfc63b788fbb9b9f9950452982d74, pushed with the original exact force-with-lease.frontend frozen install, check, lint, build and unit tests passed. bundle gate passed. first-paint brotli vs dev: JS 230777 B (+0 B), CSS 18386 B (+0 B).
Rust gate results (Mac VM):
cargo fmt -p calternal-auth -p calternal -p calternal-fsio -p calternal-markdown-view -p calternal-notes -p calternal-search -p calternal-testkit -- --checkcargo check -j4 --locked -p calternal-auth -p calternal -p calternal-fsio -p calternal-markdown-view -p calternal-notes -p calternal-search -p calternal-testkit --all-targetscargo clippy -j4 --locked -p calternal-auth -p calternal -p calternal-fsio -p calternal-markdown-view -p calternal-notes -p calternal-search -p calternal-testkit --all-targets -- -D warningscargo test -j4 --locked -p calternal-auth -p calternal -p calternal-fsio -p calternal-markdown-view -p calternal-notes -p calternal-search -p calternal-testkitserver-wide all-target checks/tests are blocked on macOS by
storage_startup.rs:147borrowing Child immutably; clippy also reports unusedstateinstorage.rs:265. both reproduce on dev.all executed gates used the VM Nix environment, shared Mac lock and slot. exact commands, source heads, logs and dev baseline. frontend inputs are identical to the tested frontend tree when a Rust-only repair changed the head.
original-head cherry/patch inventory,
pr-825.md; unmatched entries are missing-patch candidates, with semantic overlap/replacements noted above.View command line instructions
Manual merge helper
Use this merge commit message when completing the merge manually.
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.