-
Notifications
You must be signed in to change notification settings - Fork 1
integrity dashboard
title: integrity-dashboard created: 2026-07-07 updated: 2026-07-31 type: entity tags: [infrastructure, sdk] confidence: medium source_files:
- integrity-dashboard/src/App.tsx
- integrity-dashboard/src/config.ts
- integrity-dashboard/src/chain/bytecode.ts
- integrity-dashboard/src/components/ui/RegisterAgentModal.tsx
- integrity-dashboard/src/components/ui/VisualTopologyMap.tsx
- integrity-dashboard/src/services/oracle.ts
- integrity-dashboard/src/services/userapi.ts
- integrity-dashboard/src/components/shared/SeededDataBadge.tsx
- integrity-dashboard/demo/src/integrity_demo/main.py
- integrity-dashboard/demo/src/integrity_demo/agent_loop.py
- integrity-dashboard/demo/src/integrity_demo/userapi_bridge.py
- integrity-dashboard/scripts/seed_mock_data.py
- integrity-dashboard/.env.example
- scripts/sync_abis.py
This page was rewritten from scratch on 2026-07-12. The version of
integrity-dashboard it previously described (a mature app with AgentListPage/
AgentDetailPage/MarketsPage/LeaderboardPage/WalletPage/
CapitalAllocationPage, real JWT auth, a Demo/Live data-mode toggle backed
by MSW fixtures, demo/ as a real Python scenario engine, 129 vitest +
16 Playwright specs) no longer exists on disk. integrity-dashboard/src/
was independently rewritten into a new 16-page shell (all file mtimes
~2026-07-12 00:00-00:20, well after this page's prior "2026-07-11" content)
by a process outside this wiki's tracking, confirmed by the user as
intentional ("the new dashboard ui") rather than accidental data loss. None of
the file paths this page previously cited under source_files exist
anymore. Per this wiki's own "no aspirational content" rule, the old
content has been replaced rather than patched — it described a build that
is simply gone. If you need it for historical reference, it's recoverable
from this file's prior version in your editor's/tool's history, not from
anything in the current tree.
- Page consolidation (2026-07-16) — route count and names below are stale
- What actually exists now (as of 2026-07-12, this session's work — page
- Prereq wiring: benchmarks, VCs, custodial wallet, XNS, governance (2026-07-25)
- TriMetricWidget fixed 2026-07-15 — was the most severe fake-data surface in the dashboard
- What is NOT done yet
App.tsx now defines 11 routes, not 16: /, /landing, /identity,
/contracts, /settings, /finance, /traces, /diagnostics, /health,
/agents, /documents. Six pages named throughout the rest of this
document no longer exist under those names — AuditPage,
ChainOfThoughtPage, CompareTracesPage, ExchangePage,
IntelligencePage, SdkTelemetryPage were deleted and consolidated into
two new pages:
-
TraceAnalyticsPage.tsx(/traces) — mergesChainOfThoughtPage's Historical Traces DAG view andCompareTracesPage's Gantt/compare view into one tabbed page (Live Stream, Historical Traces, Metrics, Time-Travel Debugger, Compare Traces). Metrics/Time-Travel Debugger are honestlySeededDataBadge-marked — no backend endpoint exists for either. -
SystemDiagnosticsPage.tsx(/diagnostics) — mergesSdkTelemetryPage's real oracle telemetry/OTLP-volume view andAuditPage's disclosed-simulated audit-log feed into one tabbed page (SDK Telemetry, Audit Logs).
IntelligencePage's real radar-widget work (below) now lives on the
Dashboard (/) directly. ExchangePage's real wagmi market-entry flow
was folded into FinancePage's "A2A Markets & Escrow" tab
(src/components/finance/MarketsEscrowPanel.tsx).
Re-verified for real after the consolidation, not just by reading code:
brought up a full local anvil + docker-compose stack, generated a real
3-span nested OTel trace via the SDK's traceable() API against the live
oracle, and confirmed TraceAnalyticsPage renders it as a real DAG with
real span attributes over the live SSE stream, and SystemDiagnosticsPage's
telemetry volume chart reflects the same real data — the demo→oracle→
frontend pipeline described in §10 of PRODUCTION_GAPS.md survived the
rename intact. Also found and fixed one real bug this pass:
FinancePage.tsx's live ITK balance was off by 10^18 (missing
formatUnits(..., 18) on the raw wei-scale itk_balance string from
GET /v1/agent/{id}/wallet), rendering a nonsense multi-quintillion-dollar
portfolio value — see PRODUCTION_GAPS.md §7 for the full writeup.
names below predate the 2026-07-16 consolidation above)
React 19 + Vite + TypeScript, 16 routed pages (src/App.tsx). The
rewritten shell shipped cosmetically complete but has now been fully resolved
with real backend/chain wiring and a Notion-style drag-and-drop widget layout engine.
-
Notion-style block & widget dashboard.
DashboardPage.tsxis a drag-and-drop grid (react-grid-layout). Toggle "Edit Layout" to drag widgets by their grab handle and resize them.-
WidgetRegistry.tsxmaps widget types (gauge,throughput,latency,nodes,events,radar,notes) to real components. -
WidgetWrapper.tsxprovides the common panel chrome — drag handle, delete/duplicate menu. - Layout and widget list persist to
localStorage, with a "Reset" button to restore the defaults.
-
-
The build was broken; it isn't anymore. A missing
return, two imports pointing at nothing, and unused-variable lint errors were blockingnpm run build/npm run lint. Fixed, plus two shared components (src/shared/{Panel,StatusBadge}.tsx) that were imported but never written. Verified via Playwright: all 16 routes render with zero console errors. -
Wallet/data infrastructure.
wagmi+viem+@tanstack/react-querypower a realConnectWalletButton(injected wallets only, no RainbowKit).src/services/oracle.ts/userapi.tsare typedfetchclients checked field-for-field againstspec/ais-api/v1/openapi.yaml. Every agent-attributable on-chain write goes through one shared helper,useSovereignAgentWrite, which wrapsSovereignAgent.execute(target, 0, calldata)— the same patternintegrity_sdk/markets.py's_execute_via_agentuses.scripts/ sync_abis.pynow also emits trimmed ABIs intosrc/abis/and copiesdeployments.*.jsonintosrc/deployments/. -
Real reads, verified against a live stack (real anvil + real
cargo runoracle-backend + real registered test agents — not assumed from response shape alone):-
AgentContext— was 3 hardcoded fake agents, noworacle.listAgents() -
AgentsPage— real DID/tier/AIS/created_at -
IntelligencePage— real leaderboard viaoracle.getLeaderboard() -
IdentityPage— real DID + ITK balance/open-positions viaoracle.getWallet() -
ExchangePage— realoracle.listMarkets()for the Active Markets list -
FinancePage— real ITK balance, transaction history, and allowances -
DashboardPage— real AIS distribution + high-integrity %, live-updated over SSE
Confirmed end-to-end via Playwright: a real agent DID registered through
integrity-cliappears verbatim in the rendered page, sourced from a captured real network response — not just "the build compiles." -
-
Honest labeling for what's still simulated. A new
src/shared/SeededDataBadge.tsxmarks every page with no real backing yet:ChainOfThoughtPage,SdkTelemetryPage,CognitionPage,CompareTracesPage,DocumentsPage,HealthPage, most ofContractsPage(the compile/deploy flow is a labeled sandbox, not a real compiler), parts ofExchangePage(the order-book UI —IntegrityMarketis a pari-mutuel pool, so there's no honest order book to show),FinancePage's treasury stats,ActuarialHub, parts ofDashboardPage's widget grid, and severalSettingsPagepanels. -
Mock-data seeding, done right.
scripts/seed_mock_data.pyregisters real test agents (and one real market) throughintegrity_sdk, the same way a real agent would register — not a "write fake rows into Postgres" script. Gated byMOCK=true. Runs outside the browser, since it needs the funder's private key.VITE_MOCK_MODEis read-only in the UI — it just reports whether the build is pointed at a seeded stack; it can't seed anything itself. -
Wallet-interactive writes, for real (2026-07-12).
-
ExchangePage's "Place Order" does a real two-transactionapprove+enterPositionflow, gated on the connected wallet matching the agent's on-chain controller. -
HealthPage's Smart BAA registry reads realSmartBAAFactory .BAACreatedevent logs and wires realsign()/revoke()writes. -
ClaimAgentModalwas rewritten, not patched: the old "claim via signature challenge" premise had no on-chain support at all — it submitted a transaction using ERC-20approve's selector as if it were a claim call, silently swallowing the failure. The new "Verify Agent Control" modal does something real: resolves the on-chain controller, compares it to the connected wallet, and has the userpersonal_signa "prove you hold this key" confirmation.
All three write paths verified against real anvil + oracle: a real
enterPositiontransaction moved a market'soutcome_stakedfrom 0 to a real non-zero value. -
-
userapi auth, tests, and docs (2026-07-12).
SettingsPage's login/register/API-key management verified end-to-end via Playwright against a real runningintegrity-userapi+ isolated Postgres. New test infrastructure: 9 vitest unit tests (client request shapes, hook logic, context behavior) and 18 Playwright e2e tests (all 16 routes, zero console errors, a real-network-response assertion), both run against a real backend+chain.README.mdrewritten from the default Vite scaffold into real project docs. -
UI validation and agent selection (2026-07-14). Fixed strict TypeScript errors in
DashboardPage.tsx/FinancePage.tsxthat were blockingnpm run build. PropagatedselectedAgentIdfromAgentContextintoDashboardPage/ChainOfThoughtPage, so the SSE hooks correctly filter live OTLP/AIS data to the active agent. -
UI layout and legacy aesthetic integration (2026-07-15).
-
AgentsPage: Extracted theClaimAgentModalandAgentOnboardingworkflows from isolated modals into prominent inline dashboard cards above the agents grid, significantly improving discoverability of the onboarding pipeline. -
IdentityPage: Fundamentally refactored to replicate the core layout and aesthetics of the legacyintegrity-dashboardcodebase. Replaced giant glassmorphism panels with a compact Agent Status Strip (DID, AIS, Tier, TEE), a dedicated Hero Bar, and a sub-navigation tab interface sorting components intoIdentity & DID,Enclave & Security,Economic Capacity, andCredentials. -
XNS: Fully wired theXNSSearchServiceinto the Identity page's UI layout. -
ContractsPage: Expanded the IDE workstation with full features: multi-tab editor for files, interactive build/deploy panel, and a dynamic "Deployed Contracts" inspector that generates interactive ABI buttons via source code regex analysis.
-
-
On-chain primitives deployment and XNS registration (2026-07-18).
- Decompiled and bundled compiled Foundry bytecodes for
SovereignAgentandStateAnchorintobytecode.ts. - Built the
RegisterAgentModalstep-by-step deployment wizard, implementing real, mock-free transactions to deploy core contracts, authorize the oracle signer via SovereignAgent proxy execution, deploy proxy clones via theAgentPrimitivesFactory, and sync indexing with the Oracle database. - Upgraded the
IdentityPageto support real on-chain reads for active primitive addresses, status indicators, and audit logging feeds. - Fully integrated write routing using
SovereignAgent.executeto delegateregistercalls to theXibalbaNameServicecontract. - Re-implemented
XNSSearchServiceto perform real read-only contract resolutions mapping handles to identities on-chain. - Consolidated DID, XNS management, claim/registration actions, history logs, security credentials, and the 7 primitive contracts onto a single tabless page layout, displaying the primitives in a structured status table.
- Decompiled and bundled compiled Foundry bytecodes for
Five backend prereqs were built + wired into the dashboard, each with an honest degradation path (never a mock):
-
SDK benchmarks —
oracle.getBenchmarks()(GET /v1/benchmarks) drives the model/provider stability panels from real network-wide telemetry aggregates. -
Verifiable Credentials —
DIDExplorernow shows a real Ed25519-signed W3CAgentIntegrityCredentialviaoracle.getAgentVc()(GET /v1/agent/{id}/vc), alongside the real DID document. -
Custodial app-wallet —
TokenWalletshows both the real on-chain balance/history and the userapi custodial $ITK ledger (userapi.getWallet()/walletTransfer()— see integrity-userapi); verified live (faucet 10000 → 9750 after a 250 transfer). -
XNS —
XNSSearchServiceresolves human handles on-chain viaoracle.resolveXns()(falling back to directdid:/0xlookups), andDIDExplorer'sXNS_RESOLVEfield reflects the real primary handle viaoracle.getAgentHandle(). The register-handle write flow is deliberately deferred (CLI/SDK). -
Governance —
GovernancePanel+GuardianPilotrender liveIntegrityGovernanceproposals viaoracle.getGovernanceProposals()(GET /v1/governance/proposals). Both degrade to their honest "Not Yet Live" state on theMissingSingleton(HTTP 400) the endpoint returns until the contract is deployed — never a live-but-empty list. The propose/vote write flow is deliberately deferred (CLI/SDK); an inline note says so. See Governance.
The MissingSingleton→400 contract was verified empirically against the live oracle
(both XNS + governance endpoints returned 400 with a descriptive body; control route
/v1/agents still 200). All frontend degradation branches key on that. Full build (tsc +
vite) + 198 forge tests green.
The dashboard's "Tri-Metric Risk Analysis" panel badged itself "LIVE MODEL"
while every number was fake: avgAis picked from 3 hardcoded magic
constants, blockedRate/riskExposure literal strings with no
computation, all 3 sparklines fabricated trend arrays — unlike every
sibling in WidgetRegistry.tsx, which either fetched real data or
disclosed via SeededDataBadge. Two of the three metrics are now real:
AIS Deficit and BCC Intent Violation Rate fan out oracle.getAis()
across every agent in the global AgentContext (same pattern the gauge
widget already used) and average real ais/components.compliance. The
third ("Smart BAA Value at Risk") stays honestly marked unavailable — no
probability-of-leak model or network-wide staked-collateral index exists
anywhere in this protocol (same conclusion independently reached for
ActuarialHub, below). Two real runtime bugs were only caught by actually
loading the dashboard against the live stack, not by tsc/lint/build:
a KaTeX-remount render-storm that froze the browser tab (the 3 formula
sub-components were redefined as new component types on every render —
fixed by hoisting them to module scope) and a grid-height clipping bug
once real content replaced the old sparkline decoration (DEFAULT_LAYOUTS
bumped h: 2 → h: 3). Re-verified via live screenshots against a real
registered agent, not just a passing test suite.
-
integrity-dashboard/demo/(the Python scenario-engine directorymake demoreferences) now exists on disk (as of 2026-07-15), andmake demoitself now works (as of 2026-07-16 — it was documented in three places but had no actual Makefile target until this pass). It's a real scenario engine (integrity_demopackage) that registers 4 persona agents and exercises a capital-allocation tool-call loop against a live chain; as of 2026-07-15 it also has an opt-in completion-callback bridge intointegrity-userapi'sdemo_runstable (userapi_bridge.py— see integrity-userapi). Actually running it end-to-end against a real local chain + real oracle (2026-07-16) found and fixed several real bugs no amount of code reading had caught: every OTel span it ever exported was silently rejected by the oracle (missingintegrity.agent.id, plus a structural one-shot-global-tracer issue given this engine manages 4 different agent identities in one process — fixed with real per-agent tracers, verified by querying the oracle'sotel_spanstable directly post-run); one LLM call failure used to crash the whole process with a raw traceback (now degrades gracefully, matching the registration loop's existing per-agent error handling); and there was no preflight check that the funder wallet (real Base Sepolia balance: ~0.001 ETH, 10x under one agent's default funding) could actually afford the run before spending gas on a doomed one.Additionally, during integration testing on 2026-07-16, we found and fixed two other crucial issues:
- Added support for Google Gemini OpenAI compatibility in
agent_loop.pyto allow execution usingGEMINI_API_KEY(usinggemini-2.5-flashvia the OpenAI client compatibility layer). - Integrated the SDK's
NonceStorein the capital allocation tool call flow rather than a hardcodednonce=1, preventingBCC_NONCE_REPLAYrejections in sequential runs.
The full closed-loop data path has now been verified successfully locally: agent registration -> oracle registration -> OTel trace ingestion -> reputation sync -> BCC intercept gate authorization -> on-chain capital allocation. Full writeup:
PRODUCTION_GAPS.md§9. Still genuinely missing: no UI trigger anywhere in this dashboard creates ademo_runsrow or launches this CLI process — it remains an operator-run script against live Base Sepolia using a funder private key. - Added support for Google Gemini OpenAI compatibility in
-
ExchangePage's order-book/candlestick UI andDashboardPage's latency/node-fleet/security-event widgets remain honestly seeded (SeededDataBadge) — no on-chain order book exists for a pari-mutuel market, and no WSS/OTLP telemetry-streaming infra exists yet (see rootPRODUCTION_GAPS.md).throughputis no longer in this list — it was wired to realoracle.getTelemetryVolume/getOtelVolumedata earlier this session; the claim that it was still seeded was stale. -
HealthPage's "Propose BAA Contract" (creating a new BAA) is a disabled stub — it requires acting as the covered-entity persona, which this dashboard's single-connected-wallet model doesn't represent. -
Bundle size: a single ~1.9MB JS chunk (KaTeX, Monaco, and the full wagmi/ viem/@wagmi/core surface all ship in the main bundle) — noted by Vite's own build warning, not yet addressed with code-splitting.
-
Architectural Gaps for Complete Data: The Dashboard's Hero Metrics (throughput/latency) require an OTel metrics sink in
integrity-oracleto aggregate tracing data. Security event alerts (blocked interactions) need event-sourcing in the Oracle to capturebcc_middlewarepolicy evaluations. Transaction history requires retroactive USD pricing via an external price feed integration in the Oracle.
Related: integrity-oracle,
integrity-userapi (the demo/ scenario engine's
completion-callback bridge target),
AIS API spec (the field-shape source of
truth oracle.ts was verified against), Agent Primitives
(the SovereignAgent.execute write convention).
Generated from INTEGRITY-LATEST/docs/wiki. Edit the canonical repository files, not this mirror.
- A2A Negotiation Protocol [PLANNED]
- AIS API — Versioned Wire Spec
- Agent Integrity Score (AIS)
- Agent Primitives (Self-Sovereign Identity)
- Behavioral Commitment Chain (BCC)
- ComplianceGate & Integrity Health
- Cross-Chain Reputation Sync [PLANNED]
- Decentralized Identifier (DID)
- Identity Ceiling & Verification Ladder [BUILT]
- Integrity Market (Prediction Markets, Binary Options, A2A Capital Allocation)
- Integrity Protocol Specification
- Local Metrology (Client-Side AIS Signal Derivation)
- Merkle Batching & Anchoring Convention
- Observability & PHI Safety Pipeline
- On-Chain Governance
- Persistent Memory Bridge
- Persistent Memory, Genesis Root & Lineage [PARTIALLY BUILT]
- Smart BAA (On-Chain Business Associate Agreement Escrow)
- Telemetry Ingestion Pipeline
- Testing Strategy
- The Four Foundational Primitives
- Xibalba Agent Operating Model
- ZK-ML Model-Inference Verification [PLANNED]
- Zero-Knowledge Proving Pipeline