Primary finding
DynamoDB table uses a hard-coded `table_name` which prevents multi-environment deploys and causes CFN failures on re-creation
- infra/stack.py:64-75
- infra/stack.py:100-103
Hard-coding `table_name` makes it impossible to deploy this stack twice in the same account/region (e.g., dev + staging), and combined with `RemovalPolicy.RETAIN` any failed delete leaves the table orphaned, blocking re-deploy with the same name. Additionally `DDB_TABLE` env var is a duplicated literal rather than referencing `table.table_name`, so a future rename will silently break the Lambda.
Recommendation
Omit `table_name` (let CDK generate it) and pass `table.table_name` to the Lambda env. If a stable name is required, derive it from `self.stack_name`.