email-connect/deploy/closure/plan.json
tegwick f77e2333af
Some checks failed
Transactional mail acceptance / mail (push) Failing after 46s
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Retain independent ledger recovery custody and activate verified backups
Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a11fd9-caf6-7a63-b578-9daaaa134ff2
2026-10-10 13:39:49 +02:00

157 lines
6.6 KiB
JSON

{
"schema": "email-connect.closure-plan.v1",
"status": "prepared",
"existing_backup_publisher": {
"application": "email-connect-backup-primary",
"application_id": "0eb0f958-77a4-4c70-9aa7-14ba46411415",
"bucket": "railiance-platform-pg-backup",
"prefix": "platform-pg/application-archives/email-connect/",
"retain_for_routine_backups": true,
"escrow_or_administration_grant_inferred": false
},
"receiver_image": "forgejo.coulomb.social/coulomb/email-connect@sha256:5d79fd1fec15d3a279383820f170d263de3a55f5308df01a0a34732ebaea6d3d",
"user_engine_image": "forgejo.coulomb.social/coulomb/user-engine@sha256:312dcb062b237c518148e1b4f09798a4e6ad08bc60d4add6834aab3f246f2002",
"user_engine_live_baseline": "0d0751d",
"user_engine_patch_sha256": "1fd705f1917f6c14cce69ae75b53ccbf1a2d9eee45561a72ae524a497d9f036e",
"caller_policy": {
"schema_version": 1,
"callers": [
{
"caller_id": "user-engine",
"source": "user-engine",
"token_file": "/var/run/secrets/email-connect-callers/user-engine",
"bindings": [
[
"tenant:coulomb",
"coulomb-social"
]
],
"binding_patterns": [
[
"tenant:*-family",
"coulomb-social"
],
[
"tenant:family-*",
"coulomb-social"
]
],
"operations": [
"send",
"delivery-status",
"status",
"verify",
"consume",
"cancel"
],
"templates": [
"family_member.invited",
"family_invitation.resent"
],
"rate_per_minute": 10,
"burst": 5,
"max_payload_bytes": 8192,
"adopt_legacy_verifications": true,
"adopt_legacy_invitations": true
}
]
},
"caller_custody": {
"kv_path": "platform/workloads/email-connect/callers/user-engine",
"field": "TOKEN",
"initial_cas": 0,
"writer_policy": "email-connect-scoped-caller-writer",
"reader_policy": "email-connect-scoped-caller-reader",
"readers": [
{
"namespace": "email-connect",
"service_account": "email-connect-scoped-caller-eso",
"role": "email-connect-scoped-caller-eso",
"store": "openbao-email-connect-scoped-caller",
"secret": "email-connect-caller-user-engine",
"secret_key": "token"
},
{
"namespace": "user-engine",
"service_account": "user-engine-scoped-mail-eso",
"role": "user-engine-scoped-mail-eso",
"store": "openbao-user-engine-scoped-mail",
"secret": "user-engine-scoped-mail",
"secret_key": "token"
}
]
},
"backup": {
"recovery_mirror": {
"project_id": "1d37ea63-8c8f-44e1-80e1-2de862579ba7",
"bucket": "railiance-email-connect-archives",
"prefix": "archives/",
"verified_copy_required_before_success": true,
"versioned_recovery_receipt_required": true,
"retention_days": 30
},
"schedule_utc": "04:15",
"jitter_seconds": 300,
"rpo_target_hours": 24,
"stale_threshold_hours": 26,
"attended_rto_target_minutes": 60,
"minimum_node_free_bytes": 8589934592,
"local_budget_bytes": 8589934592,
"daily_generations": 14,
"weekly_generations": 4,
"provider_archive_retention_days": 30,
"retained_recovery_point_copied_to_escrow_kit": true,
"automatic_retained_object_deletion": false,
"failure_recipient": "platform-root",
"retention_operator": "platform-root",
"retention_review_interval": "weekly",
"retention_execution": "Separate owner-operated expiry; publisher never deletes retained objects",
"incident_restore_requires_fencing_and_post_capture_reconciliation": true
},
"scaleway_recovery": {
"region": "nl-ams",
"secret_manager_name": "email-connect-ledger-age-recovery",
"secret_manager_protected": true,
"secret_manager_ephemeral_policy": null,
"kit_bucket": "railiance-email-connect-recovery",
"kit_prefix": "kits/",
"kit_lifecycle": null,
"kit_versioning": "Enabled",
"kit_contents": [
"age-encrypted-ledger",
"public-transfer-and-recovery-receipts",
"pinned-receiver-image",
"recovery-tools",
"SHA256SUMS"
],
"private_age_identity_in_kit": false,
"scheduled_worker_escrow_access": false,
"recovery_caller": "Separate read-only IAM application; effective prefix/bucket denial proofs required",
"independent_entry": "platform-root Scaleway account; credentials held only on railiance01 do not qualify"
},
"activation_order": [
"Approve exact plan and perform attended caller custody and Scaleway admission",
"Deliver two bounded ESO projections and privately verify matching caller credentials",
"Freeze user-engine dispatch, capture current ledger and resume receiver",
"Apply coordinated immutable receiver/user-engine images and scoped policy",
"Verify health, denial, limits, accepted/unknown continuity and original handles without mail",
"Repin capture/rehearsal together; refresh and independently read back recovery kit",
"Enable daily backup/hourly freshness after independent custody and retention proofs",
"Finish workplans only after all admitted custody and operating proofs are present"
],
"artifacts": {
"deploy/closure/caller-reader.hcl": "cbc57e731c4fd9dbbaf98364de8ff87ed2966df18c2235cf298ffda963bf7553",
"deploy/closure/caller-writer.hcl": "a56013092fa6f0dff9282676ba1e94d5bbf37c2dc481232188f68a1ce543510c",
"deploy/closure/caller-delivery.json": "6fed12e204533ec679e80b3d9d0ba814cbf1d6f91a5a02211f0334617a92b0eb",
"deploy/closure/receiver.patch.json": "449ce8456323347eca81190e2ccca334c90397c6699498466308bf8bfe63a9de",
"deploy/closure/user-engine.patch.json": "2cae6ea6259ac1031fb7b8b11f011686baad8cb576cd72ee3f74461924daef46",
"scripts/admit-scoped-caller.py": "17bf68f85f0bb08b3ca89eee34e62e794ee4754fbbb21646c28c85a1c1dd0e0e",
"scripts/scaleway-recovery-custody.py": "85874f0620dc9353a9aaae1194db054de166296c4385743e4d541bbe42486c15",
"scripts/publish-ledger-recovery-kit.py": "cd7c6e8e6a4e8417ba55f8170d763d7c5a9e6dd9b5878dc3459021a0b64ea732",
"scripts/prepare-ledger-recovery-kit.py": "8cf74c9ea300c5ff6a03282293ba76ea0516fbd16f841259ca70f563c9e82d2b",
"scripts/rehearse-ledger.py": "5c43b655149d8ae577fab80e76358be35f90cb0357df9b726ac7cb23346946a0",
"scripts/backup-ledger.py": "0bbef692208bd6b1f6e06f3ae969c01fb86cc2078529e2eb598f370b0363e99f",
"scripts/mirror-ledger.py": "abefb951dbdb4212f914a7701cfe0e7121e2c2643bf9f6892a0fc97fa6da760d",
"scripts/capture-ledger.py": "7994fe7b4fbf72e28a4296212005a88d0ef9fcb626b066e6bcf2885500bc69d6"
}
}