Skip to content

Reclaim resolved failure log excerpts without dropping statistics - #19654

Merged
mnkiefer merged 1 commit into
mainfrom
mnkiefer-resolved-failure-retention
Oct 23, 2026
Merged

mnkiefer merged 1 commit into
mainfrom
mnkiefer-resolved-failure-retention

Conversation

@mnkiefer

Copy link
Copy Markdown
Contributor

Summary

Implement the smallest diagnostic-only retention increment: remove a failed Run's persisted failureLog excerpt once a later completed success is known in the same execution repository, workflow, campaign/role, target, event, branch, and rollout mode.

  • Uses canonical run ordering and conservative scope/outcome checks. Missing scope, cancellation, and incomplete outcomes do not establish recovery.
  • Keeps every other Run field and all run-linked evidence. In particular, reliability/cost facts, failure signatures/messages, Audit counts, tool/domain activity, friction, experiment assignments, grader/eval observations, and active intervention/comparison evidence retain their existing semantics and retention.
  • Protects persisted winners from stale attempts/observations and preserves an attempt-local pruning marker across re-imports. New attempts can retain new excerpts.
  • Applies cleanup before whole-Run size eviction, including unchanged source receipts, and refreshes active subscriptions for excerpt-only changes. Existing detail windows and size limits still bound unresolved failures; explicit --retention-days all archives remain exempt.

Exact persistence scope and savings

This affects the shared canonical storage implementation used by browser IndexedDB and the Node.js SQLite adapter (runs documents, stored in SQLite's __idb_records, plus private storage bookkeeping). It does not change hosted Go/PostgreSQL, published JSONL, upstream collection, or GitHub runs/artifacts, and does not mutate a deployment.

Resource Effect
Retained diagnostic payload Superseded excerpts are removed rather than merely hidden. The success/failure/failure/success/failure/failure fixture removes 2 of 4 excerpts: 10,246 canonical JSON bytes, with all 6 Run summaries retained. This is 50% of that fixture's excerpt payload, not a claim of 50% overall database reduction.
Statistical/comparison evidence Unchanged production worker-query results, including 6 runs, 2 successes, 4 failures, 6 imported runs, and 21 AIC; null grader and UNKNOWN eval evidence remain intact.
GitHub API/rate limits and downloads No reduction claimed: collection and source downloads are unchanged.
Actions time No reduction claimed: no workflow execution or collection is skipped.
Local processing Smaller retained Run payloads and less storage pressure. Cleanup adds bounded maintenance work; native-browser smoke measurements were approximately 92 ms in Chromium and 138 ms in WebKit for 1,007 Runs. These are local measurements, not a production speedup guarantee.

Verification

  • Cross-adapter tests inspect persisted records and byte accounting, not just UI output. Cover recovery sequences, incremental/out-of-order delivery, cached replay, stale/new attempts, incomplete scope/outcomes, detail/size bounds, repair ordering, explicit archives, and protected comparison evidence.
  • Production worker queries remain identical before/after cleanup. The canonical cao_dashboard_execute_query tool independently evaluated the relevant Dashboard Language reliability and cost definitions.
  • Full dashboard unit suite: 3,757 passed, 1 skipped; final focused retention/integration suite: 85 passed.
  • Full dashboard browser suite: 302 passed; final native IndexedDB coverage: 6 passed across Chromium/WebKit, including multi-page pruning and replay.
  • CFO/CTO/CSO Lighthouse scenarios passed (97–100 performance scores), and deployed-data Overview worker-memory budgets passed.
  • Dashboard and root lint/type checks, focused Activity ingestion tests (28), workflow compilation (74), and documentation build passed.

Limitations

This deliberately does not discard entire sessions or metric-bearing detail and introduces no aggregate warehouse or schema migration. SQLite updates reclaim record payload/reusable space but do not guarantee an immediate smaller physical file without vacuuming. The replay marker lasts while its Run survives; rebuilding a disposable cache derives recovery again from available source history. When excerpts exist, cleanup scans retained Run summaries in bounded pages, not linked evidence collections. Populated desktop/mobile full-site screenshots are attached in a follow-up comment.

Compact diagnostic-only failureLog payloads after same-scope recovery while retaining Run summaries and metric/comparison evidence. Protect pruning against stale imports and refresh subscribers after excerpt-only maintenance.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: bf47d592-6917-4408-96ae-d8486602439a
@github-actions

Copy link
Copy Markdown
Contributor
Dashboard dead views

Dead element views (0):
Dead dashboard pages (0):
Analyzed 8 element renderers and 68 dashboard pages across 1 dashboard.json file(s) from dashboard/site/src/components/ui-elements.js.

⚠️ This reachability report is informational and does not block the pull request.
🔎 View the workflow run and report artifact.

@mnkiefer
mnkiefer merged commit 9006aeb into main Oct 23, 2026
35 checks passed
@mnkiefer
mnkiefer deleted the mnkiefer-resolved-failure-retention branch October 23, 2026 19:44
@mnkiefer mnkiefer self-assigned this Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant