diff --git a/AGENTS.md b/AGENTS.md index c55a1d28..fd82cefa 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -190,6 +190,15 @@ When moving a feature to a controller, follow these steps: --- +## 11. Telemetry & Error Aggregation + +* **Tooling:** Use `npm run telemetry:aggregate` (which runs `scripts/agent/telemetry-aggregator.mjs`) to collect, sanitize, and aggregate errors from CI/test runs, smoke tests, and agent logs. +* **Privacy Policy:** The tool automatically strips PII (IPs, emails, hex keys, bech32 keys) from logs. **Do not** manually inspect raw logs containing PII unless necessary for debugging in a secure environment; rely on the sanitized reports in `ai/reports/`. +* **Opt-in:** Telemetry generation is opt-in. You must set the environment variable `ENABLE_TELEMETRY=true` when running the aggregator. +* **Reports:** Aggregated reports are generated in `ai/reports/telemetry-YYYYMMDD.md` and `artifacts/error-aggregates.json`. These files provide prioritized issues for triage. + +--- + ## Next Please read these documents next. diff --git a/artifacts/error-aggregates.json b/artifacts/error-aggregates.json index 5b83adf7..0637a088 100644 --- a/artifacts/error-aggregates.json +++ b/artifacts/error-aggregates.json @@ -1,74 +1 @@ -[ - { - "fingerprint": "56489eaa", - "title": "handleModerationBlock requests a block, clears overrides, and refreshes hidden state", - "count": 6, - "sources": [ - "unit-test:test_unit_debug_2.log", - "unit-test:test_unit_debug_3.log", - "unit-test:test_unit_pre_commit.log", - "unit-test:test_unit_retry.log", - "unit-test:test_unit_retry_3.log", - "unit-test:test_unit_retry_4.log" - ], - "severity": "High", - "stack": "TestContext. (file://$REPO/tests$REPO/moderation-overrides.test.mjs:228:10)\n async Test.run (node:internal/test_runner/test:1054:7)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: handleModerationBlock returns false when viewer is logged out", - "owner": "QA Team" - }, - { - "fingerprint": "bcbb97f7", - "title": "handleModerationOverride resumes deferred playback", - "count": 2, - "sources": [ - "unit-test:test_unit_retry_2.log", - "unit-test:test_unit_retry_3.log" - ], - "severity": "High", - "stack": "TestContext. (file://$REPO/tests$REPO/moderation-overrides.test.mjs:104:10)\n async Test.run (node:internal/test_runner/test:1054:7)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: handleModerationBlock requests a block, clears overrides, and refreshes hidden state", - "owner": "QA Team" - }, - { - "fingerprint": "80a22b69", - "title": "handleModerationBlock requests a block, clears overrides, and refreshes hidden state", - "count": 1, - "sources": [ - "unit-test:test_unit_debug_4.log" - ], - "severity": "High", - "stack": "TestContext. (file://$REPO/tests$REPO/moderation-overrides.test.mjs:229:10)\n async Test.run (node:internal/test_runner/test:1054:7)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: handleModerationBlock returns false when viewer is logged out", - "owner": "QA Team" - }, - { - "fingerprint": "5e159618", - "title": "handleModerationBlock requests a block, clears overrides, and refreshes hidden state", - "count": 1, - "sources": [ - "unit-test:test_unit_final.log" - ], - "severity": "High", - "stack": "TestContext. (file://$REPO/tests$REPO/moderation-overrides.test.mjs:232:10)\n async Test.run (node:internal/test_runner/test:1054:7)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: handleModerationBlock returns false when viewer is logged out", - "owner": "QA Team" - }, - { - "fingerprint": "4a2440b4", - "title": "handleModerationOverride decorates stored and current videos then refreshes UI", - "count": 1, - "sources": [ - "unit-test:test_unit_retry_2.log" - ], - "severity": "High", - "stack": "TestContext. (file://$REPO/tests$REPO/moderation-overrides.test.mjs:67:10)\n async Test.run (node:internal/test_runner/test:1054:7)\n async startSubtestAfterBootstrap (node:internal/test_runner/harness:296:3)\n ...\n# Subtest: handleModerationOverride resumes deferred playback", - "owner": "QA Team" - }, - { - "fingerprint": "a879eb91", - "title": "handleModerationBlock requests a block, clears overrides, and refreshes hidden state", - "count": 1, - "sources": [ - "unit-test:test_unit_retry_2.log" - ], - "severity": "High", - "stack": "TestContext. (file://$REPO/tests$REPO/moderation-overrides.test.mjs:202:10)\n async Test.run (node:internal/test_runner/test:1054:7)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: handleModerationBlock returns false when viewer is logged out", - "owner": "QA Team" - } -] \ No newline at end of file +[] \ No newline at end of file