OXYGENHUB

Reports: one tab, reports that declare their kind, every run kept, a timeline to scrub and play issue #127 open andymccall opened this · 1 comment

andymccall

Design: docs/reports.md. A report is a directory (report.toml with kind, title, summary and headline metrics; for performance and custom kinds an index.html and data/), from a Flow job's report output or oh report upload. The hub keeps each run's bundle as a content-addressed tree in the repository's store (unchanged files cost nothing), indexes reports and metrics in the database, keeps bundles by policy and metrics forever, and roots them for gc. One Reports tab replaces Coverage and Tests (built-in kinds; today's coverage and junit artifacts are implicit declarations); pages render in a sandboxed frame on a separate origin; a timeline scrubs, plays and compares runs, with report.run()/report.history() for pages that animate; metrics with thresholds set checks. Andy asked for it 2026-10-10, with Metal Gear's performance report as the first user.

referenced by 3 changes on 10 Oct 2026

50d93fa443dc 260c33b4b6c4 a36bab6b9ffc

referenced by 4 changes on 11 Oct 2026

c8df33a6829f f3e5e2bc78e9 95b525b0b977 20b8fe85888b

andymccall

Status 2026-10-13: built and live: RP1–RP4 (report storage, one Reports tab with Coverage and Tests built in, metrics and threshold checks, the timeline with play and compare, report.run()/history()), and retention (default bookmark keeps everything, other bookmarks the newest 50 runs, metrics forever). Still open: report pages on a separate origin (today a sandboxed frame with its own CSP), retention rules for proposals and tags and a per-repository setting, and oh report upload for reports other than coverage.