Skip to content

feat(OMN-19981): add local Overview and Runs dashboards - #344

Merged
jonahgabriel merged 1 commit into
devfrom
lakshman/OMN-19981-local-pages-overview-runs
Oct 1, 2026
Merged

jonahgabriel merged 1 commit into
devfrom
lakshman/OMN-19981-local-pages-overview-runs

Conversation

@Patel230

@Patel230 Patel230 commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds the local Overview and Runs dashboard pages for the 2026-09-28 sprint cut of OMN-19981. Each page is a YAML instance of omnibase_core's ModelDashboardConfig, validated by the real core model in a test, loaded over HTTP from served projection exposures, with typed empty states instead of zeros.

What changed

  • src/pages/local/overview.page.yaml, src/pages/local/runs.page.yaml: page configs, with the dashboard fields at the document root, which ModelDashboardConfig (extra="forbid") requires. overview.contracts.yaml and runs.contracts.yaml hold the component and data-binding contracts.
  • src/pages/local/model-dashboard-config.schema.json: the JSON schema of ModelDashboardConfig at core 47187e6a, for the TypeScript-side checks.
  • src/layout/local-page-loader.ts, src/pages/LocalDashboardPage.tsx, src/App.tsx, src/components/frame/Sidebar.tsx, src/store/types.ts, src/styles/local-dashboard.css: an HTTP-only page loader, the route, the navigation entry, and typed NO_RUNS_YET / BASELINE_UNRESOLVED render states.
  • Tests:
    • src/pages/local/pages.test.ts (vitest);
    • tests/contracts/test_local_dashboard_config_core.py: runs ModelDashboardConfig.model_validate(yaml.safe_load(page)) with the real Python model;
    • tests/e2e/local-dashboard-contracts.spec.ts (Playwright 1440x900), with its screenshot fixture.
  • Deliberately not done:
    • server/sqlite-projection-reader.ts is unchanged; its deletion is AC3, at the demo gate.
    • Workflow, Usage, Credentials and API Keys belong to the 10/5 sprint.
    • ModelDashboardConfig is not added to omnibase_core's generated TypeScript types; that is a follow-up for core.

How it was verified

The work was done in the Codex lane. The commit b7088e7 was made by the Claude lane after re-running the checks below. It is signed, and its tree 46120cf4 is exactly the tree Codex handed over. Base origin/dev ab24d57, 2026-10-01 ~05:35Z.

  • Check 1 (own tests RED then GREEN): the real-model test on the branch passes 3 of 3 (Overview and Runs validate, and the control case raises). Codex recorded RED before the page fix: the nested-wrapper page shape failed validation on page.name.

  • Check 2 (they can fail):

    • appending an unknown root field to runs.page.yaml makes the real-model test fail (1 failed, 2 passed); restored, it passes 3 of 3;
    • the in-test control (components injected at the root) raises Extra inputs are not permitted.
  • Check 3 (related suites, dev vs branch): the whole omnidash suite, npx vitest run:

    • dev ab24d57: 194 files, 1798 passed, 0 failed, 15 skipped;
    • branch: 195 files, 1809 passed, 0 failed, 15 skipped.

    The difference is pages.test.ts.

  • npm run check: exit 0.

  • The core model's own suite (tests/unit/models/dashboard/test_model_dashboard_config.py at core 47187e6a) and Playwright local-dashboard-contracts (1 passed, with the 1440x900 screenshot) were run by Codex. I have not re-run them.

Failure paths

n/a: this change writes no receipt, verdict or report. A page with no served data renders a typed empty state (NO_RUNS_YET, BASELINE_UNRESOLVED), never 0. pages.test.ts covers this.

Open defects

none known. These are UNVERIFIED rather than defects:

  • Live values. AC1's live served-catalogue membership and the pages' values with real data are unproven. No runtime serves these exposures locally yet: that is OMN-19976, through the read node in omnimarket#3169.
  • dashboard_id format. The real-model test does not check the format of dashboard_id. A non-UUID value still validates, so the format is only as strict as the core model makes it.

Local gates

  • No gate was bypassed — no --no-verify, no SKIP=, no --no-gpg-sign, no core.hooksPath override. Every pre-commit and pre-push hook ran.
  • Any hook that failed was fixed at the input, not worked around. The commit ran with OMNI_HOME set to the workspace clone root, which the lane-identity hook needs.

Not in this change

  • The other four pages.
  • Deleting server/sqlite-projection-reader.ts (AC3).
  • The runtime serving path (OMN-19976, OMN-20159).
  • Adding ModelDashboardConfig to core's generated TypeScript types.

Overlap-Reviewed: #337 — Jonah's parked OMN-19730 spike adds a ?view=execution-graph branch to App.tsx; this PR adds two page cases (local-overview, local-runs) to the page switch. Different code paths; both are needed.

Evidence-Ticket: OMN-19981
Evidence-Source: OCC#12070

Add local Overview and Runs dashboards backed by served projections, validate page configs with the core model, and keep empty and unresolved states explicit.
jonahgabriel pushed a commit to OmniNode-ai/onex_change_control that referenced this pull request Oct 1, 2026
* evidence(OMN-19981): author OCC companion for OmniNode-ai/omnidash#344

OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head b7088e769d60e4acd434702048924b5e3739db40.

* evidence(OMN-19981): self-bind OCC#12070 + rebind contract_sha256

---------

Co-authored-by: omnimarket-bot <bot@omninode.ai>
@jonahgabriel
jonahgabriel merged commit 2da199e into dev Oct 1, 2026
40 of 43 checks passed
@jonahgabriel
jonahgabriel deleted the lakshman/OMN-19981-local-pages-overview-runs branch October 1, 2026 05:54
@Patel230

Patel230 commented Oct 4, 2026

Copy link
Copy Markdown
Contributor Author

Close-out for omnidash#344 (OMN-19981). Merged 2026-10-01T05:54:41Z, merge commit 2da199e. It landed the local Overview and Runs dashboard pages (page YAML, loader, route, typed empty states, vitest and Playwright 1440x900 tests).

Verified: 37 check-runs succeeded; three were cancelled copies, and verify / verify (run 36820899798) and the eligibility job (run 36820900453) re-ran green. Typecheck & Tests run 36820638784 passed. Read live 2026-10-04T15:48Z; no review comments, and the only comments are bot notices.

Unblocks: Nothing is claimed as unblocked beyond omnidash#349, which changes these pages.

Left on OMN-19981: In Review; Jonah was asked at 2026-10-04T09:33Z to review and move it to Done. The Workflow, Usage, Credentials and API Keys pages and AC3 (deleting the sqlite reader) are scoped to the 10/5 sprint by the ticket description.

Thank you!

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.

2 participants