Skip to content

feat(writ): the reserved common project + git-crypt-aware pinning - #354

Merged
David-Noble-at-work merged 2 commits into
developfrom
feat/implicit-common
Aug 9, 2026
Merged

David-Noble-at-work merged 2 commits into
developfrom
feat/implicit-common

Conversation

@David-Noble-at-work

Copy link
Copy Markdown
Contributor

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); gitWorktreeAdd resequences to no-checkout → key-dir link → checkout. (2) The reserved common project: the platform-awareness spec (reserved, always matched, implicit) wins over manage-environments' contradictory every-project reading; renamed from all (Ansible's implicit-all pattern) so the misreading is unspellable. withCommonProject injects 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.

David Noble 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 David-Noble-at-work self-assigned this Aug 9, 2026
@David-Noble-at-work
David-Noble-at-work merged commit cbc2b71 into develop Aug 9, 2026
5 checks passed
@David-Noble-at-work
David-Noble-at-work deleted the feat/implicit-common branch August 9, 2026 07:50
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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant