apm-wo-analysis/tests
Adam Moussa f193754c27 Fix deploy-time failures found in prod testing
Two issues only a real deploy/run surfaced (synth + offline tests passed):

1. Classifier exceeded Lambda's 250 MB unzipped limit (bundled awswrangler +
   pandas + pyarrow + numpy). Move them to the AWS-managed SDK-for-pandas layer
   (AWSSDKPandas-Python312-Arm64:27, awswrangler 3.16.1, pre-stripped to fit);
   bundle only openpyxl. Drop the unused anthropic SDK — _call_haiku uses stdlib
   urllib. Function package now ~890 KB.

2. Slack rejected the daily post with invalid_blocks: every category drill
   button shared action_id "drill_category". Qualify it as "drill_category:<cat>"
   for uniqueness; the interactions handler now matches on the prefix. Add a
   regression test asserting all daily-summary action_ids are unique.

Verified in prod: classifier writes Parquet + summary.json + details.json;
slack-post posts the daily summary + 3rd-escalation alert; the interactions
endpoint (apm-wo.seahaven.com) returns 401 on a bad signature. 58/58 tests pass.

NOTE: these fixes sit on the phase-5 branch but logically belong to earlier
phases — the layer fix to #8 (classifier), the Slack fix to #10 — and must be
moved/cherry-picked there before those PRs merge independently. See cleanup.
2026-05-28 18:29:16 -04:00
..
test_blockkit.py Fix deploy-time failures found in prod testing 2026-05-28 18:29:16 -04:00
test_classify.py Add two-axis classifier Lambda and CDK wiring (Phase 2) 2026-05-28 17:09:52 -04:00
test_grafana_synth.py Add self-hosted Grafana stack: EC2, ALB, dashboards-as-code (Phase 5) 2026-05-28 18:05:20 -04:00
test_pipeline_synth.py Add Slack post + interactions Lambdas with drill-down modals (Phase 4) 2026-05-28 17:48:51 -04:00