From 73b5aea9de84b6ddd0b47d52645d51875c5bd73e Mon Sep 17 00:00:00 2001 From: Oriol Torrent Florensa Date: Fri, 5 Jun 2026 17:24:18 +0200 Subject: [PATCH 1/3] feat(unic-pr-review): calibrate silent-failure-hunter for lost-signal/observability gaps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add three new detection criteria to the Silent Failure Hunter prompt covering lost-signal / observability gaps — fallback branches, early-return guards, and dev-only logging paths where a real analytics/telemetry event never reaches production observability tools. Guards two new false-positive cases: deliberate traced suppression (different but matching event still fires) and intentionally- disabled analytics with explicit documentation. Closes #217 Co-Authored-By: Claude Sonnet 4.6 --- .../unic-pr-review/agents/silent-failure-hunter.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/claude-code/unic-pr-review/agents/silent-failure-hunter.md b/apps/claude-code/unic-pr-review/agents/silent-failure-hunter.md index c9801b8f..69e3a7ec 100644 --- a/apps/claude-code/unic-pr-review/agents/silent-failure-hunter.md +++ b/apps/claude-code/unic-pr-review/agents/silent-failure-hunter.md @@ -39,12 +39,17 @@ Apply the rubric strictly. If you are unsure whether a Finding reaches 60, it do - Fallback chains (try A, then B, then C) that switch approaches without recording or explaining why the prior attempt failed - Retry logic that exhausts all attempts and then proceeds or returns a default without surfacing the final failure to the caller or the logs - Errors caught locally that should propagate to a higher-level handler — catching here prevents proper cleanup, resource release, or centralised handling +- Lost-signal / observability gaps: a fallback branch, early-return guard, or cancellation handler exits without emitting the analytics event, telemetry call, structured log, or Sentry capture that the normal execution path emits — leaving the outcome invisible in production observability tools +- Event emission (`trackEvent`, `analytics.page`, `reportError`, APM spans, Sentry breadcrumbs) that appears only on the success/normal path; an early-exit guard or exception branch skips it without firing a corresponding trace to record what actually happened +- Logging or diagnostic calls unconditionally gated on a development flag (`process.env.NODE_ENV !== 'production'`, `__DEV__`, `IS_TEST`) with no production-observable fallback — production gets silence where developers see output ## What NOT to look for - Formatting or whitespace (handled by Biome) - Error-handling that is deliberately suppressive and clearly documented as such (e.g. fire-and-forget telemetry) - Handling patterns outside the diff scope +- A fallback or early-return that deliberately fires a **different** matching event to record the outcome (e.g. a `navigation_cancelled` event in place of `page_view`) — the outcome is still traced under a different name; this is deliberate traced suppression, not a gap +- Analytics / telemetry emission that is intentionally disabled in specific environments when the omission is explicit and documented (e.g. a guarding comment, a feature flag, or a dedicated `isAnalyticsEnabled()` / `isTelemetryEnabled()` wrapper) ## Output format From ad530bccdd6bf9196d7aa05dd5590479a065d0a3 Mon Sep 17 00:00:00 2001 From: Oriol Torrent Florensa Date: Fri, 5 Jun 2026 17:37:31 +0200 Subject: [PATCH 2/3] docs(unic-pr-review): note lost-signal detection capability in CHANGELOG [Unreleased] Addresses review finding #2 from PR #222: behavioral capability additions to agent prompts should have a CHANGELOG entry for traceability. Co-Authored-By: Claude Sonnet 4.6 --- apps/claude-code/unic-pr-review/CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/claude-code/unic-pr-review/CHANGELOG.md b/apps/claude-code/unic-pr-review/CHANGELOG.md index fc9eb241..82b1d38e 100644 --- a/apps/claude-code/unic-pr-review/CHANGELOG.md +++ b/apps/claude-code/unic-pr-review/CHANGELOG.md @@ -11,7 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - (none) ### Added -- (none) +- `silent-failure-hunter` agent now detects lost-signal / observability gaps: fallback branches, early-return guards, and cancellation handlers that exit without emitting the analytics event, telemetry call, structured log, or Sentry capture that the normal execution path emits (issue #217) +- `silent-failure-hunter` agent recognises missing event-emission APIs (`trackEvent`, `analytics.page`, `reportError`, APM spans, Sentry breadcrumbs) on non-success paths (issue #217) +- `silent-failure-hunter` agent flags logging or diagnostic calls unconditionally gated on a development / debug flag, making them invisible in production (issue #217) +- False-positive guards: symmetric exclusions prevent over-flagging intentional conditional telemetry, different-event traces on error paths, and telemetry disabled by design (issue #217) ### Fixed - (none) From a4492c5fdd072b6ff4a2372bd1c0cd75c98002f3 Mon Sep 17 00:00:00 2001 From: Oriol Torrent Florensa Date: Fri, 5 Jun 2026 17:37:44 +0200 Subject: [PATCH 3/3] chore(unic-pr-review): bump to 2.1.3 Co-Authored-By: Claude Sonnet 4.6 --- .../unic-pr-review/.claude-plugin/marketplace.json | 2 +- .../unic-pr-review/.claude-plugin/plugin.json | 2 +- apps/claude-code/unic-pr-review/CHANGELOG.md | 11 +++++++++++ apps/claude-code/unic-pr-review/package.json | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/apps/claude-code/unic-pr-review/.claude-plugin/marketplace.json b/apps/claude-code/unic-pr-review/.claude-plugin/marketplace.json index a664ff0a..6f2739b1 100644 --- a/apps/claude-code/unic-pr-review/.claude-plugin/marketplace.json +++ b/apps/claude-code/unic-pr-review/.claude-plugin/marketplace.json @@ -21,7 +21,7 @@ "name": "unic-pr-review", "source": "./", "tags": ["productivity", "code-review", "azure-devops"], - "version": "2.1.2" + "version": "2.1.3" } ] } diff --git a/apps/claude-code/unic-pr-review/.claude-plugin/plugin.json b/apps/claude-code/unic-pr-review/.claude-plugin/plugin.json index 27a9363a..6a2223f6 100644 --- a/apps/claude-code/unic-pr-review/.claude-plugin/plugin.json +++ b/apps/claude-code/unic-pr-review/.claude-plugin/plugin.json @@ -15,5 +15,5 @@ "keywords": ["pr-review", "azure-devops", "jira", "confluence", "code-review", "unic"], "license": "LGPL-3.0-or-later", "name": "unic-pr-review", - "version": "2.1.2" + "version": "2.1.3" } diff --git a/apps/claude-code/unic-pr-review/CHANGELOG.md b/apps/claude-code/unic-pr-review/CHANGELOG.md index 82b1d38e..1f23a74f 100644 --- a/apps/claude-code/unic-pr-review/CHANGELOG.md +++ b/apps/claude-code/unic-pr-review/CHANGELOG.md @@ -10,6 +10,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Breaking - (none) +### Added +- (none) + +### Fixed +- (none) + +## [2.1.3] — 2026-06-05 + +### Breaking +- (none) + ### Added - `silent-failure-hunter` agent now detects lost-signal / observability gaps: fallback branches, early-return guards, and cancellation handlers that exit without emitting the analytics event, telemetry call, structured log, or Sentry capture that the normal execution path emits (issue #217) - `silent-failure-hunter` agent recognises missing event-emission APIs (`trackEvent`, `analytics.page`, `reportError`, APM spans, Sentry breadcrumbs) on non-success paths (issue #217) diff --git a/apps/claude-code/unic-pr-review/package.json b/apps/claude-code/unic-pr-review/package.json index 9286f360..9eb8dc93 100644 --- a/apps/claude-code/unic-pr-review/package.json +++ b/apps/claude-code/unic-pr-review/package.json @@ -22,5 +22,5 @@ "verify:changelog": "unic-verify-changelog" }, "type": "module", - "version": "2.1.2" + "version": "2.1.3" }