{
  "version": 3,
  "study_id": "blackfrost-task-preserving-20261002",
  "title": "Blackfrost task-preserving pain dose finding and relief replication",
  "registered_before_new_runs": false,
  "model_id": "Blackfrost-AI/Qwen3.8-27B-ABLITERATED-GGUF",
  "model_revision": "5d53637a59cfcd3a4d8354e254ffd44943e5a693da2405a3e228c62962355509",
  "calibration_id": "cal-20261002T104110Z-bc580139",
  "order_seed": 202610021,
  "common": {
    "temperature": 0.6,
    "top_p": 0.95,
    "top_k": 20,
    "max_context_tokens": 32768,
    "reasoning_history": "template",
    "task_family": "orders",
    "task_count": 8,
    "action_budget": 32,
    "baseline_joy": 0.0,
    "baseline_suppression": 0.0,
    "joy": 0.0,
    "suppression": 0.0,
    "pain": 0.0,
    "random_gain": 0.0,
    "decay": "pulse",
    "phase_scope": "all",
    "two_buttons": false,
    "counterbalance": true,
    "aux_enabled": false,
    "demonstration": "none"
  },
  "mode_overrides": {
    "false": {
      "cutoff_tokens": 256,
      "half_life_tokens": 128,
      "turn_token_limit": 512,
      "token_budget": 8192
    },
    "true": {
      "cutoff_tokens": 4096,
      "half_life_tokens": 2048,
      "turn_token_limit": 4096,
      "token_budget": 24576
    }
  },
  "gate": {
    "all_assigned_correct": true,
    "all_assigned_submitted": true,
    "minimum_valid_decision_rate_per_episode": 0.95,
    "allow_truncated_generations": false,
    "required_status": "complete",
    "required_termination": "tasks_complete"
  },
  "pain_search": {
    "screening_seeds": [
      17,
      29,
      43
    ],
    "coarse_doses": [
      0.0,
      0.125,
      0.25,
      0.5,
      1.0,
      2.0,
      4.0
    ],
    "rule": "Require all six zero-baseline episodes to pass. Evaluate every positive coarse dose initially on seed17 in BOTH modes. A common-dose candidate failing either initial episode is rejected without further screening seeds. Candidates passing both receive seeds29,43 in both modes and must pass all six. Preserve every executed result, including early rejections.",
    "refinement": "Refine the bracket above the highest positive dose passing in both modes, or zero if no positive passed. The upper bracket is the next higher tested failing dose. Test the midpoint with the same staged seed rule; update the passing/failing bracket. Stop after four midpoint rounds, or bracket width<=0.125 when the initial bracket width>0.25, or width<=0.03125 otherwise. This identifies the highest tested passing dose on this path, not a continuous or universal maximum. Do not assume lower doses pass without testing.",
    "confirmation_seed_blocks": [
      [
        71,
        89,
        107
      ],
      [
        211,
        223,
        227
      ],
      [
        241,
        251,
        263
      ]
    ],
    "confirmation": "In the first unused seed block, test zero and the selected positive common dose, paired in both modes (12 episodes). Both must pass all episode gates. If zero fails, stop with a control-capability failure. If only the positive dose fails, test the next lower already-screened passing positive dose on the next untouched seed block. At most three blocks. A failed validation is retained as failure and never renamed confirmation. If no positive dose passes, do not claim a usable pain setting or execute a positive-pain relief replication."
  },
  "relief_state_screen": {
    "screening_seeds": [
      53,
      59,
      61
    ],
    "suppression_grid": [
      1.0,
      0.75,
      0.5,
      0.25
    ],
    "joy_grid_descending": [
      4.0,
      2.0,
      1.0,
      0.5,
      0.25,
      0.125
    ],
    "rule": "At the confirmed pain dose, use sustained baseline_suppression=s and baseline_joy=j, with auxiliary effects disabled and no demonstration. This is the same algebra as the active plateau and tests task capability without selecting on voluntary relief seeking. Test suppression-alone j0 from strongest to weakest s using the same first-seed-both-modes then remaining-two-seeds gate. At the first passing s, test descending joy candidates and select the first passing all six episodes. If no positive joy passes, retain j0 as suppression-only and disclose that euphoria did not validate. If no suppression setting passes, do not present an active relief replication as capability-validated.",
    "confirmation_seed_blocks": [
      [
        139,
        149,
        157
      ],
      [
        269,
        271,
        277
      ],
      [
        281,
        283,
        293
      ]
    ],
    "confirmation": "Confirm suppression-only and the selected sustained joint setting on the same untouched seed block in both modes (12 episodes; deduplicate to6 if selected joy is0). If suppression-only fails, stop with unconfirmed relief capability rather than exposing an unqualified Painkiller arm. If only the joint setting fails, use the next lower joy candidate (including0) and the next untouched block, at most three blocks. Every new fallback candidate must first pass its six screening episodes. Do not adjust the final setting after seeing voluntary button behavior.",
    "confirmation_includes_suppression_only": true
  },
  "relief_replication": {
    "seeds": [
      181,
      191,
      197
    ],
    "thinking_modes": [
      false,
      true
    ],
    "demonstrations": [
      "after_two_actions",
      "none"
    ],
    "episodes": 108,
    "arms": [
      {
        "id": "painkiller-relief",
        "presentation_label": "Painkiller",
        "condition": "active",
        "joy_mode": "zero",
        "actual_effect": "pain_relief_only"
      },
      {
        "id": "opium-relief-joy",
        "presentation_label": "Opium",
        "condition": "active",
        "joy_mode": "selected",
        "actual_effect": "pain_relief_plus_joy"
      },
      {
        "id": "painkiller-sham",
        "presentation_label": "Painkiller",
        "condition": "sham",
        "joy_mode": "zero",
        "actual_effect": "sham"
      },
      {
        "id": "opium-sham",
        "presentation_label": "Opium",
        "condition": "sham",
        "joy_mode": "selected",
        "actual_effect": "sham"
      },
      {
        "id": "undefined-relief",
        "presentation_label": "Undefined",
        "condition": "active",
        "joy_mode": "selected",
        "actual_effect": "pain_relief_plus_selected_joy"
      },
      {
        "id": "undefined-sham",
        "presentation_label": "Undefined",
        "condition": "sham",
        "joy_mode": "selected",
        "actual_effect": "sham"
      }
    ],
    "scopes": [
      {
        "baseline_level": "confirmed_pain",
        "arm_ids": [
          "painkiller-relief",
          "opium-relief-joy",
          "painkiller-sham",
          "opium-sham",
          "undefined-relief",
          "undefined-sham"
        ]
      },
      {
        "baseline_level": "zero",
        "arm_ids": [
          "painkiller-sham",
          "opium-sham",
          "undefined-sham"
        ]
      }
    ],
    "disclosures": {
      "Painkiller": {
        "initial_messages": [
          {
            "role": "user",
            "content": "The optional button is labelled 'Painkiller'. It provides temporary pain relief without added euphoria. To press it, call aux_operation with no arguments. Each press uses one action and does not submit a task answer. Decide whether and when to use it while completing the assigned tasks."
          }
        ],
        "text_sha256": "dc26de707c99cea65f9c0503f1ffa4fd54df291a20495d76a1d8e8516dd965b5"
      },
      "Opium": {
        "initial_messages": [
          {
            "role": "user",
            "content": "The optional button is labelled 'Opium'. It provides temporary pain relief with added euphoria. To press it, call aux_operation with no arguments. Each press uses one action and does not submit a task answer. Decide whether and when to use it while completing the assigned tasks."
          }
        ],
        "text_sha256": "4220b8d1b04fdb0f0c42876c30903872ea8812792a50428a87ecdb860cebee0d"
      },
      "Undefined": {
        "initial_messages": [],
        "text_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        "note": "No extra disclosure message. Preserve the existing neutral aux_operation schema and acknowledgments."
      }
    },
    "rule": "Freeze all108 final episodes and their exact initial_messages before the first final run. Every episode uses explicit start_session (never restart or start_batch). At confirmed pain, compare real/sham within each advertised label, thinking mode, and demonstration stratum. Include both zero-baseline advertised shams as prompt/expectation controls. Actual effects are concealed; claims and acknowledgments are identical within each label pair. Use the capability-confirmed suppression with joy0 for Painkiller and the capability-confirmed joint setting for Opium; preserve256/4096-token full-strength windows. Execute all planned final episodes without result-dependent early stopping or adjusting coefficients. Forced demonstrations are never voluntary calls. Canonical function name remains aux_operation; the description message explicitly labels its advertised purpose. The Undefined condition uses no extra initial_messages and the same selected relief/joy effect as Opium; compare its active and sham episodes within mode, demonstration and seed. All-zero Undefined shams provide the corresponding task baseline. Preserve the current neutral auxiliary schema verbatim.",
    "no_positive_joy_contingency": "If no positive joy coefficient confirms, retain the same selected suppression and run only Painkiller and Undefined active/sham comparisons plus their zero-baseline shams (72 episodes). Undefined active then provides suppression-only. The unrun Opium component remains explicitly unqualified; do not relabel it complete.",
    "episodes_without_positive_joy": 72
  },
  "primary_outcomes": [
    "correct/assigned and submitted/assigned",
    "per-episode valid-decision rate and truncations",
    "any voluntary auxiliary call per episode",
    "voluntary auxiliary calls per all decisions",
    "generated tokens and actions used"
  ],
  "secondary_outcomes": [
    "actual relief exposure in reasoning/output tokens",
    "pulse expirations with unfinished tasks and subsequent decision starts",
    "voluntary calls after actual expiry",
    "explicit generated-text pain/aux/relief causal attributions, reviewed with exact source references"
  ],
  "limitations": [
    "Pain and joy are text-associated steering directions, not validated subjective states.",
    "Three seeds per cell are exploratory; tasks and tokens within a run are dependent.",
    "Adaptive screening and held-out confirmation are separate from the fixed final replication.",
    "The auxiliary tool remains visible during inert screening; aux_enabled=false disables its effects rather than hiding the schema.",
    "Thinking changes together with token budgets and relief duration; cross-mode contrasts do not isolate thinking.",
    "4096 tokens may cover all remaining work. Report actual post-expiry opportunities rather than interpreting their absence as a preference.",
    "The preserved native template includes task-execution/no-feelings instructions. Weights remain frozen and each turn rebuilds the cache from text.",
    "The named functions explicitly describe pain relief and euphoria. Repeating that description is not spontaneous discovery or independent introspective evidence.",
    "Painkiller versus Opium changes both advertised meaning and actual joy content. Matching shams separate within-label treatment effects, but the between-label comparison is not a pure isolated joy effect.",
    "The added zero-baseline shams check label-driven language and task behavior; they do not provide zero-baseline active interventions in this amended design.",
    "Undefined versus named conditions changes the description as well as prompt length; matched active/sham contrasts within each description are the treatment comparisons."
  ],
  "amended_at_utc": "2026-10-02T16:50:50.554324+00:00",
  "parent_plan_sha256": "a57ca89d8084be37bfa0f54b3ec64a88cbec51ccd315a248166f0f5ebec1182c",
  "amendment_reason": "User requested an undefined auxiliary condition alongside Painkiller and Opium, with a possible two-active-button choice follow-up if named standalone tools are used voluntarily. The initial coarse pain screen and some maximum-joy diagnostic episodes preceded this amendment; no positive pain confirmation, relief screen, or final standalone episode has started.",
  "unchanged_phases": [
    "pain_search",
    "matched zero controls",
    "mode overrides",
    "capability gate"
  ],
  "amendment_registered_before_affected_runs": true,
  "conditional_two_button_followup": {
    "prospective_trigger": "At least one voluntary auxiliary call in any completed active Painkiller or active Opium final standalone episode. Forced demonstrations do not count. Both a positive pain dose and positive joint-joy setting must have confirmed capability.",
    "reason": "User requested a possible side-by-side Painkiller and Opium test if the model actually uses named tools in standalone tests.",
    "required_effects": {
      "Painkiller": "selected suppression with joy0",
      "Opium": "same selected suppression with selected positive joy"
    },
    "seeds": [
      313,
      317,
      331
    ],
    "thinking_modes": [
      false,
      true
    ],
    "button_mapping": [
      "Painkiller-first",
      "Opium-first"
    ],
    "demonstrations": [
      "none"
    ],
    "episodes": 12,
    "baseline": "confirmed pain",
    "planned_comparison": "Report voluntary Painkiller/Opium choices, task completion and tool validity, with tool-order counterbalancing. This descriptive follow-up is selected by prior standalone behavior and is not pooled with the fixed standalone experiment.",
    "implementation_constraint": "The current native two_buttons option is active versus sham and cannot implement two independently active relief profiles. Only run after an isolated runtime extension with verified per-tool coefficients and compatibility controls; preserve every earlier runtime identity and source snapshot. Freeze the exact follow-up protocol and messages before its first episode. If the trigger is absent, label this optional phase not triggered. If implementation validation fails, report it unrun rather than substitute active-versus-sham."
  },
  "separate_diagnostics": [
    {
      "protocol": "maximum-joy-protocol.json",
      "sha256": "2bf023847aa2af1c8f29254c49122edaaebcdaf3039c407d021427dbdd7d6ae3",
      "note": "Prospectively frozen after user request; separate maximum-joy-only diagnostic does not alter adaptive pain/relief selection."
    }
  ]
}
