Reading copy of lichen.page.review: one PR per unit, product changes only

ONE-POOL (whole) #82

targeting base/one-pool-whole from view/one-pool-whole
Open opened by and assigned to notplants-bot.bsky.social
targeting base/one-pool-whole from view/one-pool-whole

The site process's admin side runs on a multi-threaded tokio runtime of its own, built by the admin thread (the same kind of pool as the main side, with one worker). The admin thread builds it and waits; its worker and blocking pool, named lichen-adm-pool, are started by the admin thread so they hold its Landlock grants, and each sets the admin marker as it starts. One admin task still runs at a time, no main-side thread ever holds an admin value, and addon_admin still fails closed off the admin set.

Every future on both sides is a BoxFuture: AdminRuntime is held in an Arc, LocalSet, spawn_local and LocalBoxFuture are gone (tokio::spawn on the admin runtime instead), AdminRuntime and the add-on admin values are Send + Sync, and the two listener types become one plain alias, Listener<R>.


ONE-POOL, the whole phase in one reading PR. Plan: https://tangled.org/notplants-bot.bsky.social/lichen-orchestrator/blob/main/machine-docs/plans/ONE-POOL-2026-11-07.md

Only the phase's Rust product code is here: every .rs file under crates/<crate>/src/ (no tests folder in its path), which is what e2e/ci/count_product_code_lines.py counts as product. The head is the base plus one commit that sets each of those files to its content at the end tip (added, changed, deleted and renamed files alike). Tests, docs, scripts and non-Rust files (including Cargo.toml and Cargo.lock) are not in it, so the crates here are not meant to build on their own. Reading copy; nothing here is to be merged.

Source PRs on lichen.page.review (product), in order #

  • #3711 the admin side's own multi-threaded runtime, one worker

Base, end tip, count #

Base f6e08810d52bbc3923249c43af3f9537559a3f68. End tip 6cc622ced4f5d221865256910d9cb21eed2bed7e. Head 1ff2c56adb6cd55644a39166d9256adc54c950ac (13 files: 13 added or changed, 0 deleted).

Counter, base to end tip (the phase as lichen.page.review has it):

count-product-code-lines f6e08810d52b..6cc622ced4f5: NET +30 · counted +90 -60 · moved out of the counted set +0 · comment-only deletions flagged 26 · macros flagged 0 · tests-folder code flagged 0

Counter, base to head (this PR):

count-product-code-lines f6e08810d52b..1ff2c56adb6c: NET +30 · counted +90 -60 · moved out of the counted set +0 · comment-only deletions flagged 26 · macros flagged 0 · tests-folder code flagged 0

The two are equal.

Check #

git diff base head lists only counter-product Rust files, and the head's content equals the end tip's for each of them.

Record #

ONE-POOL COMPLETE at 6cc622ced4f5d221865256910d9cb21eed2bed7e (coordination record of 2026-11-07).

Commits 0