import type { DomainTwin } from './types'; export const DOMAIN_TWINS: readonly DomainTwin[] = [ { id: 'twin-terra', verticalId: 'terra', name: 'TerraTwin', description: 'Tracks properties, vendors, pipeline risk, asset exceptions, and deal outcomes across the real estate portfolio.', healthScore: 91, signalVolume: 342, activeRisks: 14, pendingDecisions: 7, openApprovals: 3, outcomeVelocity: 82, evidenceCompleteness: 88, chainlightConfidence: 0.87, sentraGovernanceState: 'green', psycheGovernanceState: 'green', argoLearningStatus: 'active — 12 lessons last 30d', proofChainCoverage: 94, topSignals: ['Pipeline velocity slowing in Southeast region', 'Vendor SLA breach — HVAC contractor 3d overdue', 'Occupancy dip below 92% threshold at property TX-0412'], topRisks: ['Deal slippage on Dallas industrial portfolio', 'Budget overrun risk on Miami renovation', 'Lease expiration cluster — Q3 2026'], nextBestActions: ['Escalate vendor SLA breach to operations lead', 'Schedule portfolio review for Q3 lease cluster', 'Request updated appraisal for Dallas industrial'], linkedRoutes: ['/terra', '/fabric/risks', '/fabric/evidence'], }, { id: 'twin-vessels', verticalId: 'vessels', name: 'VesselsTwin', description: 'Tracks voyages, AIS gaps, sanctions flags, cost exposure, and port exceptions across the maritime fleet.', healthScore: 88, signalVolume: 518, activeRisks: 19, pendingDecisions: 11, openApprovals: 5, outcomeVelocity: 76, evidenceCompleteness: 85, chainlightConfidence: 0.82, sentraGovernanceState: 'amber', psycheGovernanceState: 'green', argoLearningStatus: 'active — 18 lessons last 30d', proofChainCoverage: 91, topSignals: ['AIS gap detected — MV Horizon Star, 4h dark window', 'Demurrage accruing at Rotterdam — 2d over laycan', 'Sanctions screening delayed for Novorossiysk-bound cargo'], topRisks: ['Sanctions exposure on Black Sea route', 'Weather disruption — Typhoon track crossing Pacific route', 'Fuel cost spike — bunker prices up 8% WoW'], nextBestActions: ['Trigger manual AIS reconciliation for MV Horizon Star', 'Escalate Rotterdam demurrage to chartering desk', 'Re-screen Novorossiysk cargo with updated OFAC list'], linkedRoutes: ['/vessels', '/fabric/signals', '/fabric/risks'], }, { id: 'twin-counsel', verticalId: 'counsel', name: 'CounselTwin', description: 'Tracks matters, deadlines, evidence gaps, attorney-review packets, and filing posture across the legal portfolio.', healthScore: 93, signalVolume: 214, activeRisks: 8, pendingDecisions: 6, openApprovals: 2, outcomeVelocity: 89, evidenceCompleteness: 92, chainlightConfidence: 0.91, sentraGovernanceState: 'green', psycheGovernanceState: 'green', argoLearningStatus: 'active — 8 lessons last 30d', proofChainCoverage: 96, topSignals: ['Discovery deadline in 5d — Matter CM-2024-0891', 'Missing medical records for claimant Jenkins', 'Filing status change — Motion to Dismiss granted in part'], topRisks: ['Evidentiary gap on claimant Rodriguez depositions', 'Deadline cluster — 4 filings due within 72h window', 'Expert witness availability conflict — Dr. Chen'], nextBestActions: ['Assemble discovery packet for CM-2024-0891', 'Request medical records from provider network', 'Schedule backup expert for Dr. Chen conflict'], linkedRoutes: ['/counsel', '/fabric/evidence', '/fabric/decisions'], }, { id: 'twin-carlota', verticalId: 'carlota', name: 'CarlotaTwin', description: 'Tracks household operations, residence service, vendors, preferences, and privacy controls across the family office.', healthScore: 95, signalVolume: 87, activeRisks: 4, pendingDecisions: 3, openApprovals: 1, outcomeVelocity: 94, evidenceCompleteness: 90, chainlightConfidence: 0.93, sentraGovernanceState: 'green', psycheGovernanceState: 'green', argoLearningStatus: 'passive — 3 lessons last 30d', proofChainCoverage: 88, topSignals: ['Landscaping vendor 2d behind spring schedule', 'HVAC maintenance window approaching — primary residence', 'Guest arrival coordination gap — Memorial Day weekend'], topRisks: ['Vendor reliability concern — pool service provider', 'Privacy exposure — new staff onboarding incomplete', 'Seasonal transition delay — summer property prep'], nextBestActions: ['Confirm landscaping vendor recovery plan', 'Schedule HVAC pre-season service', 'Complete staff NDA processing for new hires'], linkedRoutes: ['/carlota-jo', '/fabric/outcomes'], }, { id: 'twin-aegis', verticalId: 'aegis', name: 'AegisTwin', description: 'Tracks vulnerabilities, identities, controls, incidents, and remediation across the security posture.', healthScore: 86, signalVolume: 891, activeRisks: 23, pendingDecisions: 9, openApprovals: 6, outcomeVelocity: 71, evidenceCompleteness: 83, chainlightConfidence: 0.79, sentraGovernanceState: 'amber', psycheGovernanceState: 'amber', argoLearningStatus: 'active — 22 lessons last 30d', proofChainCoverage: 89, topSignals: ['Critical CVE-2026-3891 detected — 12 assets exposed', 'Identity anomaly — service account lateral movement attempt', 'Control drift — MFA bypass rate increased 3x in 7d'], topRisks: ['Unresolved critical vulnerability backlog at 14d MTTR', 'Access review overdue — 340 identities pending', 'Backup verification gap — 3 systems untested in 90d'], nextBestActions: ['Prioritize CVE-2026-3891 patch across exposed assets', 'Trigger emergency access review for dormant service accounts', 'Schedule backup recovery drill for untested systems'], linkedRoutes: ['/sentra', '/fabric/risks', '/fabric/signals'], }, { id: 'twin-lyte', verticalId: 'lyte', name: 'LyteTwin', description: 'Tracks initiatives, KPIs, dependencies, owners, and executive decisions across business operations.', healthScore: 90, signalVolume: 256, activeRisks: 11, pendingDecisions: 8, openApprovals: 4, outcomeVelocity: 85, evidenceCompleteness: 87, chainlightConfidence: 0.88, sentraGovernanceState: 'green', psycheGovernanceState: 'green', argoLearningStatus: 'active — 14 lessons last 30d', proofChainCoverage: 92, topSignals: ['Revenue KPI 4% below Q2 target', 'Initiative "Platform v3" milestone slipped 2 weeks', 'Ownership gap — Data Engineering lead transition'], topRisks: ['Execution drift on 3 strategic initiatives', 'Decision delay — pricing model approval blocked 8d', 'Board reporting gap — Q1 narrative incomplete'], nextBestActions: ['Escalate revenue KPI gap to CRO with root cause analysis', 'Assign interim owner for Data Engineering initiatives', 'Schedule pricing model decision session with CFO'], linkedRoutes: ['/lyte', '/fabric/decisions', '/fabric/outcomes'], }, { id: 'twin-sentra', verticalId: 'sentra', name: 'SentraTwin', description: 'Tracks approvals, blocked actions, policy decisions, audit events, and rollback readiness across the governance plane.', healthScore: 94, signalVolume: 412, activeRisks: 6, pendingDecisions: 5, openApprovals: 8, outcomeVelocity: 91, evidenceCompleteness: 95, chainlightConfidence: 0.94, sentraGovernanceState: 'green', psycheGovernanceState: 'green', argoLearningStatus: 'active — 9 lessons last 30d', proofChainCoverage: 98, topSignals: ['Policy exception requested — Terra vendor fast-track', 'Rollback triggered — Aegis firewall rule change reverted', 'Audit compilation deadline — SOC 2 Type II in 14d'], topRisks: ['Policy bypass attempt detected — automated action blocked', 'Audit evidence gap — 3 controls missing attestation', 'Approval queue depth — 8 items > 48h old'], nextBestActions: ['Review Terra vendor fast-track exception against policy', 'Validate Aegis firewall rollback completeness', 'Assign auditor for SOC 2 evidence gap remediation'], linkedRoutes: ['/sentra', '/fabric/evidence', '/fabric/decisions'], }, ] as const; export const TWIN_MAP = Object.fromEntries(DOMAIN_TWINS.map(t => [t.id, t])) as Record;