feat(observer): wire CoverageTrendManager + CoverageAlertManager into the service#326
Merged
Merged
Conversation
… the service CoverageTrendManager + CoverageAlertManager (#279) were built and fully tested but never driven in production — the #279 PR claimed "Integration into generate_snapshot()" which does not exist (the #313 pattern). COMPLETE them. RepoObserverService now default-constructs a CoverageTrendManager rooted under the observer artifact dir, and after coverage is collected _record_coverage_trend bridges the live CoverageSignal -> CoverageSnapshot, records it (building the history the trend analysis needs), computes the trend + a regression check, runs CoverageAlertManager, persists the trend + alerts, and logs any regression/alert. Best-effort (try/except) so coverage trend/alerting can never break an observation, and it skips cleanly when coverage is unavailable. Prune the now-wired detect_regression / generate_alerts / save_snapshot / save_alert from audit.d12_baseline — the D12 gate confirms 0 findings. The reporter's calculate_trend_slope / calculate_volatility_score / get_historical_data and categorize_alert / get_routes_for_alert remain genuinely unwired public API and stay baselined. 2 new tests; observer unit suite 1389 green; ruff + ty + audit(B2-env) + doctor + D12 clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ProtocolWarden
added a commit
that referenced
this pull request
Jun 18, 2026
…omes (#328) The incomplete-integration remediation campaign is complete (14 green-gated PRs). Update the plan of record to reflect the operator correction (COMPLETE genuine features, don't delete them) and record every outcome: - the 3 adversarial corrections (cross-repo consumers, indirect dispatch, convention hooks) that caught the per-repo audit's blind spots; - WIREs: DAGExecutor #10, SwitchBoard #21 (p95), PlatformManifest #83 (visibility_scope fail-closed), and the OC observer plane — #325 (FlakyTestReporter), #326 (coverage trend/alerts), #327 (merge-decision metrics); - justified deletes of superseded duplicates (Custodian #47, DAGExecutor #11, SourceRegistry #14, TeamExecutor #12, CoreRunner #20); ContextLifecycle = KEEP; - the d12_baseline ratchet pruning (D12 gate confirms 0 after each wire); - the B2 root cause: content-less secret artifact (infra, not a code bug). flip parse_visibility_scope to WIRE-done; remove the TeamExecutor RxP false-positive. Backlog updated. Co-authored-by: ProtocolWarden <ProtocolWarden@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Second observer-plane completion — the coverage trend + alert engines.
The #313 gap
CoverageTrendManager+CoverageAlertManager(#279) were built and fully tested but never driven in production. The #279 PR claimed "Integration into generate_snapshot()" — but no such method/integration exists. Claimed-complete-but-inert.Completion (parallel-systems bridge)
The live
CoverageSignalCollectorproduces aCoverageSignal; the engines consume a different type,CoverageSnapshot.RepoObserverServicenow:CoverageTrendManagerrooted under the observer artifact dir;_record_coverage_trendbridgesCoverageSignal → CoverageSnapshot, records it (building the history trend analysis needs), computes the trend + a regression check, runsCoverageAlertManager.generate_alerts, persists the trend + alerts, and logs any regression/alert.Best-effort (
try/except) so it can never break an observation; skips cleanly when coverage is unavailable or storage can't build.Ratchet
Pruned the now-wired
detect_regression/generate_alerts/save_snapshot/save_alertfromaudit.d12_baseline— the D12 gate confirms 0 findings. The genuinely-still-unwired public methods (calculate_trend_slope,calculate_volatility_score,get_historical_data,categorize_alert,get_routes_for_alert) stay baselined.Verified: 2 new tests; observer unit suite 1389 passed; ruff + ty + working-detector audit (B2-env-only) + doctor + D12 clean.
🤖 Generated with Claude Code