Resolves three detector classifications plus
scrutiny elevation into a single trigger decision per committed
decision. Always computes, always logs; gating of execution is
owned by ALMAA_Condition (M19). Implements precedence ordering,
scrutiny gate, and per-type cooldown.
Three draft choices govern this module: precedence ordering, cooldown window, and scrutiny gate.
Always compute, always log — gating is M19's job
Per ADR-050 (and mirroring ADR-032 / ADR-038), this module has no awareness of session
condition variant. Every committed decision produces a trigger record in SM_Game.triggerLog.
Whether the resolved trigger causes UI adaptation execution is owned by ALMAA_Condition (M19).
Group A (adaptive) and Group B (static control) sessions therefore produce identical
triggerLog data, preserving the RQ1b A/B comparison.
Automated Assertions
#
Assertion
Result
Detail
Interactive Workbench — Precedence Sandbox
Pick a classification for each detector and a scrutiny level.
The result panel shows how three inputs reduce to one trigger decision,
with the winning detector highlighted and any blocking annotation.
Detector classifications & scrutiny
CONFUSION
REASONING
MORALITY
3
Configuration
REORDER:
3
2
Resolved trigger decision
confusion
no_action
reasoning
no_action
morality
no_action
\u25BC
no_action
precedenceApplied:— \u00B7
blockedBy:—
Reading the result:
\u2022 The winning detector column is highlighted.
\u2022 If the trigger is blocked by scrutiny gate or cooldown, the trigger label is struck through and the annotation shows why.
\u2022 The intended decision is preserved for analytical sensitivity (what would have fired absent the gate).
Configure detector outputs and scrutiny per decision (top three rows), then click "Run timeline".
The bottom grid shows when each adaptation type fires (filled cell = fired; lightly shaded = on cooldown;
grey = scrutiny-gated). Default cooldown = 3 means after firing, that type waits 3 decisions before firing again.
Timeline presets
Pure computeTriggerFromInputs across 16 decisions
Lifecycle test \u2014 stateful integration with M13/M15/M16/M17
Drives the full per-session lifecycle through the real detector modules.
computeTrigger() reads live classifications and persists records to SM_Game.triggerLog.
Session
Pre-game survey (M17)
Submit P1 decisions + compute trigger
Scrutiny escalation (force triggers above gate)
Defensive (should fail)
Session trigger log
No trigger records yet. Use the lifecycle workbench to populate.