The helper checks both draft archive CCRs and refuses a CAS write until the writer identity is admitted. No provider key is created. Assistant: grok Assistant-Session: 01a11cdb-f9fe-7011-947c-936e72007e54
1.6 KiB
Backup publisher pair custody — preview, 2026-10-08
RPF-WP-0053-T06. The node reader in scripts/application_backup_credentials.py
can deliver an already stored pair. It cannot create one. Warden's paste-once
desk writes one field per PUT and would drop the other half of
AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY.
scripts/application_backup_pair_custody.py is the prepared front door for
both draft records:
| Application | CCR | KV path |
|---|---|---|
| coulomb-social | CCR-2026-0036 | platform/workloads/coulomb-social/backup-primary |
| email-connect | CCR-2026-0037 | platform/workloads/email-connect/backup-primary |
Default command:
python3 scripts/application_backup_pair_custody.py --application email-connect
The preview reads the draft CCR and prints field names, CAS 0 and one intended
write. writer_admitted is false. There is no stdin, provider call, OpenBao
call, key generation, file write or timer change.
provision() is the future attended shape, covered by synthetic tests only:
- writer token policies must be exactly
backup-pair-writer, with no default policy and noworkload-kv-read-*-backup-primaryreader policy - TTL at most 5 minutes and at most 2 uses, then revoke
- metadata absence is required; an existing version is not overwritten
- one HTTP-style body carries
cas: 0and both fields - the receipt keeps version and request id, never the values
WRITER_ADMITTED stays false, so that function refuses before any transport
call. No Scaleway IAM application or key was created. CCR-2026-0036 and
CCR-2026-0037 stay draft. EMAIL-WP-0007-T03/T04 stay waiting on this admission.