# V2 Concordia Substrate

`@v2/concordia-substrate` is the V2-owned composition boundary for the planned
Concordia substrate while `@concordia/*` remains planned-only. The service wires
the four Nous primitives directly:

- `@nous/cooperative-bargaining` for case sessions and bargaining lifecycle.
- `@nous/preference-inference` for per-party Bradley-Terry preference plans and
  utility fits.
- `@nous/agreement-search` for seed candidates, kernel ranking, and Nash search.
- `@nous/concordia-sealed-memory` for sealed private intake and preference
  evidence.

The same composition now wires `@iris/concordia-assistant` for appellant /
arbiter dialogue scaffolding. Each surface includes an `assistantDialogue`
object with:

- appellant and arbiter `IntakeFlowState` records advanced to the first
  substantive `facts` prompt after consent gating;
- canonical Iris `promptForStep` scripts, with trauma-aware tone on crew
  conflicts;
- `PartyIsolatedPromptBuilder` and `validateContextIsolation` checks for each
  party context; and
- only sealed-memory refs for private context handoff.

`@oshun/concordia-integration` is also wired as the V2 to substrate event
routing shim. Each surface includes an `eventRouting` object with:

- a `ConcordiaIntegrationRegistration` for the V2 tenant;
- case, intake, preference, search, and escalation subscriptions produced from
  privacy-projected payloads only;
- case workbench, audit, and player dispute-status nav descriptors; and
- redacted telemetry sinks for non-performance Concordia events.

`@kuanyin/concordia-restorative` is wired for the high-impact moderation branch.
Anti-cheat appeals create a `moderation_appeal` restorative preflight with
required safety checks from Kuanyin, but the branch does not open automatically:
party consent and safety gates must pass before a restorative circle can start.
Tournament-result disputes and crew conflicts expose an explicit non-eligible
branch reason rather than silently entering the moderation path.

## Launch Gate

`@oshun/config` owns the launch gate for external exposure. The
`ENABLE_V2_CONCORDIA_SUBSTRATE` flag defaults to disabled until launch readiness
is signed off. While disabled, the composition surface still runs internal
off-rollback checks and reports `featureGate.blocksExternalExposure: true`; when
enabled, the same deterministic/off-rollback surface reports that it no longer
blocks external exposure.

The first V2 use cases are anti-cheat appeals, tournament-result disputes, and
crew conflicts. Each case is off rollback, stores private party artifacts only
behind sealed-memory references, and exposes search summaries without raw
private intake text. The Iris dialogue scaffold, Oshun event routing shim, and
Kuanyin restorative branch are also off rollback and cannot influence
deterministic gameplay simulation.

## Verification

`V2/ue/Tools/check-v2-concordia-substrate.py` validates package wiring, tests,
docs, lockfile entries, `tsconfig.base.json`, and CI workflow coverage.
