OmniRoute/docs/architecture/MONITORING_SECTIONS.md
Diego Rodrigues de Sa e Souza 7c23dab64d
Some checks are pending
Publish Fork Image to GHCR / Build and Push Fork Image (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Change Classification (push) Waiting to run
CI / Quality Ratchet (push) Blocked by required conditions
CI / Quality Gates (Extended) (push) Waiting to run
CI / Docs Sync (Strict) (push) Waiting to run
CI / Docs Lint (prose — advisory) (push) Waiting to run
CI / i18n UI Coverage (push) Waiting to run
CI / Build language matrix (push) Waiting to run
CI / i18n Validation (push) Blocked by required conditions
CI / PR Test Policy (push) Waiting to run
CI / Build (push) Blocked by required conditions
CI / Package Artifact (push) Blocked by required conditions
CI / Electron Package Smoke (push) Blocked by required conditions
CI / Unit Tests (1/8) (push) Blocked by required conditions
CI / Unit Tests (2/8) (push) Blocked by required conditions
CI / Unit Tests (3/8) (push) Blocked by required conditions
CI / Unit Tests (4/8) (push) Blocked by required conditions
CI / E2E Tests (3/9) (push) Blocked by required conditions
CI / Unit Tests (5/8) (push) Blocked by required conditions
CI / Unit Tests (6/8) (push) Blocked by required conditions
CI / Unit Tests (7/8) (push) Blocked by required conditions
CI / Unit Tests (8/8) (push) Blocked by required conditions
CI / Vitest (MCP / autoCombo / UI components) (push) Blocked by required conditions
CI / Node 24 Compatibility Tests (1/4) (push) Blocked by required conditions
CI / Node 24 Compatibility Tests (2/4) (push) Blocked by required conditions
CI / Node 24 Compatibility Tests (3/4) (push) Blocked by required conditions
CI / Node 24 Compatibility Tests (4/4) (push) Blocked by required conditions
CI / Node 26 Compatibility Build (push) Blocked by required conditions
CI / Node 26 Compatibility Tests (1/4) (push) Blocked by required conditions
CI / Node 26 Compatibility Tests (2/4) (push) Blocked by required conditions
CI / Node 26 Compatibility Tests (3/4) (push) Blocked by required conditions
CI / Node 26 Compatibility Tests (4/4) (push) Blocked by required conditions
CI / Coverage Shard (1/8) (push) Blocked by required conditions
CI / Coverage Shard (2/8) (push) Blocked by required conditions
CI / Coverage Shard (3/8) (push) Blocked by required conditions
CI / Coverage Shard (4/8) (push) Blocked by required conditions
CI / Coverage Shard (5/8) (push) Blocked by required conditions
CI / Coverage Shard (6/8) (push) Blocked by required conditions
CI / Coverage Shard (7/8) (push) Blocked by required conditions
CI / Coverage Shard (8/8) (push) Blocked by required conditions
CI / Coverage (push) Blocked by required conditions
CI / SonarQube (push) Blocked by required conditions
CI / PR Coverage Comment (push) Blocked by required conditions
CI / E2E Tests (1/9) (push) Blocked by required conditions
CI / E2E Tests (2/9) (push) Blocked by required conditions
CI / E2E Tests (4/9) (push) Blocked by required conditions
CI / E2E Tests (5/9) (push) Blocked by required conditions
CI / E2E Tests (6/9) (push) Blocked by required conditions
CI / E2E Tests (7/9) (push) Blocked by required conditions
CI / E2E Tests (8/9) (push) Blocked by required conditions
CI / E2E Tests (9/9) (push) Blocked by required conditions
CI / Integration Tests (1/2) (push) Blocked by required conditions
CI / Integration Tests (2/2) (push) Blocked by required conditions
CI / Security Tests (push) Blocked by required conditions
CI / CI Dashboard (push) Blocked by required conditions
Publish to Docker Hub / Resolve Docker release metadata (push) Waiting to run
Publish to Docker Hub / Build Docker (linux/amd64) (push) Blocked by required conditions
Publish to Docker Hub / Build Docker (linux/arm64) (push) Blocked by required conditions
Publish to Docker Hub / Publish multi-arch manifests (push) Blocked by required conditions
opencode-plugin CI / Test (Node 24) (push) Waiting to run
opencode-plugin CI / Test (Node 22) (push) Waiting to run
opencode-plugin CI / Build (push) Blocked by required conditions
OpenSSF Scorecard / Scorecard analysis (push) Waiting to run
semgrep / semgrep (push) Waiting to run
Wiki Sync / Sync wiki with docs (push) Waiting to run
Release v3.8.40
v3.8.40 cycle integration → main. All test gates green (Unit/Integration/Coverage/Node-compat/Quality-Ratchet). The only red check, 'PR Test Policy', is the test-masking heuristic firing on the cumulative ~57-commit release diff (legitimate assert consolidations already reviewed per-PR — Gemini CLI removal #5246, retired GPT models #5280, provider catalog refreshes); overridden with --admin per the documented release-PR convention. CodeQL/SonarQube advisory scans non-blocking; #5278's code already passed CodeQL on main. Homologated on VPS 192.168.0.15 (v3.8.40 healthy).
2026-06-29 08:40:06 -03:00

6 KiB

title version lastUpdated
Monitoring & Costs — Navigation Structure 3.8.40 2026-06-28

Monitoring & Costs — Navigation Structure

Implemented in Group B (plan 16). See src/shared/constants/sidebarVisibility.ts.


High-Level Navigation

The dashboard sidebar (after Group B) has these top-level sections in order:

Home
Providers
Combos
API Keys
Settings
Analytics
Costs          ← NEW (Group B, plan 16)
Monitoring     ← REORGANIZED (Group B, plan 16)
...

Costs section (new, level 1)

Path prefix: /dashboard/costs/

Item URL Description
Overview /dashboard/costs Aggregated cost dashboard (moved from Analytics)
Pricing /dashboard/costs/pricing Per-model pricing table
Budget /dashboard/costs/budget Budget thresholds + alerts
Quota Sharing /dashboard/costs/quota-share Quota Share pools + usage
Plan Config /dashboard/costs/quota-share/plans Per-provider plan overrides

Rationale: Pricing, Budget, and Quota Sharing were previously under Monitoring > Costs Parameters. Moving them to a dedicated top-level section makes them discoverable without navigating through observability tooling.


Monitoring section (reorganized)

The Monitoring section now has Activity at the top followed by 3 subgroups:

Monitoring
├── Activity             ← Timeline feed (top-level item)
├── Logs group
│   ├── Logs (all)
│   ├── Proxy Logs
│   └── Console Logs
├── Audit group
│   ├── Audit Log
│   ├── MCP Audit
│   └── A2A Audit
└── System group
    ├── Health
    └── Runtime

What changed from the old structure

Before After
Activity = tab inside Logs that rendered the Audit Log Activity = dedicated feed (/dashboard/activity)
Costs Parameters group in Monitoring Moved to Costs section
Flat list: Logs, Activity (logs), Audit, Health, Runtime, Pricing, Budget, Quota Structured 3-group + dedicated Costs section

Activity vs Audit Log

These two are now distinct:

Dimension Activity (/dashboard/activity) Audit Log (/dashboard/audit)
Purpose User-facing event feed ("what happened recently") Compliance / security log
Data source GET /api/compliance/audit-log?level=high GET /api/compliance/audit-log?level=all
Format Timeline, grouped by day, human-readable verbs + icons Dense paginaged table, 50/page
Filters Event type category Action, severity, actor, date range
Export Not available JSON export
Actor filter Not applicable Filterable by actor
Events shown High-level actions only (allowlist) All audit events

High-Level Actions allowlist

Defined in src/lib/audit/highLevelActions.ts. Controls which events appear in the Activity feed. The allowlist includes:

  • Provider add/remove/test events
  • Combo create/update/delete
  • API key lifecycle (create, revoke, rotate)
  • Budget threshold reached
  • Auth login/logout
  • Cloud agent session creation
  • MCP tool registration
  • Webhook create/delete
  • Quota pool/plan changes (quota.* actions, Group B)
  • Platform events (update, deploy)
  • Skill install/remove

Events not in this list appear only in the Audit Log.

Adding a new high-level action

Edit src/lib/audit/highLevelActions.ts and add the action string to HIGH_LEVEL_ACTIONS. This requires a PR (the list is code, not DB-configurable). The corresponding icon can be added to src/lib/audit/activityIcons.ts.


Redirect: /dashboard/logs/activity

The old path /dashboard/logs/activity is permanently redirected (HTTP 308) to /dashboard/activity via permanentRedirect() in src/app/(dashboard)/dashboard/logs/activity/page.tsx.

The legacy sidebar ID logs-activity is preserved in HIDEABLE_SIDEBAR_ITEM_IDS (but removed from SIDEBAR_DEFINITIONS) to avoid breaking user presets that reference the old ID.


i18n

Namespaces added by Group B:

Namespace key Covers
sidebar.costsSection Costs section label
sidebar.activity Activity sidebar item
sidebar.logsGroup Logs subgroup label
sidebar.systemGroup System subgroup label
sidebar.costsOverview Costs overview item
activity.* All Activity page strings (title, verbs, filters, empty state)

Source-of-truth locales: pt-BR and en. All other 39 locales fall back to English via the next-intl fallback mechanism (configured in src/i18n/config.ts).