Repository navigation
feat(writ): the reserved common project + git-crypt-aware pinning - #354
Merged
Merged
Conversation
added 2 commits
August 9, 2026 00:43
Snapshot pinning failed on unlocked git-crypt repositories: the worktree checkout's smudge filter reads $GIT_DIR/git-crypt for its key, which a worktree's private git-dir never holds. gitWorktreeAdd becomes add --no-checkout, link the common dir's git-crypt into the worktree's git-dir (no-op without git-crypt), then checkout --force. Validated by hand, then proven by the live cutover (282/282 deployed from the git-crypt personal layer). Plan: docs/plans/git-crypt-pinning.md.
The spec existed (platform-awareness: reserved, always matched, implicit) but the code never implemented it, and a second guide contradicted it with the every-project keyword reading — surfaced live when all's Tuckr links survived the cutover deploy. Ruled: platform-awareness wins and the name becomes common (Ansible's implicit-all pattern, renamed so it cannot be misread). Delivered: withCommonProject injects common into deploy and upgrade selection (never decommission — destruction stays explicit; empty selections keep meaning every-project), unit-tested; the scenario fixture renames all* to common* and the deploy leg asserts the implicit behavior on all three platforms; all three guides reconciled. The live takeover runs 282/282 healthy with the broken-link guard also catching the rename's victims — committed relative symlinks repaired on the writ-layer branch. Plan: docs/plans/implicit-common-project.md.
David-Noble-at-work
added a commit
that referenced
this pull request
Aug 9, 2026
…Rs (#355) A plan committed inside its own PR predates the merge by construction, so no completed plan recorded where it landed. Each of the five now ends with the PR it landed as and the squash date: implicit-common-project and git-crypt-pinning (#354), writ-repo-remote (#353), writ-repo-command (#352), archive-root-confinement (#345). Co-authored-by: David Noble <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two cutover-driven changes. (1) git-crypt pinning: snapshot worktree checkouts failed on unlocked git-crypt layers (the smudge filter's key lives in the common git-dir);
gitWorktreeAddresequences to no-checkout → key-dir link → checkout. (2) The reservedcommonproject: the platform-awareness spec (reserved, always matched, implicit) wins over manage-environments' contradictory every-project reading; renamed fromall(Ansible's implicit-all pattern) so the misreading is unspellable.withCommonProjectinjects it into deploy/upgrade selection — never decommission — with unit tests; the scenario fixture and assertions prove the implicit behavior on all three platforms; all three guides reconciled. Proven live: the personal-layer takeover deploys 282/282 healthy with zero new broken links (the guard also caught three committed relative symlinks broken by the rename, repaired on the writ-layer branch). Plans:git-crypt-pinning.md,implicit-common-project.md.