7ec6767418af0816f88f7179db585103bdbdae8f
ADR 0582: lease-write is refused, naming each check, until the lease check at phase write and every condition of clause 2 read green (design 47's earlier issues resolved, every node trusting the vault's key, mesh-config's compare empty from the indexer, the upgrade compare empty, the keeper's take-over done, the vault minting with nothing held back, the bus module listing its expiry and removal tools). It asks the operator once; the yes binds the act, the holder, the ask and the checks' digest, and the checks are read again on the warrant (one that reads otherwise refuses it, named). Then, each step read back: node-service-manager.stop on the controller's node, the list composed with Records.LeaseCut and waited on until the bus node's have says it loaded it, the expiry removed through nats_bucket_expiry, the key holder written (with the ask and the time), lease-handed said, the act recorded through mesh-hand-acts.warranted, and removal-due written with a day to live. lease-altered is said once when the key or the expiry differs; lease-hand-back reverses it for a day and is refused once the removal ran; removal-due's marker alone starts the removal of the controller's consumer and the stream ASSIGNMENTS, recorded as hand acts, and a failure says removal-failed and writes the key again with a day (grants_removal_due is the recovery for a missed marker). From the write memberships are written to the state alone (ADR 0571 clause 10), the user-list key says lease-handed, and the user list's hand-back answers gone (ADR 0547 §11). Every step waits on an event, never a timer. Bent rule: S14-S21 are one commit, not eight: the steps are one state machine in leasewrite.go, and splitting it by hunks would review the same file eight times for nothing it protects. Tests: TestTheLeaseWrite (new, one function with a subtest per subtask), paid by the deletion of TestTheKeepListNamesItsRecordsAndThreeToTheWrite (moved to mesh-sdk, S4/S30) and the assigner's two deletions (S25). Fixtures shaped from each writer's code: systemd's Manager.Status, nats-tools' BucketExpirySet, ConsumerRemoved and StreamRemoved, mesh-issues' Brief, mesh-delivery-view's TrustsAnswer, mesh-config's Comparison, the assigner's upgrade compare, mesh-vault's vault_status. (issue 774, 774/S14, 774/S15, 774/S16, 774/S17, 774/S18, 774/S19, 774/S20, 774/S21) Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
mesh-delivery
Novox Mesh — delivery: the parts that build, check and deliver a change by watching and writing keys on the bus (ADR 0429).
Made by the mesh from the gitea module's config value repositories (novox/hq ADR 0428). Main takes no push: a change reaches it by a pull request whose mesh/repo-check (this repository's merge-check.sh) and mesh/merge-gate passed.
Description
Novox Mesh — delivery: the parts that build, check and deliver a change by watching and writing keys on the bus (ADR 0429).
32 MiB
Languages
Go
100%