ADR-015: Decision Conviction as Profile Signal¶
Status: Accepted
Date: 2026-03-29
Context: In the March 23 multiplayer session, CoachJ encountered a scenario (the "Innovation Team Revolt") where he felt genuinely uncertain. His rationale explicitly stated "this is a real toss-up" and "I'm not thinking clearly about this." He chose an option but described it as "almost performative" — he picked what his higher self would do, not what felt authentic. The system already captures decision_strength (1-5 scale based on how quickly and decisively a player commits), but it's used only as a weight multiplier for profile updates (ADR-004). This ADR addresses what should happen when a player's conviction is low — both for profile learning and for the broader question of whether the DTA should act on low-conviction patterns.
At a glance
What it decides: Decision conviction is a first-class profile signal with three in-force uses — it downweights low-conviction choices in profile learning, caps prediction confidence in habitually-uncertain contexts, and flags those contexts for delegation instead of autonomous DTA action.
- Conviction = behavior + words: combines
decision_strength(how fast/decisively a player commits) with uncertainty markers detected in rationale text ("toss-up", "don't know"). - Aggressive downweighting: decision_strength = 1 caps effective weight at 0.15×, with an extra 0.5× discount when the rationale hedges.
- Confidence ceiling: contexts with avg_conviction < 2.5 over 3+ games cap that rule's prediction confidence at 0.5 regardless of accuracy.
- Delegation trigger: contexts with avg_conviction < 2.0 over 3+ games are flagged
delegation_preferred— defer to human or route to a peer (connects ADR-011/ADR-016). - Why: low conviction is information, not noise — it mitigates the "performative higher self" failure mode where a forced choice pollutes the profile.
Decision¶
Decision conviction should be treated as a first-class signal with three distinct uses:
1. Profile update weighting (already exists, refine)¶
Low-conviction choices (decision_strength ≤ 2) should be downweighted more aggressively in profile updates. Currently, decision_strength feeds into decision_strength_factor which scales the EMA alpha. This is correct directionally but may not be aggressive enough — a "NEAR TOSS-UP" choice where the player says "I don't know" should contribute very little to driver distributions.
Refinement: When decision_strength = 1, cap the effective weight at 0.15× (currently it's ~0.3×). When the player's rationale contains explicit uncertainty markers ("toss-up", "don't know", "not sure", "could go either way"), apply an additional 0.5× uncertainty discount.
2. Confidence ceiling for predictions in that context¶
If a player's historical choices in a given context are predominantly low-conviction, the prediction model should reflect that uncertainty. The rule engine's confidence for that context should be capped proportionally.
Implementation: Track avg_conviction per context rule. If avg_conviction < 2.5 across 3+ games in a trigger context, cap that rule's confidence at 0.5 regardless of accuracy. The AI genuinely cannot predict what this player will do in this context because the player themselves doesn't know.
3. Delegation map input (new, connects to ADR-011 and ADR-016)¶
Low conviction is an explicit signal that the player would benefit from delegation in this context. When the DTA encounters a governance decision in a context where the player historically shows low conviction, it should flag this as a candidate for delegation rather than autonomous action — even if the delegation map would otherwise have enough confidence to auto-decide.
Implementation: Contexts where avg_conviction < 2.0 across 3+ games should be flagged as delegation_preferred in the delegation map, meaning the DTA should either defer to the human or (per ADR-016, if adopted) route the decision to whoever the player has historically delegated to in similar contexts.
Rationale¶
Low conviction is information, not noise¶
A player saying "I don't know" is not the same as a player being unpredictable. It's a direct statement about their relationship to a decision context. Some contexts have clear right answers for a given person; others are genuinely ambiguous. The DTA should know the difference.
The "performative higher self" problem¶
ADR-013 established that the DTA trains on the deliberative, considered version of the player. But what happens when the considered version genuinely doesn't know? CoachJ's experience in the Innovation Team Revolt shows the failure mode: forced to pick, he performed what he thought his higher self would choose, but it didn't reflect authentic conviction. This is the gap between "I chose this because I believe it" and "I chose this because I had to pick something." The profile should not treat these equally.
Connects rationale analysis to quantitative weighting¶
The system already does semantic classification of rationale text. Adding uncertainty detection to this pipeline (looking for hedging language, explicit disclaimers, qualifications) creates a richer signal than decision_strength alone, which is a behavioral measure (how long did they deliberate) rather than a semantic one (what did they say about their certainty).
Alternatives Considered¶
-
Only use decision_strength, ignore rationale uncertainty: The behavioral signal (deliberation time, option switching) is sufficient. Rejected because: players can deliberate quickly on a genuinely uncertain choice (just pick one and move on) or slowly on a certain choice (reading carefully). The rationale text is a more direct measure of subjective certainty.
-
Ask players to self-rate their conviction explicitly: Add a slider after each choice: "How confident are you in this decision?" Considered and partially deferred — this adds friction to the game flow and may itself be subject to performative bias. The current approach of inferring conviction from decision_strength + rationale text is less intrusive. However, this could be revisited as an optional input in the post-decision debrief phase.
-
Treat all choices equally regardless of conviction: The EMA smoothing will average out low-conviction noise over time. Rejected because: in governance contexts, the DTA acting autonomously on a pattern learned from low-conviction choices is dangerous. The player didn't know what to do — the DTA shouldn't pretend it does.
Discussion¶
This ADR was triggered by a specific moment in the March 23 multiplayer session. CoachJ chose an option in the Innovation Team Revolt scenario and described it as "performative" — he deliberately chose against his instinct (self-preservation) in favor of what he thought his higher self would do. But he wasn't confident in either direction. His rationale said "I don't really know. This is a real toss-up."
This created a productive tension with ADR-013 (Deliberative Baseline). ADR-013 says the DTA should capture the considered, deliberative version of the player. But what if the considered version is genuinely uncertain? The resolution is that ADR-013 still holds — the DTA trains on the deliberative self — but conviction weighting ensures that uncertain deliberative choices carry less weight than certain ones. The DTA learns "in this kind of situation, my operator doesn't have strong preferences" rather than learning a false pattern from a forced choice.
The connection to delegation (ADR-016) emerged during the same discussion: CoachJ noted that after hearing Amin's rationale, his instinct was "I'd delegate my vote to Amin." Low conviction + hearing a compelling peer rationale = natural delegation trigger. The system should capture this chain: low conviction → hear alternatives → delegate. That's the exact workflow the DTA needs to learn for autonomous governance.
Consequences¶
- Profile updates for low-conviction choices are more aggressively downweighted
- Rationale text is analyzed for uncertainty markers in addition to driver classification
- Context rules gain an
avg_convictionfield that influences prediction confidence ceiling - The delegation map (ADR-011) gains conviction as an input: low-conviction contexts are flagged for human review or peer delegation rather than auto-decision
- The "performative higher self" failure mode is partially mitigated — forced choices from uncertain players don't pollute the profile as much as genuine choices
- Creates natural integration point with ADR-016 (delegation): low conviction → delegation candidate
Key files:
- src/lib/ai/player-model.ts — updatePlayerProfile() needs conviction-adjusted weighting; context rules need avg_conviction tracking
- src/lib/ai/learning-notes.ts — Learning note extraction should flag uncertainty markers in rationale
- src/app/api/ai/classify-driver/route.ts — Add uncertainty detection alongside driver classification
- src/lib/ai/prompt-builder.ts — Enhanced prediction prompt should include conviction context per rule