App Surfaces (every screen in detail)
Every insigz screen in detail — Overview, Explore, Sources, Cases, Entity Inspector, network, reports, sessions, workshop, AAR — plus cross-surface conventions.
Each surface below lists: what it is · what's on it · key interactions. All read from the active project's slice of the canonical model.
Overview (/overview) — app-overview.jsx
The project home and default authenticated route (doctrine Q1 — no vanity "Today" dashboard). At-a-glance: source-health summary, open-case count, recent cases, latest alerts, latest reports. Header actions: SETTINGS → /project, OPEN EXPLORE → → /explore.
Explore (/explore, /workspace) — app-screens.jsx (live-ops) / app-research.jsx (research)
The investigation workspace.
- Live-ops: a MapLibre + Carto basemap (theme-aware) with toggleable layers (Vessels / Cables / Events / Sanctions / Weather), a collapsible layer chip (
◇ LAYERS · 3/5), and the AsOf control (green● LIVE/ amberAS-OF+ one-click↻ RETURN TO LIVE). A focus-mode (⛶) hides nav + chat; ESC exits. The analyst chat sits alongside; its right-edge reservation shifts map overlays left. - Research mode (
app-research.jsx): a document/evidence workspace — filters rail (collapsible), an assertions list with source-sentence provenance and confidence, a world map of findings, and a license-gated export modal. The mode switch is inline where both modes are enabled.
Sources (/sources) — the fusion layer
The catalog of feeds powering this project, with live (simulated) health. Stat tiles: live sources, observations/min, entities tracked, 30-day uptime. A family filter row, then a table: source · family · status (healthy/degraded) · rate · last obs · errors · INSPECT. Header actions: ◈ ONBOARD SOURCE → /sources/onboard (the Ontology Agent), + ADD SOURCE → project source config. The D/E/L/E ViewToggle previews empty/loading/error states.
Source inspect (/sources/:id) — app-detail-views.jsx
Opened from INSPECT. Header (name, family·connector·rate) + back/configure. Body: a status banner (healthy → "streaming nominally"; degraded → "down-weighted in fusion"), SIGNALS stat tiles (rate, last obs, errors·24h, status), the LINEAGE chain (Source→…→Report), and a RECENT OBSERVATIONS list (id, body, timestamp/place). Footer note: every record signed, classification scoped at the row, normalization additive.
Cases (/cases) — list
The investigations table for the project (open / watch / closed), with priority and counts. + NEW CASE opens NewCaseModal (title, priority HIGH/MEDIUM/LOW, status OPEN/WATCH) → creates + navigates to the new case + toast.
Case detail (/cases/:id) — app-screens.jsx
Collapsible header with its own AsOf control and a fullscreen map mode. Sections (each collapsible): Hypothesis · Events · Entities. Header actions: HIDE/SHOW HEADER, ← CASES, DRAFT REPORT → /reports. Events/entities link into the Entity Inspector.
Entity Inspector (/entities/:id) — app-entity-inspector.jsx
Drill into one entity (mock set: VESSEL-SF12, CABLE-ESTLINK2, ENTITY-Q42-12). Tombstone, <Freshness>, its own <AsOfControl> (pin the entity to a past time), observations, related entities, and sanctions exposure. Pinned-state banner spans the surface.
Entity network (/network) — app-entity-network.jsx
Link analysis as a navigable graph: entities as nodes, grounded ties as edges, rendered as a spinnable 3D point cloud (grab to rotate, scroll to zoom, drag a node). Colour by cluster / type / risk; node size + brightness track centrality; a side rail lists top connectors and strongest bridges. Tie-strength and entity-type filters prune the subgraph; click a node → Entity Inspector. Agent-suggested ties render dashed until a human confirms them (Q10). View modes: network (graph) · geo (on the basemap) · timeline (Pattern of Life). Listens for insigz:network-focus / insigz:network-view so the chat can pop a focused graph out as a canvas. Full detail: 14-entity-network.md.
Pattern of life (/network → timeline) — <ActivityTimeline>
An entity's activity over time against a robust baseline band, with anomalies flagged and scored (robust-z + direction). Drag to brush a window (totals, peak, anomalies vs expected) or click a bucket to inspect a moment; a scope picker switches which entity you're profiling. A deviation is the canonical trigger for a Standing Watch (§13). Full detail: 15-pattern-of-life.md.
Reports (/reports) — list
Columns: ID · TITLE (with ↪ derivedFrom when applicable) · ORIGIN (STAND-ALONE / DERIVED / IMPORTED) · STATUS (DRAFT/PUBLISHED) · DATE · AUTHOR · action (EDIT for drafts, VIEW for published). + DRAFT REPORT opens the Q7 three-origin modal (default STAND-ALONE; DERIVED reveals a case selector; IMPORTED reveals a file field) → creates + toast. Doctrine Q7: reports can stand alone — they are not forced to come from a case.
Report view / editor (/reports/:id) — app-detail-views.jsx
A document view: Executive summary · Timeline · Entities · Assessment · Recommendations, plus a CITATIONS chip row. A DRAFT shows a draft banner and an ✎ EDIT DRAFT toggle that turns sections into editable textareas ("DONE EDITING" → success toast). A PUBLISHED report shows ⤓ EXPORT PDF (info toast + print). Derived reports link back to their case.
Sessions (/sessions) — wargame projects only
The multiplayer Strategy-Day sessions table: session id · name · status (SCHEDULED/LIVE/COMPLETED) · date · cells · players · AAR status · OPEN. + NEW SESSION guides to author the scenario in the Workshop first. Seed examples include a LIVE Move-2 session and a COMPLETED Spring Strategy Day with a published AAR. Full mechanics: 07-wargame-extension.md.
Session detail (/sessions/:id) — app-detail-views.jsx
Header (name, status·date·cells·players) + actions: ← SESSIONS, ⛨ ENTER ARENA (live → /team-view), ✑ AAR (→ /aar-drafting). Body: a status banner, the phase timeline (Phase 0 Briefing → Phase 3 Resolution, with times and the current phase marked), the cells (NATO/EU, Hybrid, Civil/Media — only as many as the session has), and a live faculty queue card when the session is LIVE.
Workshop (/workshop) — app-workshop-editors.jsx
Scenario authoring, three tabs: Action categories (what each cell may DO), Adjudicator playbook (how the AI drafts consequences), Inject library (real-world events fired during play). Each is an editable table/list with EDIT (opens a modal editor) / DEL / + NEW, each firing a toast. Injects flow into the alert model (doctrine Q6 — no standalone inject surface in the live product).
AAR drafting (/aar-drafting) — app-aar-drafting.jsx
Staff after-action report. Left rail groups: NARRATIVE (Timeline · Decisions · Base rates · Prompts) + APPENDIX (Reasoning, with §-divided chains). Each section has approve / un-approve; top-right reads N/5 APPROVED. Export gate (Q8): the PDF export is locked (⊘ EXPORT LOCKED · N TO GO) until all five sections are human-approved; then SHIP TO CUSTOMER →. PREVIEW PDF opens a print-styled A4 window (running headers/footers, page-break control, signed-by footer) and triggers window.print().
Team view (/team-view) — arena previews
Preview what each cell sees — NATO/EU, Hybrid Threat, Civil/Media — because information asymmetry is enforced at the database, not by trust (doctrine). A role switcher + an optional NATO Light variant for daytime authoring. Backed by product-artboards*.jsx.
Cross-surface conventions
- D/E/L/E view-state previews — most list surfaces carry a
ViewToggle(Default / Empty / Loading / Error) that swaps in<EmptyState>/<SkeletonTable>/<ErrorState>for design review. - AsOf appears on Explore, Case detail, and Entity Inspector.
- The global analyst chat is the primary command surface (§16): it overlays every authenticated route (right panel on desktop, bottom sheet on mobile) except the onboarding surface where it gates. Verbs happen as in-chat widgets; the map, network, timeline and arena are the canvases you pop out to. A six-step journey rail sits in its header.
- Every action gives feedback — navigation, a modal, or a status toast (see 09-notifications-and-ux.md).
App Architecture & Routes
The insigz single-page app shell, hash router, full route map, theme system, projects layer, store, shared state primitives, and accessibility.
Agents & the Analyst Chat
The grounded, cited analyst chat available on every screen, its in-chat action widgets and journey rail, plus the specialised agent roster that drafts but never publishes.