Skip to content

Reconcile Sponsor CRM table ownership with CloudFormation #143

Description

@alexeygrigorev

Reconcile Sponsor CRM sandbox table ownership with CloudFormation

Status: blocked — the AWS target is confirmed sandbox-only; waiting for an authorized HUMAN to classify the existing sandbox source table and explicitly state whether any data loss is acceptable, followed by fresh Architecture/Security proportionality review
Tags: bug, infra, data, migration, testing, P1
Depends on: None — #140/#141 historical evidence remains valid context; #141 is not a blocker and must not be recollected without a newly identified exact-pair source
Blocks: #136
Next owner: authorized HUMAN data owner/operator for the Phase 0 classification record
Resume condition: one sanitized Phase 0 classification statement records either (A) real/private/unknown data or loss not accepted, or (B) independently proven fresh synthetic/disposable data with explicit total-loss acceptance; then Architecture and Security perform a fresh proportionality review before Support contact, reset design, AWS calls, repository changes, or mutation

Authoritative boundary and objective

The existing target is the live dataops-v1 application stack in the DataOps sandbox AWS account and eu-west-1. The existing Sponsor CRM table is the sandbox source table. There is no production AWS account, production stack, production cutover, or production environment in this issue. The #145/#136 migration uses the existing exact main-branch OIDC trust with no GitHub Actions environment; that identity choice does not establish ownership.

Sandbox account placement does not classify the current table contents, prove that the table is disposable, authorize data loss, or weaken ownership requirements. Until Phase 0 independently proves otherwise, the table, its items, keys, diagnostics, backups, exports, restores, and derived integrity evidence retain source-equivalent private/operational confidentiality.

#140 and #141 found one historical table-creation event but no trusted record binding its historical table identifier to the exact CloudFormation stack incarnation. Preserve that historical evidence and every existing issue comment. Do not infer ownership from account placement, a same-name ARN, current logical/physical mapping, schema, current table identifier, or missing/present tags. Do not manually create reserved aws: tags. #136 remains blocked until an exact supported ownership end state and integrity outcome are independently accepted.

This grooming authorizes no AWS call, private-evidence inspection by an agent, Support contact or disclosure, backup, export, restore, import, detach, replacement, deletion, tag, change set, deployment, migration, environment change, repository/workflow mutation, data mutation, or cleanup. Each later action requires its named gate below.

Phase 0 — HUMAN source-data and loss classification

Before selecting a remediation route, an authorized HUMAN data owner/operator must classify the current sandbox source table using authentic records and evidence retained inside the approved private boundary.

  • State whether the table is independently proven fresh synthetic/disposable, or contains real/private operational data, or remains unknown.
  • State whether complete loss of the current table and all contained records is explicitly acceptable. Silence, sandbox naming, low item count, apparent emptiness, reconstructability assumptions, or lack of recent use never counts as acceptance.
  • Identify privately the accountable data owner, classification authority, evidence sources, UTC decision time, evidence digest, scope, and any retention/legal/operational dependency.
  • Confirm whether any application, operator, workflow, stream, scheduled process, integration, backup, audit requirement, or downstream record depends on the current table.
  • Publish only one sanitized classification statement; do not publish item data, counts that disclose private activity, identifiers, screenshots, commands, private locations/links, credentials-adjacent details, or raw evidence.

Use one of these public forms:

Protected-data route: The existing sandbox source table contains real/private operational data, its classification remains unknown, or total loss is not explicitly accepted. Authentic classification evidence and accountable ownership are retained privately. No AWS or repository action occurred.

Reset-candidate route: The existing sandbox source table is independently proven fresh synthetic/disposable, contains no real/private operational data, has no retained dependency, and an authorized owner explicitly accepts complete loss within the recorded scope. Authentic classification and loss-acceptance evidence are retained privately. No AWS or repository action occurred.

Any ambiguity selects the protected-data route. No criterion in this issue is checked merely because the account, stack, domain, or workflow is named sandbox.

After the statement is posted, Architecture and Security must freshly review whether the evidence supports the selected route and whether the controls are proportionate. Their review approves a route for further grooming only; it does not authorize an AWS call or mutation.

Route A — protected ownership reconciliation

Route A is mandatory when data is real/private, classification is unknown, loss is not explicitly accepted, a dependency exists, or Architecture/Security do not accept the reset-candidate proof.

A1. Support guidance and read-only diagnosis

  • [HUMAN] Through an approved phase-scoped identity and minimum disclosure, obtain authenticated AWS Support guidance about the current sandbox table's CloudFormation association and supported repair choices.
  • Ask whether the supported choices are association repair, retain/detach/import of the existing table, or restore/replacement under a new physical name; identify unsupported/destructive steps, import prerequisites, and named-resource constraints.
  • Keep the response, source, scope, retrieval time, authenticity evidence, and digest private. Publish only a sanitized sufficiency decision.
  • Architecture and Security classify the guidance as sufficient, ambiguous, or requiring escalation. Ambiguity fails closed.

If Support supplies an authoritative exact historical stack↔table binding, stop and request fresh #140 Architecture/Security review. Historical route A does not become authorized automatically.

A2. Immutable baseline and recoverability

Before any ownership mutation, the private runbook must define and independently verify:

  • exact current stack/resource association, table identity, schema, keys/indexes, billing/capacity, encryption, TTL, streams, PITR, deletion protection, replicas, tags, alarms, application dependencies, and deployment state;
  • deterministic key/item integrity with stable canonical serialization, complete pagination, exact counts, duplicate/missing-key checks, and point-in-time write reconciliation;
  • a verified retained recovery source with exact source/time/KMS/access/retention/restore eligibility and rollback availability;
  • source-equivalent confidentiality, private evidence handling, retention holds, cleanup owner, and verified deletion/revocation after the hold ends.

Any backup/export action is a separately named, cost-bounded HUMAN-approved phase after Architecture, Security, Tester, and PM accept the frozen plan.

A3. Isolated rehearsal

  • Use only a separately approved isolated sandbox target with a unique non-live name, approved KMS/access, no production or external traffic, no integrations or uncontrolled egress, and explicit time/load/cost ceilings.
  • Restore/reconstruct configuration, run complete deterministic integrity checks, rehearse the selected ownership path, preview exact CloudFormation effects, prove final managed association, and exercise rollback without touching the live source table.
  • Abort on mismatch, replacement/delete drift, throttling risk, permission expansion, evidence leak, unaccounted writer, or unavailable rollback.
  • Cleanup requires separate HUMAN approval after evidence/rollback holds are cleared.

A4. Select one supported CloudFormation path

Architecture and Security select exactly one Support-backed path and reject the others:

  1. retain/detach/import the existing table, with effective DeletionPolicy: Retain and UpdateReplacePolicy: Retain, separate removal/import operations, exact import identifiers, and no delete or fabricated reserved tags;
  2. restore/rebuild under a unique new sandbox physical name, with complete configuration reconstruction, writer reconciliation, application cutover, rollback, and retained old table through the observation window; or
  3. an exact association-repair procedure supplied and confirmed by AWS Support for this case, subject to the same recovery, rehearsal, integrity, preview, rollback, and approval gates.

A5. Frozen live-sandbox runbook and execution gates

The private runbook must enumerate ordered actor/action/API steps, immutable inputs, expected outputs, identity/session checks, approval provenance, exact allowed operations, waits, monitoring, load/cost/time ceilings, rollback, cleanup, and abort criteria. Publish only its sanitized digest and decision.

Fresh gates are required in this order for every named mutation phase:

  1. Architecture accepts the selected supported path and exact ownership end state.
  2. Security accepts access, evidence, confidentiality, destructive boundaries, rollback, and abort controls.
  3. Tester accepts rehearsal and deterministic integrity evidence.
  4. PM accepts scope, operator flow, impact, cost, owners, and recovery.
  5. [HUMAN] An authorized operator approves the exact named phase and frozen runbook digest immediately before it begins.
  6. On-Call verifies the resulting sandbox ownership/integrity state and approved CI/CD path.

Approval for one phase never authorizes another. Material drift returns to review.

Route B — separate reset candidate, never inferred

This issue does not authorize reset, deletion, replacement, recreation, or data loss.

Only when Phase 0 independently proves fresh synthetic/disposable data, an accountable owner explicitly accepts complete loss, and fresh Architecture/Security accept that proof may PM groom a separate reset implementation issue. That issue must name the exact sandbox stack/table boundary, prove no real/private data or downstream dependency, define supported CloudFormation ownership creation, identify every destructive call and resource effect, preserve least privilege/audit/redaction, include abort and rollback/reseed behavior, require Tester and PM acceptance, and place a separate digest-bound HUMAN approval immediately before each destructive phase.

If any proof fails or drifts, return to Route A. A reset route may not weaken #136's exact ownership guard, fabricate reserved tags, use a tagless exception, rename or target a production account, or treat sandbox naming as authorization.

Global access, confidentiality, audit, and freeze contract

These controls apply to classification follow-up, Support disclosure, reads, backup/export, rehearsal, ownership work, any separately groomed reset, rollback, and cleanup:

  • Use short-lived, uniquely attributable, phase-scoped credentials with exact account, region, resources, actor, expected principal, issuance/expiry, MFA/approval provenance, and minimum action/resource scope. Separate read and mutation sessions where practical. No shared/static credentials, broad administrator session, rehearsal access to unrelated data, or deploy-OIDC broadening.
  • At entry and immediately before mutation, prove principal/account/region/resource/session and frozen inputs. Reconcile exact allowed versus observed APIs/actions/resources; any extra permission, unexpected call, identity drift, or expired session aborts. Verify session expiry/revocation at exit.
  • Keep source data and derived artifacts private and encrypted in transit/at rest with approved KMS/access/isolation. No public/cross-account access, unintended integrations, event sources, webhooks, scheduled writers, stream consumers, production credentials, or uncontrolled egress.
  • Item bodies, keys, raw output, per-item hashes, identifiers, Support correspondence, screenshots, and private paths/links never enter public logs or issues. Any public digest must use a Security-reviewed disclosure-resistant construction.
  • Every phase uses a reviewed private audit/redaction mechanism recording UTC actor/session/action/result/state transition while suppressing sensitive output. A leak or evidence mismatch is an immediate ABORT and containment event.
  • Before snapshot/integrity work or mutation, enforce a technical deploy/change/write freeze and inventory all writers/mutators, including application retries, TTL, streams, schedules, async consumers, operators, workflows, event mappings, integrations, and Migrate Sponsor CRM GSIs in a protected stage-only workflow #136. Require quiescence or complete ordered capture/reconciliation through rollback. Freeze release is explicit.

Repository and workflow lifecycle

Any repository, workflow, SAM/CloudFormation, infrastructure-template, validation, or operator-facing change follows the complete PM → Software Engineer → Architecture/Security where required → Tester → PM acceptance → commit with Refs #143 → local merge/push → On-Call lifecycle. A credentialed HUMAN infrastructure apply is separate and does not replace repository review.

If the selected supported route requires no repository change, PM records an explicit no-change disposition. No Support response, private runbook, sandbox classification, or HUMAN approval retroactively authorizes an unreviewed change.

Required final verification

  • Phase 0 classification and loss decision are independently accepted; sandbox naming alone satisfied nothing.
  • The selected route has fresh Architecture and Security proportionality decisions.
  • CloudFormation reports the intended exact logical↔physical association and healthy resource state through read-only checks.
  • Canonical ownership evidence is exact; no manual reserved-tag creation or generic tagless exception exists.
  • Full schema/configuration and route-proportionate integrity checks pass against the accepted baseline or reset proof.
  • No unapproved delete, replacement, retag, permission expansion, workflow dispatch, deployment, environment change, flag enablement, migration, queue action, or cleanup occurred.
  • Exact sanitized operation inventory, state transitions, decisions, digests, downtime/load/cost, and PASS/FAIL/ABORT outcomes are recorded without private identifiers.
  • Architecture, Security, Tester, PM, HUMAN, and On-Call record required final decisions before Migrate Sponsor CRM GSIs in a protected stage-only workflow #136 advances.

Test scenarios

Sandbox name but unknown/private contents

Select Route A. No reset, loss acceptance, or weakened proof is inferred.

Synthetic claim lacks independent evidence or accountable loss acceptance

Fail closed to Route A. Do not groom or execute reset.

Fresh synthetic/disposable proof and explicit total-loss acceptance pass review

PM may groom a separate reset issue. This issue still authorizes no destructive action.

Support guidance is ambiguous or proposes an unsupported shortcut

Stop and escalate. Do not tag, import, replace, reset, or migrate.

Recovery/rehearsal/integrity/access evidence fails

Abort before the next action, preserve the sandbox source table and recovery evidence, and return to review.

Identity, writer inventory, operation inventory, or frozen plan drifts

Abort. Expire/revoke the session and require a fresh reviewed plan.

Out of scope

  • Recollecting Provide one short-lived CloudTrail Event History audit session #141 without a newly identified exact-pair source.
  • Assuming data is disposable from sandbox/account/domain/environment naming.
  • Contacting Support or inspecting private evidence by an agent under this grooming step.
  • A tagless migration exception, weakened Migrate Sponsor CRM GSIs in a protected stage-only workflow #136 checks, or manual reserved-tag creation.
  • An unreviewed reset, delete/recreate, import, replacement, backup/export, restore, deployment, migration, flag, smoke/seed, queue, or cleanup action.
  • Renaming the existing stack/table/role merely to add sandbox to its name.
  • Targeting or designing a production AWS account rollout.
  • Publishing raw operational knowledge, evidence, identifiers, item data, Support material, private links/paths, or credentials-adjacent setup details.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1ImportantbugSomething is brokendataData model, migration, storageinfraDeployment and infrastructuremigrationImport or migration worktestingTests and QA

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions