Skip to content

Multiplayer coordination dashboard parity

BMO’s multiplayer proof story spans four read-model sections that usually live in different commands: a reference trace corpus validated in CI, a conformance profile posture check, live-export capability metadata (pointing at bmo stigmergy multiplayer export without running it), and optional operator-runtime conformance for one session. The multiplayer coordination dashboard composes those sections into one JSON readout so maintainers, automation, and sponsor-copy workflows can inspect posture without running separate tools.

The dashboard is read-only. It labels reference corpus rows as reference_corpus and runtime export as code_backed. It does not authorize coordination, acquire workspace claims, or block concurrent writes. For mutation-time overlap control, use workspace claims; for live child-agent inspection, use /agent-family; for a full trace document from a seeded zone, use bmo stigmergy multiplayer export.

Maturity: Maintainer-facing reference surface. Use it for remote inspection, automation, parity checks, and claim-matrix row C20 (maintainer matrix: maintainer artifact outside this repository at workspace root; proof ladder in Stigmergic delivery). It is not a collaboration product or a pre-write conflict gate.

Doc ownership: This page is the canonical parity contract (schema, surfaces, auth, parity scope, verification). Live-export flags, strict vs best-effort export, and zone-pressure requirements live in the maintainer topic multiplayer.md — do not duplicate export detail here.

Do not claimUse instead
A team or org collaboration dashboard/agent-family, mesh, or your own orchestration layer
A pre-write conflict gateWorkspace claims (process-local, advisory or hard)
Live multi-writer proof from corpus rowsStrict bmo stigmergy multiplayer export on a seeded harness
Live export health probebmo stigmergy multiplayer export --json (dashboard only advertises the CLI)
Full trace JSON in the dashboard payloadbmo stigmergy multiplayer export --json
Day-to-day zone pressure and follow-through/cognition, explain/triage CLI
Unified orchestration / task read modelTask aggregate (get_task_aggregate)

Fixed envelope strings from the read model:

  • mutation_boundary: read-only dashboard; it does not authorize coordination or mutation
  • coordination_posture_note: reference traces supply product scenarios; conformance supplies the trust contract
  • live_export.notes: runtime export is code-backed and redacted; it is not a live SaaS dashboard
You need…Prefer
Reference trace coverage before sponsor or demo copy updatesThis dashboard (reference + conformance sections)
Corpus validity vs live export capability in one documentThis dashboard
Operator-runtime capability snapshot for one sessionThis dashboard with --session-id
Who acts next in a session familyRun observability parity (cue ledger)
Recommendation follow-through over a calibration windowOperator cognition parity
Unified task / work-intelligence read modelTask aggregate (get_task_aggregate)
Ranked local child-agent conductor view/agent-family
Strict JSON trace from a live contested zonebmo stigmergy multiplayer export --json (strict default)

App.MultiplayerCoordinationDashboard in internal/app/multiplayer_coordination_dashboard.go:

  1. Loads the reference corpus and summarizes each canonical fixture.
  2. Validates conformance profile posture (corpus_valid, warnings on failure).
  3. Synthesizes live_export in multiplayercoord.NewReadout — it does not invoke bmo stigmergy multiplayer export or probe export health.
  4. Optionally attaches operator_runtime when session_id is set and OperatorRuntimeConformancePayload returns without error.
graph TB
  subgraph loaded["Loaded at build time"]
    RT["Reference trace corpus
internal/multiplayertrace/testdata/"] CP["Conformance validation
multiplayer_reference_trace_corpus"] OR["Operator runtime
session-scoped checks"] end subgraph synthesized["Synthesized metadata"] LE["live_export block
CLI pointer only"] end APP["App.MultiplayerCoordinationDashboard"] OUT["Readout JSON
bmo.multiplayer_coordination_dashboard.v1"] RT --> APP CP --> APP LE --> APP OR -. optional session_id .-> APP APP --> OUT subgraph jsonSurfaces["JSON parity surfaces"] HTTP["GET /v1/multiplayer-coordination-dashboard"] CLI["bmo stigmergy multiplayer dashboard --json"] TOOL["get_multiplayer_coordination_dashboard"] MCP["bmo_get_multiplayer_coordination_dashboard"] end subgraph presentation["Presentation surfaces (not JSON parity)"] TUI["/multiplayer_dashboard summary"] CLITXT["CLI without --json tabwriter"] end OUT --> HTTP OUT --> CLI OUT --> TOOL OUT --> MCP OUT -. rendered summary .-> TUI OUT -. tabwriter .-> CLITXT
flowchart LR
  subgraph prevention["Coordination prevention (mutation path)"]
    WC["Workspace claims"]
    PC["Plan contracts"]
  end

  subgraph observation["Coordination observation (read path)"]
    AF["/agent-family"]
    COG["/cognition"]
    TA["get_task_aggregate"]
    MP["/multiplayer_dashboard"]
    EXP["multiplayer export"]
  end

  WC -. does not replace .-> MP
  AF -. different question .-> MP
  TA -. different question .-> MP
  MP -->|"points to CLI for"| EXP
  PC -. orthogonal .-> MP
  COG -. different question .-> MP
SurfaceEntryDefault session scopeOutput
HTTPGET /v1/multiplayer-coordination-dashboardnoneJSON
CLIbmo stigmergy multiplayer dashboard --jsonnoneJSON (same app read model)
CLI (text)bmo stigmergy multiplayer dashboardnoneTabwriter summary, not parity JSON
Agent toolget_multiplayer_coordination_dashboardnoneJSON when getter wired
MCPbmo_get_multiplayer_coordination_dashboardnoneJSON when provider wired
TUI/multiplayer_dashboardactive session id when presentScrollable summary only

Aliases: /multiplayer-coordination-dashboard, /multiplayer_coordination_dashboard.

What is guaranteed in code today:

PairGuarantee
HTTP vs server tool getterTestMultiplayerCoordinationDashboardFn_JSONMatchesHTTPSurface — same JSON modulo generated_at_unix (stripped in test because wall-clock may differ)
CLI --json vs HTTPSame App.MultiplayerCoordinationDashboard read model; no automated byte-equal test
Agent tool (detached TUI)Falls back to app.MultiplayerCoordinationDashboard when HTTP getter is not wired (coordinator_option_builders.go)
MCP vs HTTPSame provider hook as server getter when MCP is enabled; no HTTP byte-equal test in MCP package tests
TUI / CLI textNon-parity presentation layers over the same underlying read model

generated_at_unix is not a parity field across back-to-back calls.

When the parity getter is not wired (typical: agent tool before HTTP server start, MCP with nil provider):

Agent tool returns structured JSON error (not a readout):

{
"error_code": "parity_getter_unavailable",
"message": "Multiplayer coordination dashboard is not available because the parity getter is not wired.",
"suggested_tools": ["operator_cognition_readout", "get_task_aggregate"],
"http_route": "GET /v1/multiplayer-coordination-dashboard"
}

MCP returns a text error containing not available when the provider is nil.

TUI calls com.App.MultiplayerCoordinationDashboard directly and does not use the parity getter — it remains available in detached TUI when the app is loaded.

Optional session scope for the operator_runtime section:

Parameter / flagEffect
session_id / --session-idAttempt operator-runtime conformance for one session
recent_runs_limit / --recent-runs-limitCap operator_runtime.recent_runs when session is set (default 5)

Omitted or empty session_id returns reference traces, live-export metadata, and conformance profile only — no operator_runtime key.

filters_applied always echoes recent_runs_limit (default 5 from multiplayercoord.NewReadout, even when session_id is omitted). When session_id is set, it is also echoed in filters_applied.session_id.

CLI examples:

Terminal window
# Reference + export metadata only
bmo stigmergy multiplayer dashboard --json
# Include operator-runtime conformance
bmo stigmergy multiplayer dashboard \
--session-id sess-abc \
--recent-runs-limit 10 \
--json

HTTP example:

Terminal window
curl -sS -H "Authorization: Bearer $BMO_AUTH_TOKEN" \
"http://127.0.0.1:8080/v1/multiplayer-coordination-dashboard?session_id=sess-abc&recent_runs_limit=10"

HTTP validation: Non-integer recent_runs_limit returns 400 with invalid recent_runs_limit.

HTTP route: GET /v1/multiplayer-coordination-dashboard (addProtectedRoute + requireAuth).

ConditionBehavior
AuthToken configured, missing or wrong Bearer401
No AuthToken, AllowNoAuth false401 authentication required
No AuthToken, AllowNoAuth true200 without Bearer
App not ready on HTTP server503 App not ready
Corpus load or parse failure500 (hard error)
Corpus validation fails200 with conformance_profile.corpus_valid: false and warnings
session_id set, session service unavailable200 with warning; no operator_runtime
session_id set, unknown session or runtime build error200 with operator_runtime_unavailable: … warning; no operator_runtime
session_id set, session known, degraded ledger200 with operator_runtime attached; checks may be partial / missing; warnings may include no_recent_runs

Unlike operator cognition parity, the dashboard does not return 503 when the recommendation ledger is unavailable for a session-less call: reference traces and export metadata do not require a session ledger.

Schema version: bmo.multiplayer_coordination_dashboard.v1 (internal/multiplayercoord/readout.go).

FieldMeaning
schema_versionbmo.multiplayer_coordination_dashboard.v1
generated_at_unixUTC generation stamp (not parity-stable across calls)
filters_appliedEcho of recent_runs_limit (always) and session_id (when set)
reference_tracesBounded summary per canonical corpus fixture
live_exportSynthesized export CLI pointer and maturity label
conformance_profileMultiplayer proof profile posture
operator_runtimeOptional; present only when session_id is set and payload build returns without error
mutation_boundaryFixed read-only disclaimer
coordination_posture_noteTrust-contract summary
warningsNon-fatal notices (corpus invalid, session down, runtime unavailable)

Each row summarizes one fixture from the canonical manifest (multiplayertrace.ReferenceTraceFiles()):

FieldMeaning
fixture_fileBasename under internal/multiplayertrace/testdata/
trace_idTrace identifier inside the fixture
scenario_kindconcurrent or sequential_handoff
titleHuman title when present in fixture
step_countNumber of composed steps
actor_countNumber of actors
maturity_labelAlways reference_corpus

Canonical fixtures:

FileRole
concurrent_workspace_contention.jsonBaseline concurrent scenario
concurrent_interrupted_explicit_approval.jsonStress: interrupted concurrent window
sequential_evidence_handoff.jsonBaseline sequential handoff
sequential_stale_work_superseded.jsonStress: stale work superseded

Incidental JSON beside this manifest is ignored by conformance loaders.

Synthesized in NewReadout — not read from a live export invocation.

FieldMeaning
availableAlways true today (advertises export exists; does not probe it)
cli_commandbmo stigmergy multiplayer export
maturity_labelcode_backed
notesRedaction / not-a-SaaS-dashboard disclaimer

Export flags, strict vs best-effort semantics, and zone-pressure requirements: multiplayer.md.

FieldMeaning
profile_idmultiplayer_reference_trace_corpus
maturity_labelreference_corpus
corpus_validResult of ValidateMultiplayerReferenceTraceCorpus

Attached when session_id is set and OperatorRuntimeConformancePayload returns without error. Built by operatorruntime.BuildPayload (internal/operatorruntime/conformance.go). A returned payload may still carry degraded checks and warnings (for example no_recent_runs) — that is not the same as the attach failing (unknown session → warning, no operator_runtime key).

FieldMeaning
schema_versionOperator-runtime payload version (currently 1)
profilebmo
session_idScoped session
checksSeven capability probes (see below)
recent_runsBounded session-family run references
warningsDiagnostic codes such as session_unknown, no_recent_runs, workspace_claims_advisory, minimal_mcp_only

Check keys and status vocabulary (present | partial | advisory | missing):

KeyWhat it probes
actor_identityKnown session + durable run lineage for actor type
authority_boundaryPermission and question surfaces
workspace_stateShared runtime vs advisory workspace claims
runtime_evidenceDurable agent run ledger and recent session-family rows
handoff_recoveryContinuity capsules and historian retrieval
interruptibilityAuthority gates + run lineage + interruptibility evidence model
boundary_honestyFull app runtime vs minimal MCP-only posture

Each check includes summary text and sources[] with name, kind, durability, and summary.

One reference row shown; live CLI returns all four canonical fixtures. generated_at_unix is illustrative.

{
"schema_version": "bmo.multiplayer_coordination_dashboard.v1",
"generated_at_unix": 1718841600,
"filters_applied": {
"recent_runs_limit": 5
},
"reference_traces": [
{
"fixture_file": "concurrent_workspace_contention.json",
"trace_id": "concurrent_workspace_contention",
"scenario_kind": "concurrent",
"title": "Concurrent workspace contention with validation handoff",
"step_count": 4,
"actor_count": 3,
"maturity_label": "reference_corpus"
}
],
"live_export": {
"available": true,
"cli_command": "bmo stigmergy multiplayer export",
"maturity_label": "code_backed",
"notes": "Runtime export is code-backed and redacted; it is not a live SaaS dashboard."
},
"conformance_profile": {
"profile_id": "multiplayer_reference_trace_corpus",
"maturity_label": "reference_corpus",
"corpus_valid": true
},
"mutation_boundary": "read-only dashboard; it does not authorize coordination or mutation",
"coordination_posture_note": "reference traces supply product scenarios; conformance supplies the trust contract"
}

With --session-id, expect an additional operator_runtime object and filters_applied.session_id set.

Multiplayer coordination dashboard
Live BMO TUI: /multiplayer_dashboard renders a scrollable summary of reference trace rows, corpus_valid, live-export metadata, and warnings — not the full JSON parity payload (use CLI --json or HTTP for operator_runtime checks).

The TUI dialog (internal/ui/dialog/multiplayer_coordination_dashboard.go) renders a scrollable summary: schema line, corpus_valid, live-export flags, per-fixture reference rows, warnings, and coordination posture note. When operator_runtime is present, the TUI shows a one-line stub (“see CLI/HTTP JSON for full payload”) rather than inlining every check.

Press r to refresh (2s load timeout). When opened from an active session, the TUI passes that session id by default; CLI and HTTP default to no session unless you set one explicitly.

runtime_features distinguishes the two access paths:

FeatureMarks when
multiplayer_coordination_dashboard_apiGET /v1/multiplayer-coordination-dashboard succeeds
multiplayer_coordination_dashboard_toolAgent or MCP getter returns payload

Use these to tell whether HTTP routes, native tools, or both are exercised on a live instance.

Terminal window
bmo stigmergy multiplayer dashboard --json

With HTTP service running and auth configured:

Terminal window
curl -sS -H "Authorization: Bearer $BMO_AUTH_TOKEN" \
"http://127.0.0.1:8080/v1/multiplayer-coordination-dashboard" | jq .

Maintainer conformance lanes (HTTP/CLI parity tests, trace export, and stigmergy spec harness) live in docs/topics/quality/ci.md and the multiplayer.md maintainer topic — not on this public reference page.