{
  "verdict": "reproduced",
  "impact": "panic",
  "confidence": "likely",
  "summary": "NULL-deref panic in hammer2_xop_strategy_write when the inode cluster chain is gone, reproduced mechanically via a sanctioned harness kernel (sysctl knob forcing the exact post-race parent==NULL state admitted by hammer2_admin.c:556-563); fix (NULL guard mirroring the read xop) A/B validated on the same harness",
  "reproduce": {
    "build": "in guest /usr/src: patch -p0 < harness.diff; make -j6 nativekernel KERNCONF=X86_64_GENERIC; make installkernel; reboot  (K2)",
    "run": "./run_panic_test.sh   # mounts fresh hammer2 image rw, sysctl vfs.hammer2.df2643_harness=1, dd write + sync",
    "expected": "Fatal trap 12, fault virtual address 0x98, Stopped at hammer2_chain_lookup+0x92: movzbl 0x98(%rbx),%eax, all CPUs stopped, machine halted at db> (serial console)"
  },
  "kernel_refs": [
    "sys/vfs/hammer2/hammer2_strategy.c:623-626",
    "sys/vfs/hammer2/hammer2_strategy.c:340-364",
    "sys/vfs/hammer2/hammer2_strategy.c:734",
    "sys/vfs/hammer2/hammer2_strategy.c:760",
    "sys/vfs/hammer2/hammer2_chain.c:2426-2429",
    "sys/vfs/hammer2/hammer2_inode.c:408-428",
    "sys/vfs/hammer2/hammer2_admin.c:556-563",
    "sys/vfs/hammer2/hammer2_strategy.c:675-681"
  ],
  "artifacts": [
    "harness.diff", "fix.diff", "run_panic_test.sh", "runfix_test.sh",
    "panic.txt", "runfix.knob-on.log", "k3build.log", "k3install.log",
    "env.txt", "VERDICT.md", "README.md", "manifest.json", "verdict.json"
  ]
}
