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

DEDUPLICATION (whole) #88

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

Five things that were written in several places are written once.

One admission layer. A site process's routes take the forwarded identity's two layers from one helper, security::access::forwarded, in place of three copies. The server's state is read once. A public group, which the router never asks about, is now refused by both admissions (core answers 404, the front server 500) where they admitted it, so it fails closed. The share guest's 401 against 403, and named groups, still differ by side.

One stream. The site process's receive turns each passed connection into its stream in one place, stream_of, which the admin connections' serve also uses.

One way to read a setting. SiteSections keeps every add-on section from the file's one parse, read as written (table(name)) or into the reader's own type (section::<T>(name)). The git and publish settings resolve through it. standard.site's standard_site_in and publication_uri_of read the sections their callers already hold, so the uncached reader that went to disk and the test-only iroh loader go. Its errors now say "could not parse standard.site settings", and its links and the settings page's section read from the snapshot rather than from disk.

The generator trait's defaults. get_render_map and get_path_scope default to lichen's, and the copies in lichen's and the script generator go; Hugo and mdBook keep their own of both. prepopulate_site_dir_in defaults to the form Hugo and mdBook shared (<kind>-starter/) and their copies go; lichen's and the script generator's keep their own.

The filesystem verbs. The handle's one-op rename, remove_file and remove_dir_all, which nothing called, go, and so do four raw-fsops forwarders nothing called. A rename or a delete goes through mutate. Every layer that adds a lock, a capability, a policy or the backend's choice stays.


DEDUPLICATION, the whole phase in one reading PR. Plan: https://tangled.org/notplants-bot.bsky.social/lichen-orchestrator/blob/main/machine-docs/plans/DEDUPLICATION-2026-10-28.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 #

  • #3801 one admission layer and one stream (DEDUPLICATION unit 1, items 1 and 4)
  • #3804 one way to read a setting, and the generator trait's defaults (unit 2, items 2 and 5)
  • #3806 the filesystem verbs (unit 3, item 3)

Base, end tip, count #

Base 19499e6e7b49e9bf321ce302e192f91a02d4bbc1. End tip 288bf24c8e7ed28c8296f6b7bb4d59d08ac0147d. Head d9b27850af13c126b77191aaa2086bc731f1172d (25 files: 25 added or changed, 0 deleted).

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

count-product-code-lines 19499e6e7b49..288bf24c8e7e: NET -163 · counted +107 -270 · moved out of the counted set +0 · comment-only deletions flagged 12 · macros flagged 0 · tests-folder code flagged 0

Counter, base to head (this PR):

count-product-code-lines 19499e6e7b49..d9b27850af13: NET -163 · counted +107 -270 · moved out of the counted set +0 · comment-only deletions flagged 12 · 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 #

DEDUPLICATION is COMPLETE at stack 288bf24c8e7ed28c8296f6b7bb4d59d08ac0147d (coordination report machine-docs/reports/DEDUPLICATION-2026-11-11.md). Every product commit in this range is the phase's own.

Commits 0