Steward-owned second deployment stop named by the binding #5
Loading…
Reference in a new issue
No description provided.
Delete branch "eureka-self/brake-steward-store"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Follow-up
idunn-deploy-provenance:follow_up:steward-brake-cuts(decisions inchat-mind-20261113T125202436Z-t51); cut_specidunn-deploy-provenance:cut_spec:cut-brake-steward-store.r1. Second brake cut, on top of #4 (58e744b7).A target's operator binding may name one steward (
[brakes.steward] user, store). Idunn reads the steward's store as a second stop beside the operator's: a deploy admits only if every stop admits. The file's owner uid is the proof of who wrote it (the steward's uid, resolved at read time); an unknown or root user, a foreign-owned file, a symlink or an unreadable store fails closed with a remedy that names the steward as the only one who can repair it. The steward engages and clears with the existingidunn-provision deployment-brake-engage|clear --store <own path>, no root, no group, no ACL, no key; root reads it withstatus --owner-user. The operator's store stays a stop the steward cannot clear: validation refuses a steward directory shared with, inside or around any authority store directory. The wait note names the steward by the binding's user, never the record's self-declaredby. No persisted record changes (the binding is plan text), so no schema bump; existing bindings parse unchanged.Tests: 586 passed / 107 failed on the branch; the 107 are root-only tests also failing on base
58e744b(a strict subset of base's 108 by name; the one difference is a load flake). Seven new tests, four mutations proven (owner check, store ignored, engaged-as-clear, clear drops the operator stop) plus the directory check, the note label and the remedy text. Soul: accepted with one required fix (shared directory) and doc fixes; all applied inc13e175. Soul ran the builtidunn-provisionas a non-root uid in a temp directory to prove the no-root path.Not verified: real two-uid behaviour on Yggdrasil (steward-only write access, root reading another user's file,
EACCESacross targets), nsswitch failure and uid reuse. An in-flight plan keeps its sealed binding (documented). Deploy nothing.🤖 Generated with Claude Code
BrakeBinding.steward = { user, store }. read_stops reads the operator store as before and the steward store with the steward user's uid as the expected owner, so the file owner proves who wrote it. Deploys admit iff every stop admits; the wait note names each holding stop. Binding is stored as text in the plan, so no persisted record changes. deployment-brake-status gains --owner-user for the operator to read a steward's store. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>