Console owns
- — Suite navigation & workspace structure
- — Cross-product aggregation & correlation
- — Unified queues & action routing
- — Identity links across product objects
- — Extension composition across consoles
suite trust state made operable without becoming the source of truth
Each Kontour product makes one kind of trust state portable — Surface claims, Survey reviews, Flow runs, Veritas readiness, agent sessions. Kontour Console brings them into a single place to see what's true, what's in progress, what's stale, what's blocked, what proof exists, and what should happen next — without taking over the products it observes. Product semantics stay with Surface, Survey, Flow, Veritas, and Flow Agents; Console aggregates, correlates, and routes.
$ npm run inspect:fixtures
Kontour Console fixture inspection
Event streams: 3
Projection snapshots: 2
claim claim-provider-directory verified freshness=fresh
process run-provider-118-review completed
gate gate-provider-evidence passed
review review-provider-118 approved
action action-apply-provider-118 read-only
───────────────────────────────
Validation: errors=0
actions shown as inert descriptors only
What it's built to answer
These are the questions Console is designed around. Today it can answer them from local fixtures and producer helpers; answering them from live Surface, Flow, Survey, and Veritas data is what the contracts below are being built toward.
The operating plane
The contract is simple: each product publishes a console projection — a read model shaped for display and action — backed by an append-only event stream. Console composes those projections and links related objects across products by their own IDs.
Projections stay product-owned; Console aggregates, correlates, filters, and routes — it never becomes a second source of truth. Today this runs through dependency-free producer helpers and local fixtures, not yet a live feed from each product.
Surface claim status, evidence, freshness
Survey fact-review records, candidates, decisions
Flow runs, gates, transitions, exceptions
Veritas repo readiness, evidence gaps
Flow Agents session + continuation state
each emits → console projection + event stream
───────────────────────────────
Kontour Console one correlated operating plane
Unified work queue
Stale claims, evidence gaps, open Flow gates, Survey review items, reverification requests, and Veritas readiness gaps usually live in five different tools. The queue is the design goal: bring them into one suite-level view so nothing waits unseen.
Each item keeps a link back to the product that owns it — and the product that owns the action stays the authority that runs it. The view below is illustrative; cross-product feeds are still being wired in.
stale surface · claim-provider-directory
→ request reverification
open flow · gate-provider-evidence
→ review evidence, then resume run
review survey · review-provider-118-npi
→ approve or send back a candidate
ready veritas · change-search-filters
→ merge with reduced review
───────────────────────────────
actions routed to the owning product
Example use case
Before a launch, an operator opens Console and sees one stale Surface claim, one Flow gate blocked on missing browser evidence, and one Veritas readiness report that passed. Console correlates the objects and routes each action back to the product that owns it.
The source of truth does not move. Console makes the next action visible without owning claim semantics, gate semantics, or policy.
attention surface · claim-provider-directory stale
blocked flow · release-browser-check missing
ready veritas · readiness-report passed
route stale claim → Surface
route blocked gate → Flow
route readiness evidence → Veritas
Operable, not authoritative
Console is a management plane, not a product kernel. It can host collaboration and monitoring, but it must not own the core semantics of the products it observes — and primitives never have to depend on it.
Where it is today
Console starts with the contracts that make a suite plane possible — event streams, projection boundaries, identity links, and a queue and action vocabulary. A shared shell comes after Surface, Flow, and Survey consoles prove which pieces are truly common.
Today the repo ships a local read-only fixture inspector, a
loopback event hub, and a local UI that renders live suite state over
SSE — backed by dependency-free producer helpers that write
control-plane records under a local .kontour root.
Cross-product wiring is still example-stage. No hosted service. No login.
// write control-plane records locally — no network const { KontourEmitter, LocalFileSink } = require("./src/console-foundation"); const emitter = new KontourEmitter({ sink: new LocalFileSink({ root: ".kontour" }), }); await emitter.emitEvent({ type: "claim.updated", producer: { product: "surface" }, subject: { kind: "claim", id: "claim-1" }, }); // → .kontour/events/ + .kontour/projections/
Kontour primitives make transparency portable. Kontour Console makes transparency operable — you can adopt any product without it.