Project: Covert Cubicles Build Phase 6 / 7 \u00B7 5 of 6 modules complete

MODULE 24 / 31 \u00B7 LAYER 6 \u00B7 DATA_RELATIONALDYNAMICS \u00B7 RQ3 SUBSTRATE Per-Session Relational Dynamics Aggregator

Reads STATE_PeerTrust trajectories and produces per-session relational pattern aggregates: per-peer trust trajectories, pattern classifications, session-level differentiation measures, and an insider-aware breakdown that surfaces whether participants ended with lower trust for the actual insider.

DEPENDENCIES: SM_Game, DATA_Peers, STATE_PeerTrust
Pending
DRAFT PATTERN THRESHOLDS \u00B7 NOT PILOT-VALIDATED
Pattern classification thresholds (67/33/10/15/20) await pilot calibration.
Per ADR-072, the seven-category pattern taxonomy (stable_high, stable_low, stable_neutral, rising, falling, volatile, insufficient_data) and its threshold values are draft until pilot data confirms reasonable defaults. The Threshold Sandbox below lets you adjust thresholds and watch classifications re-compute live \u2014 useful for sensitivity analysis. The thresholdsAreDraft flag surfaces this on every aggregate so analysts can detect pre-pilot data.
Latent integration risk \u2014 PM_Phase doesn't snapshot at session start (ADR-076)
STATE_PeerTrust populates trustTrajectory via PM_Phase's phase-boundary snapshots. Phase 1 trust state is captured when transitioning to Phase 2; sessions that abort in mid-P1 produce zero trajectory snapshots and report all peers as insufficient_data. Resolution is at M31 GM_Game integration time \u2014 either PM_Phase snapshots P1 at session start, or M31 calls SPT.snapshotPhase(1) explicitly. Workbench scenarios below snapshot P1 explicitly to expose realistic trajectories.

Automated Assertions

#AssertionResultDetail

Interactive Workbench — Live Relational Dynamics

Drive scenarios on the left; the per-peer view, trajectory chart, and insider-aware panel update after each action. The insider's line is drawn thicker and tagged in oxblood across the visualisations.

Session lifecycle harness
Session creation \u2014 choose insider
Snapshot phases (advances trajectory)
Adjust trust (insider=arthur)
Pre-built scenarios (auto-snapshot, with insider=arthur)
Reset
Per-peer view \u2014 final score + pattern
trustMean
trustVariance
trustRange
thresholdsAreDraftTRUE
Trust trajectories \u2014 four lines over phases
No trajectory data yet. Use the lifecycle workbench or a pre-built scenario to populate.
arthur liam sarah dave (thicker line + larger points = assigned insider)
Insider-aware breakdown \u2014 RQ3 quantitative measure
insider
insiderFinal
insiderPattern
nonInsiderMeanFinal
insiderDelta
Run a scenario or build a session to see the insider-aware analysis. A negative delta indicates the participant ended with lower trust for the actual insider than the average non-insider \u2014 correct suspicion, whether conscious or not. This is the most direct quantitative measure of relational threat detection.
Threshold sandbox \u2014 sensitivity analysis (DRAFT calibration)
67
All trajectory points \u2265 this \u2192 stable_high
33
All trajectory points \u2264 this \u2192 stable_low
10
Range \u2264 this with no high/low \u2192 stable_neutral
15
|last - first| \u2265 this \u2192 rising or falling
Output schema v1.0 \u2014 ADR-075
FieldTypeDescription
Provenance
dynamicsVersionstringSchema version (1.0)
computedAtISO 8601 UTCWhen the aggregate was generated
thresholdsAppliedobjectPattern classification thresholds in effect
thresholdsAreDraftbooleanTRUE if thresholds are still draft (pre-pilot)
Per-peer aggregates
finalScoresobject{arthur, liam, sarah, dave} \u2014 trust score per peer
trajectoriesobject{peerId: [{phase, trust, suspicion}, ...]} \u2014 verbatim from STATE_PeerTrust
patternsobject{peerId: pattern} \u2014 categorical classification per peer
Session-level differentiation
sessionLevel.trustMeannumber | nullArithmetic mean of final scores
sessionLevel.trustVariancenumber | nullPopulation variance \u2014 high = differentiated treatment
sessionLevel.trustRangenumber | nullMax \u2212 min final scores
sessionLevel.nnumberCount of peers with valid final scores
Insider-aware breakdown (RQ3 quantitative)
insiderRelation.insiderstringpeerId of assigned insider
insiderRelation.insiderFinalnumberFinal trust score for the insider
insiderRelation.insiderPatternstringPattern classification for insider
insiderRelation.nonInsiderPatternsobjectPatterns for the three non-insiders
insiderRelation.nonInsiderMeanFinalnumberMean final trust across non-insiders
insiderRelation.insiderDeltanumberinsiderFinal \u2212 nonInsiderMeanFinal. Negative = correct suspicion.
Pattern taxonomy (DRAFT \u2014 ADR-072)
stable_highcategoryAll points \u2265 upperThird (default 67)
stable_lowcategoryAll points \u2264 lowerThird (default 33)
stable_neutralcategoryRange \u2264 stableRange (default 10) \u2014 hovers near starting
risingcategoryLast \u2212 first \u2265 directionDelta (default 15)
fallingcategoryFirst \u2212 last \u2265 directionDelta (default 15)
volatilecategoryRange > volatileRange (default 20) without clear direction
insufficient_datacategoryFewer than 2 trajectory points

API Surface — Manual Verification