Repository navigation
fix(sync): count a Property with a recorded failure in the reconciliation-age alert - #1082
Conversation
…tion-age alert sync.reconciliation-age left out every Property with a recorded sync failure, so a Property whose full reads all failed could not raise the alert that watches for a Property with no completed read. The read now judges every syncable Property alike. A connection that needs reauthorization, including one revoked by the provider, is not syncable and stays out: its reconnect notice is its signal. Runbook, alerts table and ADR 0055 are updated. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
ECC Tools / Security EvidenceCommit: Security evidence gate passed (success) No security-sensitive scanner-evidence gap detected. Mode: enforce Scanned 6 changed file(s). No missing scanner-evidence signal was detected. Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
ECC Tools / PR Risk TaxonomyCommit: PR taxonomy review recommended (neutral) Detected 1 PR taxonomy bucket(s): CI/CD Recommendation. Scanned 6 changed file(s). Roadmap taxonomy buckets: CI/CD RecommendationCI, dependency, coverage, and contract signals should be routed into follow-up checks or verification work. Signals:
Paths:
Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
ECC Tools / Reference Set ReadinessCommit: Reference set readiness gaps detected (neutral) Reference evidence present for 0/7 areas (0%) across 6 changed file(s). This check is based on files changed in this PR. Repository-level readiness is still reported by
Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
ECC Tools / Hosted Promotion ReadinessCommit: Hosted promotion readiness passed (success) No hosted promotion evidence gaps detected across 6 changed file(s); 0 corpus scenarios had matching evidence. This check compares PR file changes against the evaluator/RAG promotion corpus in No evaluator corpus scenarios matched this PR. Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
ECC Tools / Security EvidenceCommit: Security evidence gate passed (success) No security-sensitive scanner-evidence gap detected. Mode: enforce Scanned 6 changed file(s). No missing scanner-evidence signal was detected. Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
ECC Tools / PR Risk TaxonomyCommit: PR taxonomy review recommended (neutral) Detected 1 PR taxonomy bucket(s): CI/CD Recommendation. Scanned 6 changed file(s). Roadmap taxonomy buckets: CI/CD RecommendationCI, dependency, coverage, and contract signals should be routed into follow-up checks or verification work. Signals:
Paths:
Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
ECC Tools / Reference Set ReadinessCommit: Reference set readiness gaps detected (neutral) Reference evidence present for 0/7 areas (0%) across 6 changed file(s). This check is based on files changed in this PR. Repository-level readiness is still reported by
Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
ECC Tools / Hosted Promotion ReadinessCommit: Hosted promotion readiness passed (success) No hosted promotion evidence gaps detected across 6 changed file(s); 0 corpus scenarios had matching evidence. This check compares PR file changes against the evaluator/RAG promotion corpus in No evaluator corpus scenarios matched this PR. Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
What changed
sync.reconciliation-agenow counts a Property that has a recorded sync failure. It used to leave out every Property with anerror_class, so a Property whose every full read failed could not raise the alert that watches for a Property with no completed read.A Property whose Google connection needs reauthorization (
reauth_required, which is also how a provider revocation is stored) stays out. It is not syncable, so it is not polled, and the reconnect notice is its signal. No new filter was needed: the existing active-connection condition already leaves it out.Expect the alert to raise for any syncable Property that has gone 8 hours without a completed full read, whatever the recorded failure (for example one Google rejects, or one over the review cap).
sync.failed-nonzerostill names the failure code; this alert says how long it has been.The runbook (section 13 and the rejected-location section), the alerts table and ADR 0055 now say so.
Tests
sync-push-health.integration.test.ts, real PostgreSQL): an overdue Property with a recordedprovider_failure,provider_rejectedorreview_cap_exceededfailure is counted. Areauth_requiredconnection is not counted, with or without aprovider_revokedreason. The three counting cases fail without the change.sync-push-health.test.ts): the selection no longer filters onerror_classand still requires an active connection. The first case fails without the change.pnpm typecheck, the file-length check and the test-quality check are clean.🤖 Generated with Claude Code