Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"name": "unic-pr-review",
"source": "./",
"tags": ["productivity", "code-review", "azure-devops"],
"version": "2.1.2"
"version": "2.1.3"
}
]
}
2 changes: 1 addition & 1 deletion apps/claude-code/unic-pr-review/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
14 changes: 14 additions & 0 deletions apps/claude-code/unic-pr-review/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### 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)
- `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)

## [2.1.2] — 2026-06-04

### Breaking
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion apps/claude-code/unic-pr-review/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@
"verify:changelog": "unic-verify-changelog"
},
"type": "module",
"version": "2.1.2"
"version": "2.1.3"
}
Loading