{
  "schema": "shardnet-experiment-run/v1",
  "experiment_id": "sn-lab-001",
  "run_id": "sn-lab-001-selftest-20260926T204927Z",
  "timestamp_utc": "2026-09-26T20:49:27.643Z",
  "environment": {
    "type": "implementation self-test",
    "runtime": "Node.js v24.3.0",
    "v8": "13.6.233.10-node.18",
    "platform": "win32",
    "arch": "x64",
    "accelerator": null
  },
  "problem": {
    "grid": "64x64 including boundary",
    "interior_unknowns": 3844,
    "operator": "matrix-free 5-point Poisson stencil",
    "boundary": "zero Dirichlet"
  },
  "methods": [
    {
      "name": "Float64 CG",
      "role": "reference"
    },
    {
      "name": "Float32 CG",
      "role": "low-precision baseline",
      "arithmetic": "Math.fround emulation"
    },
    {
      "name": "mixed iterative refinement",
      "role": "recovery path",
      "inner": "Float32 CG",
      "outer_residual": "Float64"
    }
  ],
  "results": {
    "fp64_relative_residual": 8.69e-13,
    "float32_relative_residual": 0.0000656,
    "mixed_relative_residual": 7.59e-13,
    "float32_relative_error_vs_fp64": 6.91e-7,
    "mixed_relative_error_vs_fp64": 6.46e-13
  },
  "limitations": [
    "This is a deterministic implementation self-test, not a GPU benchmark.",
    "Float32 behavior is emulated with JavaScript Math.fround and does not represent a specific GPU kernel.",
    "Browser and Node execution time is intentionally not promoted."
  ]
}