Non-blocking follow-up from the PR #788 review (silent-failure-hunter finding).
Problem
The three webhook screening paths — jira-webhook-processor.ts screenCommentsOrDrop, and linear-webhook-processor.ts screenProjectDocsOrDrop / screenCommentsOrDrop — fail open on a Bedrock Guardrail error: they logger.warn(...) and drop the third-party content so the task proceeds. That posture is correct (see the ADR proposed in #793), but the only signal is a log line. A sustained Bedrock Guardrail outage would silently degrade comment/doc enrichment fleet-wide, discoverable only via log search — there is no metric and nothing to alarm on.
Proposed fix
Emit a CloudWatch metric (e.g. WebhookScreeningFailed with a source dimension — jira-comments / linear-docs / linear-comments) on each fail-open path, so the degradation is graphable and alarmable. Wire it into the shared alarm plane rather than a bespoke alarm.
Related
Non-blocking follow-up from the PR #788 review (silent-failure-hunter finding).
Problem
The three webhook screening paths —
jira-webhook-processor.tsscreenCommentsOrDrop, andlinear-webhook-processor.tsscreenProjectDocsOrDrop/screenCommentsOrDrop— fail open on a Bedrock Guardrail error: theylogger.warn(...)and drop the third-party content so the task proceeds. That posture is correct (see the ADR proposed in #793), but the only signal is a log line. A sustained Bedrock Guardrail outage would silently degrade comment/doc enrichment fleet-wide, discoverable only via log search — there is no metric and nothing to alarm on.Proposed fix
Emit a CloudWatch metric (e.g.
WebhookScreeningFailedwith asourcedimension —jira-comments/linear-docs/linear-comments) on each fail-open path, so the degradation is graphable and alarmable. Wire it into the shared alarm plane rather than a bespoke alarm.Related