Skip to content

feat(OMN-20753): Runs shows a run's status and cost from the local store - #376

Merged
jake-b-omni merged 1 commit into
devfrom
jake/omn-20753-runs-status-cost
Oct 8, 2026
Merged

jake-b-omni merged 1 commit into
devfrom
jake/omn-20753-runs-status-cost

Conversation

@jake-b-omni

@jake-b-omni jake-b-omni commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

The OMN-20223 dashboard walk found Runs, Recent runs and Last run showing Status and Cost Not recorded on all 23 runs of a fresh onex dashboard install. Each receipt said success and $0.00. There were two causes, both specific to the local store:

  • Status: the SQLite store has no boolean type, so it serves quality_gate_passed as 1. statusOf accepted only true/false.
  • Cost: a run's cost came only from its delegation.savings.v1 session, and the local store serves none of those.

Change (src/pages/LocalDashboardPage.tsx)

  • servedBoolean reads true/false (Postgres) and 1/0 (SQLite). Anything else, null included, is still Not recorded.
  • costOf takes the session's local_cost_usd when one is served, else the decision row's own cost_usd, which feat(OMN-20753): the decisions exposure serves run status and cost omnimarket#3588 adds to the decisions exposure. A cost never measured is served null and stays Not recorded, never $0.00.
  • Every per-run cost now prints in dollars with at least two decimals and is never rounded: 0 shows $0.00 and 0.0021 shows $0.0021. This matches the Spend card. Five existing assertions changed only to add the $.

Tests

  • New: LocalDashboardPage.status-cost.test.tsx. Its rows have the walk's local shape: quality_gate_passed: 1, no sessions.
    • Runs shows passed and $0.00 for a measured zero cost.
    • A null cost is Not recorded, never $0.00.
    • 0 reads as failed, and null matches neither passed nor failed.
    • Last run matches Runs.
    • A served session still supplies the cost.
    • Four of the five fail against dev's LocalDashboardPage.tsx.
  • Full suite: 2172 passed, 15 skipped. tsc --noEmit and eslint are clean.

Evidence-Source: OCC#13359
Evidence-Ticket: OMN-20753

🤖 Generated with Claude Code

@jake-b-omni
jake-b-omni enabled auto-merge (squash) October 8, 2026 22:01
@onexbot-occ-writer

Copy link
Copy Markdown
Contributor

OCC autobind did not mint a companion for this PR: no changed-file candidate could be proven RED against the merge base, and emitting a PR-existence probe instead would be non-falsifiable evidence (OMN-15247). Hand-authored evidence is required.

Considered 5 changed file(s):

  • src/pages/LocalDashboardPage.omn19980.test.tsx: no candidate grammar reads this file type (only Python declarations, uv.lock lines, release-artefact lines and contract-pin lines are proposed)
  • src/pages/LocalDashboardPage.runs.test.tsx: no candidate grammar reads this file type (only Python declarations, uv.lock lines, release-artefact lines and contract-pin lines are proposed)
  • src/pages/LocalDashboardPage.status-cost.test.tsx: no candidate grammar reads this file type (only Python declarations, uv.lock lines, release-artefact lines and contract-pin lines are proposed)
  • src/pages/LocalDashboardPage.test.tsx: no candidate grammar reads this file type (only Python declarations, uv.lock lines, release-artefact lines and contract-pin lines are proposed)
  • src/pages/LocalDashboardPage.tsx: no candidate grammar reads this file type (only Python declarations, uv.lock lines, release-artefact lines and contract-pin lines are proposed)

This verdict is occ-autobind's, derived from this head and its merge base alone. A second producer, the occ-companion-effect backstop, consumes its own command on the lab bus and may still mint a companion under the generic binding. Whether it does depends on that consumer running, not on this diff (OMN-18876).

The local SQLite store serves a boolean as 1/0 and no delegation.savings.v1
session, so Runs read Status and Cost Not recorded on every run of the
OMN-20223 walk although each receipt recorded both. A served 1/0 now reads as
passed/failed, and a run's cost falls back to the decision row's own cost_usd
(served by omnimarket#3588). A cost never measured stays Not recorded. Every
per-run cost now prints as dollars with at least two decimals, unrounded, as
the Spend card already does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jake-b-omni
jake-b-omni force-pushed the jake/omn-20753-runs-status-cost branch from aaf70a4 to 201608c Compare October 8, 2026 22:51
@jake-b-omni
jake-b-omni merged commit b0bf3d0 into dev Oct 8, 2026
36 of 38 checks passed
@jake-b-omni
jake-b-omni deleted the jake/omn-20753-runs-status-cost branch October 8, 2026 23:46
jake-b-omni added a commit that referenced this pull request Oct 9, 2026
…and cost fix (#377)

v1.1.6 was tagged at 818fa47, one commit before #376, so no published bundle
carries Runs' status and cost. This bumps package.json and the two
project-level lockfile fields only, with a CHANGELOG entry.

Co-authored-by: Jake Brower <jake@bodegalogic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
jake-b-omni pushed a commit that referenced this pull request Oct 9, 2026
… Runs table and the merged pages

The scroll test asserted the Runs table scrolls sideways, the behaviour
OMN-20759 removes; it now asserts the table needs no sideways scroll. Two
stale expectations from merged work also failed this spec on dev: per-run
cost prints $0.0004 since #376, and Savings and Baseline spend (#375) both
carry the baseline caption and modelled note. The e2e suite is not in CI,
so neither break was caught when it merged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jake-b-omni added a commit that referenced this pull request Oct 9, 2026
…440x900 (#379)

* fix(OMN-20759): the Runs and Recent runs tables fit their panels at 1440x900

The OMN-20223 re-walk found both run tables wider than their panels at 1440:
Runs (17 columns) scrolled sideways with Host clipped, and the Overview's
Recent runs clipped the Run id. Runs had no fit treatment at all, and Recent
runs gave the run id and timestamp a 9ch floor while the host, a 33-character
token with no break opportunity, could not wrap.

Both tables now use the fit wrapper. Run id, time, model, backend and host may
break inside themselves; every other cell still wraps at spaces, and no column
is dropped. A Playwright check at 1440x900 asserts each table's scrollWidth
fits its container, no cell is clipped and every header is present; it fails
on dev with 1230 px and 82 px of overflow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* chore(OMN-20759): bump to 1.1.9 so onex dashboard can pin the table fit

#378 (OMN-20758) took 1.1.8 first, so the table fit releases as 1.1.9.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(OMN-20759): the local dashboard contract spec matches the fitted Runs table and the merged pages

The scroll test asserted the Runs table scrolls sideways, the behaviour
OMN-20759 removes; it now asserts the table needs no sideways scroll. Two
stale expectations from merged work also failed this spec on dev: per-run
cost prints $0.0004 since #376, and Savings and Baseline spend (#375) both
carry the baseline caption and modelled note. The e2e suite is not in CI,
so neither break was caught when it merged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Jake Brower <jake@bodegalogic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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