You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 84b416f
Browse filesBrowse the repository at this point in the historyBrowse files
fix(deploy): the sops test asserts the portable fact -- mode bits on unix, the DACL on windows (#580)
#433 expected a production fix and found none owed: DecryptSopsFile already writes the plaintext through the
session root (encryption/provider.go), the deploy environment is confined, and enforceSecretFloor refuses
any mode granting group or other. The write has been enforced all along. What remained was the test asserting
Mode().Perm() == 0600, which reports 0666 on Windows however private the file actually is -- an assertion
with nothing true to say there.
TestExecute_SopsChains now asserts privacy in each platform's own terms through a build-tagged
assertPrivateFile pair: the unix half checks the 0600 mode bits as before; the windows half reads the
access-control list back and requires SE_DACL_PROTECTED, in the shape phase 2's applymode tests established.
The runner now VERIFIES the production DACL on decrypted plaintext rather than assuming it -- if the deploy
path ever stops protecting, the windows leg goes red with this test's name on it.
Expected Windows movement: TestExecute_SopsChains leaves the known-failure set -- the baseline goes 4 to 3,
and the write-path cluster is closed.
Verified with make check (103 packages ok, 0 failures) and make vet under GOOS windows.
Closes#433. Refs #405, #430.
Co-authored-by: David Noble <[email protected]>
Copy file name to clipboardExpand all lines: docs/plans/windows-native-permissions.md
+8-2Lines changed: 8 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -984,9 +984,15 @@ read an unmoved 28 after phase 3 as a failed migration.**
984
984
`document_windows_test.go` DACL read-backs prove protection and the 0o644 boundary, in
985
985
phase 2's shape. The windows leg moves **6 → 4**: `TestWrite_JSONCreatesFileWith0o600`,
986
986
`TestWrite_YAMLCreatesFileWith0o600`.
987
-
-[]**3.4 — the writ deploy/sops output path** ([#433](https://github.com/NobleFactor/devlore-cli/issues/433)) — behind `TestExecute_SopsChains`, and the one
987
+
-[x]**3.4 — the writ deploy/sops output path** ([#433](https://github.com/NobleFactor/devlore-cli/issues/433)) — behind `TestExecute_SopsChains`, and the one
988
988
that writes **decrypted plaintext**, which makes it the second-most security-relevant site in
989
-
the campaign after the private key.
989
+
the campaign after the private key. **Resolved 2026-08-20: production was already correct** —
990
+
`DecryptSopsFile` writes through the session root (encryption/provider.go), the deploy
991
+
environment is confined, and `enforceSecretFloor` refuses non-private modes. What remained was
992
+
the test asserting `Mode().Perm()`, which reports 0666 on Windows regardless; it now asserts
993
+
the portable fact via a build-tagged `assertPrivateFile` pair — 0600 mode bits on unix, a
994
+
protected DACL on Windows — so the runner *verifies* the production DACL rather than assuming
995
+
it. The windows leg moves **4 → 3**.
990
996
-[ ] Exit gate: every restrictive-perm write in these areas flows through a root; a **DACL
991
997
read-back test** proves the private key is protected on Windows, in the shape phase 2's
992
998
`_windows_test.go` established. The 28 does **not** move here.
0 commit comments