Startup recovery no longer stalls the connection loop; Rust 1.100 Cargo layout support
AF
9m ago+1180+1180+0123456789012345678901234567890123456789-124-124-012345678901234567890123456789
Follow-up to the post-0.64 batch 3 merge (#1433), before its card is placed.
- Startup recovery: held-task recovery reads `bash_tasks` and the call ledger in small indexed pages instead of one full scan under the shared aft.db lock. On a 2.1 GB database snapshot, the longest lock hold fell from about 1.47 s to 14 ms, and the worst delay seen by a task on the connection runtime from about 1.46 s to 4 ms, with identical results (847 sessions, 1,328 tasks). Batch 3's first placement rolled back after a 19 s stall of the connection loop behind that scan.
- Database waits off the runtime thread: the macOS permission-card cleanup, `macos_permissions` and the shells list lookup now run their database sections with `spawn_blocking`. Current-thread tests prove the runtime keeps polling while another thread holds the lock.
- Rust 1.100: completed Rust checks find build-script output in Cargo's new `build///run/stdout` layout as well as the old one. Native test launchers use `cortexkit-test-support` 0.1.14 to find the profile folder in both layouts. Main's CI has been red since GitHub's runners moved to Rust 1.100.
Summary by cubic
Stops startup recovery from stalling the connection runtime and restores CI on Rust 1.100.
Startup recovery and database waits
- Recovery reads
bash_tasksand the call ledger in 64-row indexed pages, cutting the longest sharedaft.dblock hold from ~1.47 s to 14 ms on a 2.1 GB snapshot (worst connection-runtime delay: ~1.46 s to 4 ms). - macOS permission-card cleanup,
macos_permissions, and the shells list agent lookup run database work viaspawn_blockingso the runtime keeps polling while the lock is held. - Tests with a current-thread runtime verify polling continues when another thread holds the database lock; permission-card tests now run only on Unix, and the opt-in offline snapshot benchmark reads its manifest path at run time.
Rust 1.100 Cargo layout
- Completed Cargo checks now read build-script stdout from the new
build/<package>/<unit>/run/stdoutlayout as well as the legacyoutputlayout. - Native test launchers use
cortexkit-test-support0.1.14 to locate the profile folder in both layouts; main's CI had been red since GitHub runners moved to Rust 1.100. - Declared non-ranking for the search-quality harness; search code is untouched.