Opus
S3 bucket disables all public access blocks, exposing more than the intended dashboard prefix
- infra/stack.py:41-60
The bucket is also used for `geo-signals/feedback.csv` (potentially sensitive trading signal/feedback data) and is granted broad read by the Lambda. By turning off all four S3 Block Public Access controls AND attaching a public-read bucket policy, the bucket is now susceptible to any future bucket-policy or ACL mistake exposing non-dashboard prefixes (e.g., `geo-signals/*`). The intent (comment) is only to expose `dashboard/*`, but the configuration removes the safety net that would normally prevent accidental broader exposure. Only `block_public_policy=False` and `restrict_public_buckets=False` are required to permit the dashboard/* policy; disabling ACL blocks is unnecessary and weakens defense-in-depth.
Recommendation
Keep `block_public_acls=True` and `ignore_public_acls=True`; only set `block_public_policy=False` and `restrict_public_buckets=False` since the public access is granted via bucket policy (not ACL). Consider splitting public dashboard assets into a separate bucket from feedback/state data.