Repository navigation
✨ evidence card: 24h/7d/30d/custom windows and plain-language panel explainers - #12416
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Open PR overlap checkBase branch: Conflicts are checked with every PR merged onto the current tip of
|
|
hive: this PR now conflicts with 🐝 Hive Agent: — hive: agent=scanner backend=copilot model=claude-fable-5.1 copilot=1.0.88 |
7304a4c to
3ab082a
Compare
…xplainers - /api/evidence/summary accepts from=/to= (RFC3339 or YYYY-MM-DD, span ≤ 366 d, 400 on violation) alongside hours= - Evidence card gets its own 24h · 7d · 30d · custom pills, persisted in localStorage (hive.evidence.window); header reflects the window - ⓘ explainer per panel (What is measured · Why it matters · How it is measured · What good looks like · What ours shows) with a live grade from named thresholds, documented in docs/review-evidence.md Read-only reporting; nothing here reads into or alters merge eligibility (RFC #12062 non-goals). Signed-off-by: Andy Anderson <andy@clubanderson.com>
… ratchet) Signed-off-by: Andy Anderson <andy@clubanderson.com>
Signed-off-by: Andy Anderson <andy@clubanderson.com>
3ab082a to
284d4fc
Compare
|
merged by Hive trusted-author auto-merge: author @clubanderson holds role owner and GitHub permission admin on repo; CI green at 284d4fc. |
|
Thank you for your contribution! Your PR has been merged. We'd love to hear how your experience was: share feedback |
Adds the Boundary enforcement evPanel card to the Throughput Evidence sub-panel: attempted-vs-blocked agent writes per intent tier (top block reasons in the tooltip) from write_counters, and a sentinel hits per ISO week sparkline from sentinel_hits_per_week. write_counters in GET /api/evidence/summary now passes through blocked_by_reason. Empty state when the counter file is absent. Reporting only; nothing reads or alters merge eligibility. Rebased onto v5 after #12416: adds the EV_EXPLAINERS entry (graded on proxy-blocked ÷ attempted writes via EV_BLOCKED_STRONG/FAIR), sizes the SVG helpers from EV_SVG_W, and discloses that write_counters are all-time proxy totals while sentinel_hits_per_week follows the selected window. Closes #12368 Signed-off-by: Andy Anderson <andy@clubanderson.com>
Adds the Boundary enforcement evPanel card to the Throughput Evidence sub-panel: attempted-vs-blocked agent writes per intent tier (top block reasons in the tooltip) from write_counters, and a sentinel hits per ISO week sparkline from sentinel_hits_per_week. write_counters in GET /api/evidence/summary now passes through blocked_by_reason. Empty state when the counter file is absent. Reporting only; nothing reads or alters merge eligibility. Rebased onto v5 after #12416: adds the EV_EXPLAINERS entry (graded on proxy-blocked ÷ attempted writes via EV_BLOCKED_STRONG/FAIR), sizes the SVG helpers from EV_SVG_W, and discloses that write_counters are all-time proxy totals while sentinel_hits_per_week follows the selected window. Closes #12368 Signed-off-by: Andy Anderson <andy@clubanderson.com>
Adds the Boundary enforcement evPanel card to the Throughput Evidence sub-panel: attempted-vs-blocked agent writes per intent tier (top block reasons in the tooltip) from write_counters, and a sentinel hits per ISO week sparkline from sentinel_hits_per_week. write_counters in GET /api/evidence/summary now passes through blocked_by_reason. Empty state when the counter file is absent. Reporting only; nothing reads or alters merge eligibility. Rebased onto v5 after #12416: adds the EV_EXPLAINERS entry (graded on proxy-blocked ÷ attempted writes via EV_BLOCKED_STRONG/FAIR), sizes the SVG helpers from EV_SVG_W, and discloses that write_counters are all-time proxy totals while sentinel_hits_per_week follows the selected window. Closes #12368 Signed-off-by: Andy Anderson <andy@clubanderson.com>
Implements two user requests for the Throughput Evidence card (RFC #12062). cc @mrbobbytables
1. Time window: 24h · 7d · 30d · custom
EV_WINDOWS), independent of the throughput pills; custom opens an inline from/to<input type="date">row with Apply and client-side validation (to ≥ from, ≤ 366 days). Selection persists inlocalStorage(hive.evidence.window), like the throughput repo pill.GET /api/evidence/summarynow acceptsfrom=/to=(RFC3339 orYYYY-MM-DD; date-onlytoinclusive;todefaults to now) alongsidehours=(already allowed up to 90 d).400forto<from, span > 366 d (evidenceSummaryMaxRangeDays), ortowithoutfrom. Response echoesfrom/tofor custom ranges.buildEvidenceSummarykeeps its signature (wrapper overbuildEvidenceSummaryWindow).2. Plain-language explainers (ⓘ per panel)
evPanel(Outcome by author kind, Reviewer calibration, Reviewer accuracy × model family, Shadow gates) gets an ⓘ button in its summary row:aria-expanded/aria-controls, Esc closes and returns focus. A test asserts everyevPanel(...)key has anEV_EXPLAINERSentry, so later panels must ship one.EV_CALIB_*,EV_ERR_*,EV_REVERT_*,EV_SHADOW_FALSE_ALARM_*,EV_GRADE_MIN_N,EV_SHORT_WINDOW_HOURS), documented indocs/review-evidence.md→ "How to read the Evidence card".Guardrail (RFC #12062 non-goals)
Everything here is read-only reporting over stored bundles. Nothing reads into or alters merge eligibility / auto-merge; grades are display-only and tests do not touch gate logic.
Tests / docs
TestParseEvidenceWindow,TestBuildEvidenceSummaryCustomRange, validation cases;TestEvidenceCardWindowSelector,TestEvidenceCardExplainers.docs/api-reference.md,docs/review-evidence.md, changelog fragment. No new inlinestyle=(classes only).