Skip to content

ci: retire dead staging-deploy fossil + add prod deploy template - #338

Open
stkrolikiewicz wants to merge 1 commit into
masterfrom
ci/deploy-workflow-cleanup
Open

ci: retire dead staging-deploy fossil + add prod deploy template#338
stkrolikiewicz wants to merge 1 commit into
masterfrom
ci/deploy-workflow-cleanup

Conversation

@stkrolikiewicz

Copy link
Copy Markdown
Collaborator

What

  • Remove deploy-staging.yml — a fossil. It targeted a us-east-1 staging env (staging.json / Explorer-staging-* / staging.sorobanscan… with basic-auth) that no longer exists (verified: 0 Explorer-staging-* stacks in us-east-1). Trigger was staging-* tags (never pushed) → dead/unused.
  • Add deploy-production.yml as a POST-LAUNCH TEMPLATE — deliberately not wired in.

Why

Prod runs in eu-central-1 (10 Explorer-production-* stacks), deployed manually via make deploy-production-*. There was no automated prod-deploy path, and the staging workflow pointed at a torn-down environment — misleading.

The new template (safe by design)

  • workflow_dispatch only — won't auto-run; no push/tag triggers until a release cadence is decided.
  • build → cdk diff (prints) → manual approval gate (production environment, required reviewers) → deploy.
  • Deploys a chosen stack (input), not a blind --all — mirrors the operational lesson that a full compute deploy ships unrelated indexer/enrichment drift as a side effect. Supports --exclusively.
  • Smoke: API /health + public frontend.

Not enabled — prerequisites (post-launch, deliberate)

  1. Create GitHub production environment with required reviewers (the human gate).
  2. Secrets: AWS_DEPLOY_ROLE_ARN, AWS_ACCOUNT_ID.
  3. Frontend SPA content sync stays separate (make deploy-production-web).

Header comment in the file documents all of the above. Until the environment + secrets exist and someone dispatches it, this file does nothing.

deploy-staging.yml + scripts/staging-deploy.sh were fossils (us-east-1 staging env gone: 0 stacks; dead staging-* tag trigger; bin/staging.ts + staging.json already removed). Add deploy-production.yml as a dispatch-only POST-LAUNCH template: build -> cdk diff -> manual approval gate -> per-stack deploy -> smoke. See task lore-0390.
@stkrolikiewicz
stkrolikiewicz force-pushed the ci/deploy-workflow-cleanup branch from cc2f2fd to d1aa049 Compare July 14, 2026 14:23
karolko9 added a commit that referenced this pull request Jul 22, 2026
Closed via the task's own option 4 / AC3 ("if not viable: task canceled
with documented rationale"), not by fiat.

The task shaves ~5 min off no-op deploys to a staging environment that
does not exist: task 0390 verified 0 `Explorer-staging-*` stacks in
us-east-1, and docs/deployment.md records production as the only
environment. The file it is blocked on, `.github/workflows/
deploy-staging.yml`, is being deleted by PR #338.

Cancelled rather than re-scoped because the idea does not transfer:
production deploys are manual and infrequent, so there are no no-op runs
to skip. The one durable finding — passing `-c galexieImageTag=$SHA`
makes `cdk diff` report a change on every commit, docs-only included —
is handed to 0103, which owns the production workflow.

Found while sweeping the 100 open tasks; the pre-pivot ones are where
this kind of rot concentrates.
karolko9 added a commit that referenced this pull request Jul 22, 2026
Sweep of the 100 open tasks. Each claim below was re-verified against
prod or the tree today before being written down; no verdict is carried
over from the task text.

Premise inverted or overtaken:
- 0259: cites 49M rows in the NFT quarantine against empty canonical
  tables. Measured: nfts_pending 274, nft_ownership_pending 492,
  canonical nfts 13,053, nft_ownership 21,600.
- 0088: assumes the parser/API tests do not exist. Counted: 890 Rust
  tests, 322 in xdr-parser, 244 in api. priority-high/effort-large now
  outranks genuinely open work.
- 0215, 0211: both gate on "the price API does not exist yet". It does —
  37 tables, 593.6M rows, 122,706 assets, history from 2024-02-20.
- 0256: says to re-run compare_e11.py. That script is not in the repo
  and never was, across all refs.

Half-done, scope narrowed:
- 0310: the engine swap is already in place; the dead-column drop
  stands and is stronger than stated (25 non-zero of 361,015 rows).
- 0103: 0390 covers the core workflow; ECR mirroring and the /health
  smoke test are not covered and remain here. Also records that 0390 is
  unmerged (PR #338).
- 0313: the server half shipped with 0292; this is verification plus one
  CORS header.

Verdict corrected against my own first pass:
- 0322: the engine swap it asks for IS done, but the effect it promises
  is not. ledgers 25,983,782 rows vs 13,138,832 distinct = 1.98x;
  wasm_interface_metadata 1.43x. RMT only collapses when a merge runs,
  and prod never merges these to one part. The JOIN-doubling the task
  warns about is still live — so this task got more valuable, not less.
- 0305: a grep for pool_ids hits three frontend files and looks done.
  It is not — the hit is a fallback `pool_ids: []`, plus two fixtures.

Scheduling conflict recorded:
- 0395: prod confirms deduplicate_merge_projection_mode exists on CH
  26.3.10.60, so 0387's finding holds. If this lands, accounts_recent
  and its refresh disappear — which removes the thing 0428 wants to
  alert on. 0395 gates 0428.
Base automatically changed from develop to master July 25, 2026 09:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant