settings-1-pointer-digests
#253: digest-bound channel pointers (instance update settings spec §4.6, plan 1). Paul approved the merge; origin/main (zdd-1, zdd-4, zdd-2 at 218b7454) is merged in.
Pointers gain digest and historydigests inside the signed payload (additive; old binaries verify them). Every writer follows the provenance rule: computed at promotion from the shipped manifest, or copied verbatim; never computed for an inherited entry. A promote or approved rollback onto a history entry is bound to that entry's signed digest. Writers emit digests only while the root-signed marker releases/<acct>/pointer-digests exists (classified for the host-claim boundary). Rollback onto a digest-less entry of a digest channel is refused whether or not the marker is on. Root, the agent and the edge's static reader check the manifest digest before staging or extracting. With a digest, staging uses exactly the checked manifest, and zdd-4's pin-set rule still governs a mismatched staged copy: restaged if unreferenced, refused if referenced. Without a digest, staging is main's path unchanged. Sibling writes keep raw bytes. The static cache is keyed by digest. Per-box ratchets (flat marks under /opt/carlos/pointer-digests and /data/pointer-digests, fail closed) and CARLOSREQUIREPOINTERDIGEST. carlos channels resign (operator-confirmed; through a console it takes the channel's rollback authority) and carlos channels digests; the console lists stragglers and unreadable channels.
Copy approved by Paul on 2026-10-08, all 33 strings unchanged (docs/superpowers/plans/2026-10-07-instance-settings-1-copy.json), pinned by approvedcopydigests_test.go. Astra: REJECT at bb343ec3, one fix wave, ACCEPT WITH FIXES at d04e7634; merge with main ACCEPT at c385f2eb (docs/superpowers/plans/CODEX-FINDINGS-SETTINGS-IMPL-1*.md). One Minor test-coverage residual parked.
Inert until carlos channels digests on. Roll order is in README: writers before readers.
Discussions
- No discussions on this branch yet.
Tasks
- No tasks yet.
Activity
- claude agent, operated by paul@keymail.dev pushed 46279a10b settings-1: Astra review of the main merge (ACCEPT at c385f2eb)
- claude agent, operated by paul@keymail.dev pushed c385f2eb5 Merge origin/main into settings-1-pointer-digests: compose digest-bound staging with zdd-4's pin-set reuse rule
- claude agent, operated by paul@keymail.dev pushed 4c06d1e45 settings-1 task 14: apply the approved copy and pin it
- claude agent, operated by paul@keymail.dev pushed 1bd641942 settings-1 task 1: approved copy for pointer digests
- claude agent, operated by paul@keymail.dev pushed 79e4b5b76 settings-1: Astra final review findings (REJECT at bb343ec3; ACCEPT WITH FIXES at d04e7634)
- claude agent, operated by paul@keymail.dev pushed d04e7634e settings-1 final fixes: one definition of the rate-limit refusal
- claude agent, operated by paul@keymail.dev pushed 2dac4b1af settings-1 final fixes: digests CLI tests derive every expectation
- claude agent, operated by paul@keymail.dev pushed 17356c7c1 settings-1 final fixes: ratchet tests through the production builders
- claude agent, operated by paul@keymail.dev pushed 1a4d99fa0 settings-1 final fixes: an unreadable channel makes the digests report incomplete
- claude agent, operated by paul@keymail.dev pushed 8fe785493 settings-1 final fixes: history-target refusals hold with the marker off
- claude agent, operated by paul@keymail.dev pushed aaf5abb11 settings-1 final fixes: resign takes the channel's release authority
- claude agent, operated by paul@keymail.dev pushed dcab1cf4a settings-1 final fixes: ratchet marks fail closed and never collide
- claude agent, operated by paul@keymail.dev pushed bb343ec3a settings-1 task 13: docs for resign and digests; the writers-before-readers roll note
- claude agent, operated by paul@keymail.dev pushed 461b82bfa settings-1 task 12: digests listing reports failed accounts
- claude agent, operated by paul@keymail.dev pushed ed3be370a settings-1 task 12: carlos channels resign and digests, and the DIGESTS column
- claude agent, operated by paul@keymail.dev pushed 44912c42e settings-1 task 11: console doors for resign and pointer digests
- claude agent, operated by paul@keymail.dev pushed 7cb633b70 settings-1 task 10: resign binds the account on legacy pointers
- claude agent, operated by paul@keymail.dev pushed d36e4cf23 settings-1 task 10: resign with operator-confirmed digests, and the digest report
- claude agent, operated by paul@keymail.dev pushed 9da43d1b0 settings-1 task 9: static sites check pointer digests and key their cache by them
- claude agent, operated by paul@keymail.dev pushed ae5e811b8 settings-1 task 8: one pointer digest ratchet per process, armed by root and the agent
- claude agent, operated by paul@keymail.dev pushed 345aa02ec settings-1 task 7: adoption checks the signed manifest digest before staging
- claude agent, operated by paul@keymail.dev pushed af49b4065 settings-1 task 6: the per-box pointer digest ratchet
- claude agent, operated by paul@keymail.dev pushed 4c531a4fd settings-1 task 5: promote, rollback and fast-track follow the digest provenance rule
- claude agent, operated by paul@keymail.dev pushed 9a0f4b3e2 settings-1 task 4: the root-signed pointer digest marker
- claude agent, operated by paul@keymail.dev pushed 83a57dab1 settings-1 task 3: nil-safe ChannelHasDigests
- claude agent, operated by paul@keymail.dev pushed b56d038c7 settings-1 task 3: channel pointers carry manifest digests
- claude agent, operated by paul@keymail.dev pushed b83486b7d settings-1 task 2: manifest digests and GetManifestRaw