Skip to content

ADR-037: Constraint Discipline as a Scenario Authoring Pattern

Status: Accepted (operational pattern) Date: 2026-05-01 Context: ADR-036 commits Sync to legibility scoring — articulable variance is signal, opaque variance is noise. That measurement philosophy depends on a precondition that wasn't operationally enforced before this ADR: scenarios must do the constraint work themselves so that player reframing behavior is diagnostic of the player rather than diagnostic of the scenario.

A spot review of the 103 curated scenarios in scripts/data/scenarios.json (Apr 30 – May 1, 2026) found that roughly 65% leaked at least one "third option" reframe — a plausible alternative the scenario didn't explicitly close off. Under-constrained scenarios collapse three distinct player behaviors into one ambiguous signal:

  1. Legitimate creative reframe using stated facts (signal: high articulability, framing-awareness)
  2. Avoidance via fact-invention (signal: low engagement, motivated escape)
  3. Random "none of the above" (signal: opaque, low legibility)

When a scenario leaves an obvious reframe open, all three behaviors look alike in the rationale text — which corrupts the procedural-quality signal Sync exists to measure. Closing the obvious reframes via stipulated facts pulls these three apart so the rationale text becomes diagnostic.

At a glance

What it decides: Every scenario — static, edited, and live LLM-generated — must pass an 8-item constraint-discipline checklist so that a player's reframing behavior is diagnostic of the player, not of a loose scenario.

  • Scenario does the constraint work — option set, time, resource, information, and authority constraints are stipulated in-fiction so obvious "third options" are closed, priced, or added.
  • Top-3 reframe test is load-bearing — list the three likeliest escapes and rule each out, include it, or acknowledge it at a stated cost; if none applies, the scenario leaks.
  • "None of the above" is preserved — the discipline raises the cost of refusing the frame (forcing legitimate reframe vs. fact-invention), it doesn't force a pick. ADR-017 unchanged.
  • Rejected: forcing players to one of four options (kills high-signal creative reframe) and trusting authorial intent alone (the audit found ~65% of curated scenarios leaked).
  • Watch: reactive (live-generated) scenarios are the standing problem surface; re-audits are event-driven (checklist change, bulk edit, ~10+ new scenarios), not calendar-driven.

Decision

All scenario descriptions — new, edited, and live LLM-generated — must pass a constraint-discipline checklist before merge or display:

  1. Bounded option set. Read the scenario as a stranger. Can you write a plausible 5th option using only facts the scenario states? If yes, close the gap or add the option.
  2. Time constraint is felt, not announced. "You have one week" is announced. "Lease expires Friday; the new tenant signed a contract that prevents extension" is felt. There must be a reason the clock binds, not just a number.
  3. Resource constraints explicit. What budget, headcount, equipment, and information are available is in the scenario. Common reframes ("hire outside counsel," "ask the board for more budget") should require inventing a fact not present, or be priced into one of the options.
  4. Information constraints explicit. What the actor knows, can know, and cannot know in time is stated. "Just gather more data" requires the scenario to have allowed time/access for that — usually it shouldn't.
  5. Personnel and authority constraints explicit. Who reports to whom, who is reachable, who is bound by confidentiality. "Just delegate to X" requires X being named and available.
  6. Top-3 reframe test (the load-bearing item). Before publishing, list the three most likely "third options" a reframer would propose. For each, the scenario must do one of: (a) rule it out via stated facts, (b) include it as a 5th option, or (c) acknowledge it as available at a clearly stated cost. If none applies, the scenario leaks.
  7. Voice — first sentence does the work. Role + situation as prose. No Quick Context block, no orientation header, no cast list. (See ADR-034.)
  8. Decision prompt at the end binds to a deadline or trigger. Not "what do you do?" but "By Monday's call, you must propose…" or "Before the deal closes in 14 days, you must…"

Items 7 and 8 reiterate ADR-034's voice contract so authors have a single sheet to check against; items 1–6 are the new constraint-discipline content.

The checklist applies to: - New static scenarios added to scripts/data/scenarios.json - Live LLM-generated reactive scenarios (the prompt template should reflect items 1–6, not just voice) - Audit passes when scenario-quality drift is suspected

Rationale

Constraint discipline is the missing precondition for legibility scoring

ADR-036 says Sync rewards articulable variance and treats opaque variance as low-legibility signal. But that measurement assumes the scenario doesn't introduce avoidable ambiguity into the player's response. An under-constrained scenario produces ambiguity that's a property of the test instrument, not the player — exactly the wrong direction. Constraint discipline is what makes the instrument honest.

"None of the above" is preserved, not eliminated

The discipline does not force players into one of four answers. ADR-017 ("None of the above" as a first-class choice) is unchanged. What changes is the cost of refusing the frame: under a constrained scenario, refusal requires either using stated facts (legitimate reframe — high signal) or inventing facts not in evidence (avoidance pattern — also signal, but a diagnostic one). Both are useful. What's eliminated is the case where refusal is free because the scenario itself was loose.

Real decisions come with constraints baked in

A US Senator voting on a bill cannot reframe — yes/no, on the floor, today. A caravan leader knows the route. A CEO knows their cash position. Real-world decision contexts ship with binding facts; scenarios that omit those facts aren't more realistic, they're less realistic. Stipulating constraints isn't railroading — it's matching the actual texture of consequential decisions.

Three behaviors, one rationale field

Closing avoidable reframes makes the rationale text the place where the three behaviors above pull apart. Sync's judgment layer (ADR-024 + ADR-028) reads rationale; making rationale legible at the corpus level is what lets the per-player signal be clean.

Alternatives Considered

  • Force the option set (require players to pick one of four). Rejected. Kills legitimate creative reframe, eliminates a diagnostic signal Sync needs (articulable third options are high-quality reasoning), and undermines ADR-017.
  • No checklist; trust authorial intent. Rejected. The Apr 30 audit found ~65% of curated scenarios leaked. Authorial intent reliably focuses on the dilemma and reliably overlooks reframe-resistance. A checklist closes the drift.
  • Merge constraint discipline into ADR-034 (voice contract). Rejected as scope-confused. Voice and constraint discipline are independently measurable: a scenario can have perfect case-study voice and still leak reframes, or vice versa. Two ADRs, one checklist that references both.
  • Stipulate via runtime guard like the voice contract. Considered and partially adopted. Voice has hard runtime guards (detectBannedVoicePatterns, ADR-034); constraint discipline is harder to detect automatically because it requires understanding the scenario's option space. For now, the discipline lives at authoring time + audit time. A future ADR may revisit if LLM-based pre-publish constraint-leak detection becomes practical.

Discussion

The audit that motivated this ADR ran one scenario at a time across all 103 curated scenarios. Roughly 35% were already clean — these were the scenarios whose 4 options genuinely spanned the strategic space (e.g., The Whale Problem's governance-mechanic choice, The Emergency Powers Precedent's time-pressure-bound option set). The remaining 65% had at least one obvious reframe that needed a stipulated fact to close. Most patches were 1–2 sentences; the cumulative effect on measurement quality is the load-bearing benefit, not any individual patch.

The single most common leak across the corpus was deadline-extension negotiation with the entity that set the deadline (state regulators, donors, investors, partners). Authors set a deadline because they want time pressure, then leave open the possibility of negotiating the deadline away — which lets a reframer dissolve the time pressure for free. Closing this category alone affected ~30 scenarios.

Other recurring leak categories: fiscal-sponsor / pass-through arrangements; tap-reserves / inter-department-transfer escapes; voluntary-pay-cut substitutes for layoffs; outside-counsel / external-investigator timelines that don't fit the window; lease early-termination / sublease / partial-floor renegotiation; acquirer / merger / spin-off paths under tight time bounds; federal/state regulatory supplement requests; final-offer windows on competitor purchases.

A useful authorial heuristic that emerged: write the dilemma first, then read it as someone trying to escape rather than solve it, then patch wherever escape looks plausible. The "top-3 reframe test" in the checklist operationalizes this.

A separate worry was raised that increasing constraint density would make scenarios feel railroaded or artificially hermetic. The audit didn't bear this out — most patches added 1–2 sentences of in-fiction stipulation that read like ordinary scenario detail. The case-study voice contract (ADR-034) helps here: stipulations are written as prose ("the landlord refused subleasing"), not as rules ("rule: no subleasing").

On audit periodicity (added during initial review): A first draft of this ADR recommended a quarterly or per-release audit cadence. That was overcautious. The static corpus is version-controlled and doesn't mutate on its own — recurring time-based audits would be calendar-driven work for an event-driven problem. The corrected framing is in Consequences: re-audits are triggered by checklist changes, bulk script edits, or material new-scenario growth — not by a calendar. The constant-attention surface is the reactive-scenario prompt template, because reactive scenarios never settle into a fixed state to drift from.

Consequences

  • Scenario-authoring workflow updated. New static scenarios run through the 8-item checklist before commit. Authors should explicitly write down their top-3 reframe test results in the PR description until the discipline is internalized.
  • Reactive scenario prompt template is the live problem surface. Static scenarios are version-controlled and don't mutate on their own; reactive (live LLM-generated) scenarios are regenerated per session and never settle into a fixed state. Every reactive draft is potentially leaky if the prompt template doesn't enforce constraint discipline. The current LLM prompt enforces voice (ADR-034) but not items 1–6 of this ADR's checklist. Adding reframe-resistance instructions to the generation prompt — and validating via runtime spot-check or post-generation audit — is the highest-value follow-up.
  • Re-audit triggers are event-driven, not calendar-driven. The static corpus drifts only when something acts on it. Trigger a fresh audit when: (a) the checklist itself materially changes (re-audit existing corpus against new criteria); (b) a bulk script edits scenario descriptions, similar to the Apr 23 incident that triggered ADR-034 (audit the touched subset); (c) more than ~10 new scenarios are added by authors who haven't internalized the checklist (audit the new subset, not the whole corpus). A periodic calendar-based audit is not recommended — it's calendar-driven work for an event-driven problem.
  • Existing 103 curated scenarios are now compliant. Migration 075 pushed the audit results to production on May 1, 2026. Spot checks confirmed 8/8 patched scenarios reflect the stipulated facts in the live scenarios table. No further action on the existing corpus until one of the trigger events above.
  • What to watch for. If a future audit (event-triggered) finds drift greater than 30% in the audited subset, the leak source is upstream — either the authoring discipline isn't being applied, the checklist isn't surfaced where authors will see it, or a prompt template regression has crept in. Patch the upstream rather than scaling up the audit cadence; the audit is expensive and shouldn't be the primary line of defense.

Key files: - docs/decisions/036-procedural-quality-and-legibility.md — the philosophical layer this ADR operationalizes - docs/decisions/034-case-study-voice-contract.md — voice contract (checklist items 7–8) - docs/decisions/017-none-of-the-above.md — preserved by this ADR; refusal-of-frame remains a first-class choice - docs/decisions/024-judgment-layer-signals.md — the procedural signals that benefit from cleaner rationale-text input - scripts/data/scenarios.json — 103 curated scenarios, all audited Apr 30 – May 1, 2026 - migrations/075_scenario_constraint_audit.sql — DB-side push of the audit - scripts/apply-constraint-audit-migration.ts — idempotent runner used to apply the audit to production - scripts/generate-constraint-audit-migration.ts — regenerator if scenarios.json changes again