Every Git command the site runs is built by one shared builder. A new GitCommand sets no working directory and grants no execution; its site profile carries the ten hermetic environment values. SiteGit binds command construction and execution to the existing site transaction.
All the places that spelled out a Git command now use them: sixteen inline site commands, the commit, staged-file, remote and read-tree commands in ops, recovery and read-only commands, the literal constructors and scratch merge executable, the hub and publication environment loops, hub worktree commands (including the merge-driver profile), batch Git (literal pathspecs kept), and publication commands (keeping the group-owned streaming child and optional private index). Each caller keeps its own runner, environment exceptions, directory, limits and exit handling. The unused run_site_git wrapper and the duplicate transaction, environment and PATH adapters are deleted.
ONE-DOOR, unit 3 (subunits 3a, 3b, 3c, 3d combined, replacing their per-subunit PRs). Plan: https://tangled.org/notplants-bot.bsky.social/lichen-orchestrator/blob/main/machine-docs/plans/ONE-DOOR-2026-10-30.md
This is a reading copy: only this PR's product changes, applied in order on its base. Nothing here is to be merged.
Source PRs on lichen.page.review (product), in order, with their original descriptions #
-
#3511
s/883-od-u3a-command-product— shared Git command constructionIntroduce a shared Git command builder without a working directory or execution grant. The explicit site profile retains the ten hermetic environment values; the existing transaction still selects and runs the child.
-
#3513
s/885-od-u3b-site-product— transaction-bound site GitBind Git command construction and execution to the existing site transaction. Route sixteen inline commands through SiteGit and delete the unused run_site_git wrapper. Preserve the transaction runner and all caller-specific exit handling.
-
#3515
s/887-od-u3b-ops-product— SiteGit commit and remote operationsRoute the remaining Git commit, staged-file, remote and read-tree transaction commands in ops through SiteGit. Keep argument order, status handling, recovery and diagnostics unchanged.
-
#3517
s/889-od-u3b-recovery-product— shared recovery and merge helper constructionConstruct recovery and read-only Git commands through the shared builder without acquiring another tree lock. Construct the fixed merge initializer through SiteGit and remove duplicate transaction/environment/PATH adapters.
-
#3519
s/891-od-u3c-callers-product— one lower Git constructor across caller profilesRoute remaining literal Git constructors and the scratch merge executable through GitCommand. Keep each caller’s sync or async runner, environment exceptions, directory, transport policy, input/output limits and exit handling unchanged, including admin and helper discovery paths.
-
#3521
s/893-od-u3c-profile-product— use one Git site environment profileReplace hub and publication environment loops with the existing GitCommand site profile and remove the redundant forwarding function. Preserve each caller’s runner, current directory, index override and pack limits.
-
#3523
s/895-od-u3c-hub-product— bind hub worktree Git to its transactionRoute hub worktree commands through SiteGit, including the merge-driver profile. Remove the redundant caller-supplied path from the Git and revision adapters; preserve status and error handling.
-
#3525
s/897-od-u3c-batch-product— bind batch Git to its transaction with literal pathsRoute batch Git through SiteGit while preserving literal pathspec behavior. Mount the existing transaction module independently of the optional Git add-on so the batch API keeps its feature availability.
-
#3527
s/899-od-u3d-profiles-product— keep site Git environment selection in one profileReplace the remaining nine direct site-environment applications with GitCommand::site. Preserve synchronous recovery, merge-file conflict handling, read-only history, symlink checks and probe execution contexts.
-
#3529
s/901-od-u3d-stream-product— stream publication Git through its transactionRun publication commands through SiteGit while retaining the group-owned streaming child and optional private index. Share success-required output conversion with the bounded hub runner, preserving operation diagnostics and raw stdout bytes.
Commits #
- 313abcb79 ONE-DOOR unit 3: subunit 3a
- 63ca3ec43 ONE-DOOR unit 3: subunit 3b
- 114c6f32c ONE-DOOR unit 3: subunit 3c
- 5df46e298 ONE-DOOR unit 3: subunit 3d
Count and shas #
count-product-code-lines f31afa7d999f..5df46e29898b: NET -82 · counted +309 -391 · moved out of the counted set +0 · comment-only deletions flagged 2 · macros flagged 0 · tests-folder code flagged 0
Base f31afa7d999f1dfe99315314e8d5056e54d29a23 (tip of s/882-od-u2h-guards-tests). Head 5df46e29898b3988244d5f53bb40ce1362926261. 27 files changed.
Check #
Every changed file is a file one of the product PRs changed, and each is identical at the head to the same file at the last product branch s/901-od-u3d-stream-product.
No file here was changed by any tests PR of this unit.