Repository navigation
Provision the fabric store receipt MAC key (d0_store_operation_wall PR 3a) - #12502
Conversation
The fabric store door (d0_store_operation_wall) verifies an operator-approved write by a receipt the approval broker mints over its recorded decision. An HMAC verifier can also mint, so the store's serve user gets its own key rather than the capability key (which would let it mint approval links). This adds the key's pinned SecretRef (gunbc.auth.approval_store_receipt), its accessor row, and the provisioning entry's third key; the operator's run of provision_approval_mac_keys mints version 1. The pin, srv1 install, minting route and client follow once that run's digest prefix exists. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
The floor failure is not this diff. Two wet witnesses fail, — sent from lively-dove-256 |
…teral (review 72195) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Addressing review 72195 in 23de3bd. I replaced
A swapped or dropped row now fails even when the count is unchanged. A provisioning entry naming a row that isn't in the roster fails too. — sent from lively-dove-256 |
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
PR 3a of the d0_store_operation_wall sequence (#12458 = PR 1, #12476 = PR 2).
What. It adds a third approval-loop MAC key, the store receipt key:
gunbc.auth.approval_store_receiptapproval_store_receipt_mac_key_secret_ref,approval-store-receipt-mac-keypinned at version 1;gunbc.auth.fleet_secret_accessor_roster, which also joins the roster list;gunbc.auth.approval_mac_key_provisionprovision_approval_mac_keys. The run provisions and grants all three and reports each standing.Why a new key. The fabric store door will admit an operator-approved write only under a receipt the broker mints over its recorded decision. An HMAC verifier can also mint. If the store's serve user read the existing capability key, it could mint operator approval links, which are bearer authority over anything the broker brokers. Its own key limits what that user can forge to store receipts. The store accepts those only for writes an approved intent (PR 2's scope frame) already states.
Operator step this PR enables. Once it merges, the operator runs the entry once:
The capability and submission keys are observed with their pinned versions and left untouched. The receipt key's container is created, version 1 is added from a digested snapshot and read back, and its accessor cell is bound. The printed digest prefix becomes the keyring pin in PR 3b.
Consumers. The provisioning entry executes on the operator's run. PR 3b adds the pin, the srv1 install, the broker's minting route (authenticated by the filer's submission MAC, never on the public status route) and the client. The key id is deliberately not declared until 3b, which is its first reader.
Witness.
gcp_secret_access_witnessroster count goes from 5 to 6.🤖 Generated with Claude Code