Skip to content

fix: EventBridge runtime filtering + remove pending canvas#379

Merged
drernie merged 13 commits intomainfrom
2026-04-11-iac-integrated
Apr 12, 2026
Merged

fix: EventBridge runtime filtering + remove pending canvas#379
drernie merged 13 commits intomainfrom
2026-04-11-iac-integrated

Conversation

@drernie
Copy link
Copy Markdown
Member

@drernie drernie commented Apr 11, 2026

Summary

  • Simplifies EventBridge rule to match only source + detail-type — removes detail.bucket and detail.handle prefix filter that depended on deploy-time values derived from Secrets Manager
  • Adds runtime prefix filtering in the Docker handler (app.py) alongside the existing bucket check
  • Removes the PackagePrefix CloudFormation parameter (no longer needed)
  • Unblocks integrated-mode stacks where the Quilt IaC creates the EventBridge rule independently
  • Removes pending canvas state — the intermediate "Updating..." canvas with disabled buttons, stripped links, and spurious Athena queries was a net negative; the canvas now stays unchanged until the EventBridge package event confirms the update
  • Canvas footer now shows "Pending update" (honest) instead of "Up to date" (misleading) when no confirmed timestamp exists

Companion PR

  • quiltdata/deployment#2361 — adds EventBridge rule to Quilt stack IaC for integrated mode

Context

See spec/2026-04-11-iac-integrated/01-iac-breakage.md for the full analysis.

Test plan

  • npm test — 380 Python tests pass
  • Pending canvas tests removed/simplified (no longer applicable)
  • Footer tests updated for "Pending update" wording
  • npm run test:integration — integration tests
  • npm run test:local — Docker build + webhook tests

🤖 Generated with Claude Code

drernie and others added 9 commits April 11, 2026 13:24
Prefix filtering belongs in Docker (runtime secret), not the EventBridge
rule. The rule itself must be created in Quilt stack IaC for integrated
mode. Filed quiltdata/enterprise#1028 for pkgevents bus/source issues.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The EventBridge rule previously filtered on detail.bucket and
detail.handle (prefix), but both values come from Secrets Manager
and are unavailable at deploy time in integrated-mode stacks where
the Quilt IaC creates the rule independently.

Simplify the rule to match only source + detail-type, and add
runtime prefix filtering in the Docker handler alongside the
existing bucket check. This unblocks integrated-mode EventBridge
rule creation with zero dependency on secret-derived values.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The EventBridge rule previously filtered on detail.bucket and
detail.handle (prefix), but both values come from Secrets Manager
and are unavailable at deploy time in integrated-mode stacks where
the Quilt IaC creates the rule independently.

Simplify the rule to match only source + detail-type, and add
runtime prefix filtering in the Docker handler alongside the
existing bucket check. This unblocks integrated-mode EventBridge
rule creation with zero dependency on secret-derived values.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove architecture, file lists, and patterns that agents can derive
from code. Keep only policy, gotchas, and the critical rule to use
project npm scripts (not built-in npm commands) for version bumps.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The pending canvas was a net negative: it replaced a working canvas with
a degraded one (disabled buttons, stripped links, Athena errors) just to
show "Updating...", then replaced it again with identical content. Now
the canvas stays unchanged until the EventBridge package event confirms
the update. Footer shows "Pending update" instead of the misleading
"Up to date" when no confirmed timestamp exists.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@drernie drernie changed the title fix: move EventBridge bucket/prefix filtering to Docker runtime fix: EventBridge runtime filtering + remove pending canvas Apr 11, 2026
drernie and others added 4 commits April 11, 2026 17:10
AWS LF rejects TableWildcard grants for IAM_ALLOWED_PRINCIPALS.
Per-role TableWildcard grants work fine — need to swap the principal.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Iceberg tables are also runtime-created. Both UserAthenaDatabase (7 roles)
and IcebergDatabase (2 roles) need per-role TableWildcard grants.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 02: updated analysis (Iceberg tables also runtime-created)
- 03: per-role grants fail without LF admin status
- 04: LF admin list is the real blocker
- 05: added GitHub-Deployment to LF admin list, deploy succeeded

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
LF TableWildcard grants require LF admin privileges that vary by account.
Gate them behind EnableLakeFormationGrants CFT parameter (default Disabled)
so deploys don't break on accounts without LF admin setup. Terraform
variable added in quiltdata/iac#104.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@drernie drernie merged commit 772762a into main Apr 12, 2026
3 checks passed
@drernie drernie deleted the 2026-04-11-iac-integrated branch April 12, 2026 06:16
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