railiance-platform/workplans/ADHOC-2026-10-10.md
codex 6a394c86de
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
ADHOC-2026-10-10: operators/nextcloud retired
Founder run: entry (2 versions) deleted, operators/nextcloud/backup
unchanged, one-shot token revoked and policy deleted, no value read.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 469992@bnt-lap001
Assistant-Session: e4b8e420-df0a-441d-83ae-7f19130594d9
2026-10-10 15:37:52 +02:00

2.6 KiB

id type title domain repo status owner topic_slug created updated state_hub_workstream_id
RPF-WP-ADHOC-2026-10-10 workplan Retire the deprecated operators/nextcloud credential financials railiance-platform finished claude-code railiance 2026-10-10 2026-10-10 2d2c3bd2-d05b-5adc-9559-4d6bb360b751

RPF-WP-ADHOC-2026-10-10 — retire operators/nextcloud

Delete the deprecated base entry, keep operators/nextcloud/backup

id: RPF-WP-ADHOC-2026-10-10-T01
status: done
priority: low
state_hub_task_id: "d7b91134-13cf-55b8-9291-14efca9465d6"

The founder confirmed on 2026-10-10 that operators/nextcloud (the base entry) is a deprecated credential to remove. The live backup account stays at operators/nextcloud/backup. The delete cannot be done from the UI by design: operator-custody is delete-free and platform-admin has no grant on the operators mount (openbao/policies/operator-custody.hcl).

scripts/operators_entry_retire.py does it without granting anything standing. As platform-admin it writes a one-shot policy (read/delete on operators/metadata/nextcloud, read on the backup sibling's metadata, revoke-self) and mints a 60s, 8-use orphan token holding only that policy. It proves the entry and the sibling exist, then metadata-deletes the entry with that token. It then proves the entry is absent and the sibling unchanged, revokes the token and deletes the policy on every path. It prints nothing and reads no value. 7 offline tests.

cd ~/railiance-platform && git pull --ff-only
export BAO_ADDR=http://127.0.0.1:18200 VAULT_ADDR=http://127.0.0.1:18200
unset BAO_TOKEN VAULT_TOKEN
W='warden access openbao-platform-admin-login --exec --'
$W python3 scripts/operators_entry_retire.py --dry-run --confirm 'RETIRE operators/nextcloud' --receipt ~/operators-nextcloud-dry.json
cat ~/operators-nextcloud-dry.json
$W python3 scripts/operators_entry_retire.py --confirm 'RETIRE operators/nextcloud' --receipt ~/operators-nextcloud-retire.json
cat ~/operators-nextcloud-retire.json

Done when: the receipt says retired, with sibling_after equal to sibling_before, token_revoked and policy_deleted true; and ops-mason drops operators/nextcloud from its custody descriptions.

2026-10-10 done: the founder ran the dry run and then the retirement. Outcome retired: operators/nextcloud (2 versions) was deleted, and operators/nextcloud/backup is unchanged (v2, 2 versions). The token was revoked and the one-shot policy deleted; no value was read. Evidence: docs/evidence/2026-10-10-operators-nextcloud-retire.json. ops-mason was told to drop the entry from its custody descriptions.