{
  "id": "conservative-development-v1",
  "schema": 1,
  "status": "development on previously examined cases; no confirmatory claim",
  "question": "Can one-sided, softer, or separately batched reward interventions retain useful memory under stationary noise while improving adaptation?",
  "source_audit": "docs/experiments/change-detection-v1.audit.json",
  "source_selection": "docs/experiments/change-detection-v1.selection.json",
  "source_verification": "docs/experiments/change-detection-v1.verification.json",
  "selection": "Use every previously selected case, all 16 seeds for each of the three solo roles. No exclusions or reselection based on learner results.",
  "training_rounds": 32,
  "histories": {"abrupt": 128, "gradual": 128, "recurring": 256, "stable": 256},
  "schedule": "Reuse the change-v1 keyed schedule: training/stable probability B=0.1; abrupt=0.9; gradual increases 0.1 to 0.9 over its first half; recurring switches from 0.9 to 0.1 at halfway. Same latent schedule and initial policy/random state for every arm.",
  "arms": ["retained", "frozen", "legacy-reset", "down-reset", "down-soft", "batch-soft", "signaled-reset"],
  "candidates": ["down-reset", "down-soft", "batch-soft"],
  "legacy_detector": {"window": 4, "threshold": 0.2, "confirmations": 2},
  "down_reset": "Use the unchanged legacy detector including its buffer bookkeeping. Only negative-delta alarms clear both score and sample-count cells in that role/context; positive alarms are recorded as suppressed. This isolates intervention direction.",
  "down_soft": "Same detector rule as down-reset, but multiply the two current scores by 0.5 and preserve sample counts. This changes intervention strength only; scores move toward neutral even if negative. Subsequent choices, feedback and alarm trajectories can differ between arms.",
  "batch_soft": "Same half-score intervention. Per action, consume non-overlapping batches of four observed rewards. First full batch establishes a reference. A completed batch at least 0.2 below the reference is one decline confirmation; hold the reference while awaiting a second consecutive low batch. A non-declining batch replaces the reference and clears confirmation. After the second low batch, emit one alarm, replace reference with that batch and clear confirmation. Warmup fills state unarmed, clearing confirmation. Increases update reference without intervention. Recent confirmation batches do not overlap, but they share a reference and are not independent statistical tests.",
  "timing": "Interventions occur only after a completed encounter's ordinary learning commit, and can affect only subsequent choices. No extra combat, forced action, hidden state, switch label or offline table reaches the detector. Signaled reset is the separately labeled privileged timing control.",
  "budget": "Zero new scored physical fights. Reuse verified deterministic physical action tables; count every simulated policy transition, including shared training once and each arm/history. Full table reconstructions and selected actual-combat trajectories are verification, not new evidence.",
  "primary": "Within each seed, equally average mean enemy damage over abrupt, gradual and recurring histories. Compare each candidate with retained. Stable performance uses all 256 stable rounds. Report all cases and arms, intervention counts, suppressed alarms and paired differences.",
  "uncertainty": {"resamples": 10000, "seed": 41471, "interval": 0.95},
  "uncertainty_scope": "Descriptive paired percentile seed bootstraps on known development cases; no multiple-testing or fresh-validation claim. Repeated encounters are not independent samples.",
  "development_gates": {"minimum_cases_per_role": 16, "minimum_changing_gain_hp": 1, "minimum_stable_mean_hp": -0.25, "minimum_stable_lower_bound_hp": -0.5, "minimum_worst_seed_stable_gain_hp": -3, "maximum_stable_interventions_per_100": 1},
  "gate_arithmetic": "All minimum gates are inclusive >= and the maximum rate gate is inclusive <=. Stable intervention rate = executed post-commit interventions / all stable encounters * 100, pooled across all 16 seeds within each role. Record suppressed alarms separately. Count an authorized intervention even if the current scores happen to be zero.",
  "provenance": "Before outcomes, write a started record hashing this protocol, all implementation and verifier sources, the archived core/simulator, original audit, selection and verification. Require original audit hash and matched verification before table use. Verify hashes again before saving results.",
  "stress_checks": "No alarms on constant -1, 0 or +1 rewards, including sparse observations of one action; no changes from unobserved feedback; action-specific buffers stay separate; one bad observation alone cannot trigger a reset; positive reward changes cannot trigger candidate interventions; real negative change can trigger after enough observations; intervention preserves RNG, counters, config and unrelated cells.",
  "advance": "A single candidate must pass all development gates for all three roles and the stress/verification checks. If several pass, choose the largest minimum role changing gain, ties resolved in candidate order. Only then freeze a new validation protocol with fresh seeds before generating or inspecting outcomes. If none pass, finish with rejection and do not consume another reserve.",
  "scope": "The 48 action-sensitive cases were already examined in change-v1. Longer sampled histories are development, not an unseen population. These tests do not establish human enjoyment, new-controller transfer, new-map transfer, external game support or general optimality. The production game remains unchanged."
}
