{
  "schema": "terra.asset-render-receipt.v1",
  "created_on": "2026-08-25",
  "purpose": "Re-render of the published landslide warming comparison from the recorded MPM frames",
  "source_record": {
    "hpc_run": "14697601",
    "cases": [
      "dT1",
      "dT3"
    ],
    "frames_per_case": 47,
    "solver_receipt_sha256": "7e3c5cf00b71bfc19433c83402a6efc424399b94a08e6bcf1fa56c657b0c007c",
    "frame_columns": "x y vx vy sxx syy szz sxy kappa T pw mat (terra_mpm_mod.f90)",
    "deck": "hpc-inputs/mpm-thermal/<case>/mpm.dat: domain 0-240 x 0-50 m, h = 0.5 m, ppc = 2; warming ramp t = 8-18 s; dT_total = 1 K / 3 K"
  },
  "field": {
    "displayed_variable": "excess pore pressure pw ('Delta u'), Pa, cell-averaged onto the native 0.5 m MPM background grid",
    "colormap": "cmcrameri 'vik' under matplotlib TwoSlopeNorm(vmin=0, vcenter=60 kPa, vmax=210 kPa); limits fixed across both panels and all frames",
    "overlay_alpha": "colour fades in linearly below 30 kPa over the pale material tones",
    "isoline": "60 kPa contour on the cell-averaged field (spray cells with <2 particles excluded; drawn only where the field exceeds the threshold by >2 kPa, beyond cell-average noise)",
    "mesh": "the drawn grid is the deck's own background grid (h = 0.5 m; 5 m reference lines); registration verified against &mpm_domain (xmin = 0, h = 0.5)",
    "outlines": "body boundary and t=0 ghost are contours of >=2-particles-per-cell occupancy, gaussian-smoothed (sigma 1.2 cells) for display; slip-band dotted outline is its t=0 painted position",
    "view": "cropped to 0-120 m of the 240 m domain; axes keep true metres; no vertical exaggeration"
  },
  "recorded_facts": {
    "threshold_crossing": "dT3 slip-band max pw first reaches 60 kPa at recorded frame t = 12 s",
    "final_slip_band_pw_kPa": {
      "dT1": 60.0,
      "dT3": 206.5
    },
    "runout_m": 31.75,
    "runout_definition": "furthest 0.5 m column with >= 1.0 m of material above the terrace surface (y > 10 m)",
    "verdict_policy": "panel verdicts are typeset only from the frame that records them: 'fails' from the 60 kPa crossing, 'holds' in the terminal frames"
  },
  "timing_policy": "Per-frame presentation durations are graded for emphasis (holds on the crossing and final frames). Frame order and count are unchanged and no frames are interpolated, added or dropped. Presentation time is not simulation time; the in-frame clock 'sim t' is the recorded simulation time.",
  "outputs": {
    "frame_px": {
      "width": 1932,
      "height": 1344
    },
    "gif_presentation_seconds": 13.32,
    "per_frame_durations_s": [
      0.22,
      0.22,
      0.22,
      0.22,
      0.26,
      0.26,
      0.26,
      0.32,
      0.32,
      0.32,
      1.4,
      0.26,
      0.26,
      0.26,
      0.26,
      0.26,
      0.26,
      0.26,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.18,
      0.3,
      0.3,
      2.2
    ]
  }
}