{
  "createdUTC": "2026-09-11T18:23:38.464537+00:00",
  "verdict": "Suitable as a bounded descriptive stability-applicability diagnostic under the explicit operator and physical limitations below; not source reproduction or meteorological validation.",
  "acceptedForReadOnlyDiagnostic": true,
  "reviewedProtocolSha256": "5002932e60869d54b52c0a58eb7780fd779b0fdae721aabe4125c22448a64b5d",
  "scope": "Read-only source/interpretation review; no new model or numerical profile analysis; root output results were not used to select recommendations.",
  "controls": {
    "wrf-interpolation": {
      "IPROG": "14",
      "IWFCOD": "1",
      "NOOBS": "2",
      "ITPROG": "2",
      "IUPT": "-1",
      "ZUPT": "200.",
      "ISURFT": "-1",
      "ITWPROG": "1",
      "IDIOPT1": "0",
      "IDIOPT2": "0",
      "IAVEZI": "1",
      "NZ": "10",
      "IBYR": "2023",
      "IBMO": "6",
      "IBDY": "1",
      "IBHR": "0",
      "ABTZ": "UTC-0800",
      "IRTYPE": "0",
      "IFRADJ": "0"
    },
    "terrain-5km": {
      "IPROG": "14",
      "IWFCOD": "1",
      "NOOBS": "2",
      "ITPROG": "2",
      "IUPT": "-1",
      "ZUPT": "200.",
      "ISURFT": "-1",
      "ITWPROG": "1",
      "IDIOPT1": "0",
      "IDIOPT2": "0",
      "IAVEZI": "1",
      "NZ": "10",
      "IBYR": "2023",
      "IBMO": "6",
      "IBDY": "1",
      "IBHR": "0",
      "ABTZ": "UTC-0800",
      "IRTYPE": "0",
      "IFRADJ": "1"
    },
    "terrain-10km": {
      "IPROG": "14",
      "IWFCOD": "1",
      "NOOBS": "2",
      "ITPROG": "2",
      "IUPT": "-1",
      "ZUPT": "200.",
      "ISURFT": "-1",
      "ITWPROG": "1",
      "IDIOPT1": "0",
      "IDIOPT2": "0",
      "IAVEZI": "1",
      "NZ": "10",
      "IBYR": "2023",
      "IBMO": "6",
      "IBDY": "1",
      "IBHR": "0",
      "ABTZ": "UTC-0800",
      "IRTYPE": "0",
      "IFRADJ": "1"
    },
    "allCasesInternalISFCMET": {
      "value": 0,
      "evidence": "terrain-5km/calmet.lst:1166; relevant SURFVAR pre-FRADJ call is independent of this later branch."
    }
  },
  "sourceHashes": {
    "work/calmet65-local/build/native-650-150223/calmet.for": {
      "sha256": "fc7fda7cb7e7932f67eb0ce1fb94f1d81a2084063a1dbf797b3270b460b7ee6f",
      "bytes": 1499525
    },
    "work/bc-wrf-access/pilot/format-review/private-reference/code/calwrf.f": {
      "sha256": "cca879071e9c602cfa957bace0a273e144581edaf8c878e3be01f0bfe835878e",
      "bytes": 69327
    },
    "work/native-thermal-path-audit/sources/Registry.EM_COMMON": {
      "sha256": "28cf7a2d369e898217d7231f4ed19310af7f0bec920f3cb57831e3dc4c80beec",
      "bytes": 436138
    },
    "work/vertical-stage-trace-2023/research-handoff.md": {
      "sha256": "dc2a306920a313290f31920a0b548c34801ee91267537f7bacc91a25fe1fa053",
      "bytes": 3115
    },
    "work/vertical-stage-trace-2023/froude-review/findings.md": {
      "sha256": "48e2cef7b12a94426840b536df916f55e5dd30fe1f24a919729981859a65d36a",
      "bytes": 5754
    },
    "work/vertical-stability-applicability-2023/protocol.json": {
      "sha256": "5002932e60869d54b52c0a58eb7780fd779b0fdae721aabe4125c22448a64b5d",
      "bytes": 8149
    },
    "work/vertical-stage-trace-2023/runs/wrf-interpolation/calmet.inp": {
      "sha256": "be5cff439162ad3068807bb5297ff24f07b6dd0da87a7b1cbc96d5dbc1e97930",
      "bytes": 44122
    },
    "work/vertical-stage-trace-2023/runs/terrain-5km/calmet.inp": {
      "sha256": "0e614895b605fe38e7817ae0173c33571e5e38244e58497a8fe6e878c7f5330e",
      "bytes": 44116
    },
    "work/vertical-stage-trace-2023/runs/terrain-10km/calmet.inp": {
      "sha256": "fb4b7bb338b37d0fbc9dadee911e54d4fbf28f44624d316d051afac42901af90",
      "bytes": 44118
    }
  },
  "evidence": [
    {
      "id": "native_pressure_temperature",
      "path": "work/bc-wrf-access/pilot/format-review/private-reference/code/calwrf.f",
      "startLine": 640,
      "endLine": 658,
      "finding": "P=(WRF P+PB)*0.01 hPa; air T=(WRF T+300)*(P/1000)^(287.04/1004). T is not already potential temperature."
    },
    {
      "id": "native_height",
      "path": "work/bc-wrf-access/pilot/format-review/private-reference/code/calwrf.f",
      "startLine": 660,
      "endLine": 670,
      "finding": "(PH+PHB)/9.81 metres, followed by INTERPZ face-to-mass arithmetic averaging."
    },
    {
      "id": "native_height_destagger",
      "path": "work/bc-wrf-access/pilot/format-review/private-reference/code/calwrf.f",
      "startLine": 1870,
      "endLine": 1888,
      "finding": "INTERPZ averages adjacent staggered faces."
    },
    {
      "id": "native_output_precision",
      "path": "work/bc-wrf-access/pilot/format-review/private-reference/code/calwrf.f",
      "startLine": 1260,
      "endLine": 1296,
      "finding": "P,H,T order; P and H NINT, T F6.1. 1hPa,1m,0.1K printing resolution."
    },
    {
      "id": "native_qa",
      "path": "work/bc-wrf-access/pilot/format-review/private-reference/code/calwrf.f",
      "startLine": 1141,
      "endLine": 1230,
      "finding": "Released writer may replace out-of-range P/T horizontally; heights exempt. Actual production QA log not recovered."
    },
    {
      "id": "read_schema",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 21527,
      "endLine": 21580,
      "finding": "Reader format and dry potential temperature exponent0.286; virtual potential temperature calculated separately."
    },
    {
      "id": "native_to_agl",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 21582,
      "endLine": 21583,
      "finding": "Native mass height minus native IELEV4; not minus destination CALMET terrain."
    },
    {
      "id": "mapping_vertical",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 21750,
      "endLine": 21822,
      "finding": "Map native AGL profiles to CELLZC; below-first/top persistence initially, bracketing linear interpolation."
    },
    {
      "id": "mapping_lowlevel",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 21850,
      "endLine": 21927,
      "finding": "Below-first T: daytime0.0098K/m dry lapse; nighttime land STULL history/water potential-T extrapolation for active ITWPROG1; pressure estimated exponentially. ITWPROG2 SST branches inactive."
    },
    {
      "id": "mapping_horizontal",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 22080,
      "endLine": 22094,
      "finding": "Ordered four-point inverse-distance-squared interpolation of already AGL-mapped TMM4 to TPROG2."
    },
    {
      "id": "native_clock_conversion",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 21283,
      "endLine": 21292,
      "finding": "Native timestamp GMT to local standard time with -IBTZ."
    },
    {
      "id": "endpoint_target",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 22330,
      "endLine": 22347,
      "finding": "DTINC uses saved interval ending date/seconds."
    },
    {
      "id": "temperature_endpoint",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 22381,
      "endLine": 22389,
      "finding": "TPROG linearly interpolated between buffered mapped temperature states at endpoint; not an hourly mean."
    },
    {
      "id": "solar_history",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 21725,
      "endLine": 21753,
      "finding": "Extrapolation uses hour-ending interpretation and half-hour solar angle; STULL0 initializes potential-temperature history."
    },
    {
      "id": "gamma_call",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 5503,
      "endLine": 5515,
      "finding": "IPROG14 reads native fields then computes CGAMMA2 using TPROG and incoming ZICONV."
    },
    {
      "id": "gamma",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 3322,
      "endLine": 3394,
      "finding": "Spatial GAMMA; 10-to200m air-temperature lapse, or -0.0098K/m if incoming ZICONV>=200. Domain mean only IUPT=-2, TINF average only ISURFT=-2."
    },
    {
      "id": "surface_temperature_call",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 5604,
      "endLine": 5610,
      "finding": "SURFVAR(...,IALL=0) before FRADJ for active ISURFT=-1."
    },
    {
      "id": "surface_temperature_assignment",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 12635,
      "endLine": 12709,
      "finding": "ITPROG2 bypasses surface observations and TEMP2D=TPROG(:,:,1) when IALL!=2."
    },
    {
      "id": "first_ziconv",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 3653,
      "endLine": 3653,
      "finding": "ZICONV initialized zero."
    },
    {
      "id": "later_ziconv",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 4688,
      "endLine": 4716,
      "finding": "MIXHT2 and active AVEMIX after DIAGNO update ZICONV for subsequent step."
    },
    {
      "id": "fradj_proxy",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 7348,
      "endLine": 7401,
      "finding": "Nproxy^2=9.8*(GAMMA+0.01)/TEMP2D at every height; positive GAMMA2 and obstacle required to evaluate Froude."
    },
    {
      "id": "fradj_tangent",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 7432,
      "endLine": 7451,
      "finding": "Eligible upslope winds turned to full-speed local terrain tangent; no continuous Froude taper."
    },
    {
      "id": "spatial_option_history",
      "path": "work/calmet65-local/build/native-650-150223/calmet.for",
      "startLine": 652,
      "endLine": 674,
      "finding": "V6.218 Level070113 introduced spatial temperature ISURFT=-1 and lapse-rate IUPT=-1; -2 retains older domain-average behavior."
    }
  ],
  "definitions": {
    "nativeDryTheta": "theta=T*(1000/P_hPa)^(287.04/1004); approximate recovery from independently printed P/T, not native theta bit reproduction.",
    "nativeDryN2": "2*9.8*(theta_hi-theta_lo)/((theta_hi+theta_lo)*(z_hi-z_lo)); signed native adjacent-mass-level secant.",
    "nativeMatchedSurrogateN2": "9.8*((T_hi-T_lo)/(z_hi-z_lo)+0.01)/((T_hi+T_lo)/2); source offset with native interval mean T.",
    "sourceN2": "9.8*(captured_GAMMA+0.01)/captured_TEMP2D; promoted tofloat64 diagnostic; zero/negative retained without square root.",
    "gammaOrdinaryBranch": "((3/11)*TPROG(k=4)+(8/11)*TPROG(k=5)-TPROG(k=1))/190; centres120/230m interpolate200m; source arithmetic isfloat32, expression here algebraic.",
    "gammaOverride": "Incoming ZICONV>=200 gives -0.0098; adding FRADJ0.0100 leaves+0.0002 K/m before9.8/T scaling.",
    "mappingDistinction": "Source TPROG first maps each native column to native terrain+CALMET AGL centre then weights T. Frozen diagnostic selects interval at destination CALMET terrain+centre and weights interval N2. These are different operators."
  },
  "requiredInterpretation": [
    "TEMP2D in pre-FRADJ capture is current endpoint-derived TPROG layer1, not last-hour TEMP2D, native T2, TSK or SST.",
    "Incoming ZICONV and below-first extrapolation carry temporal history. The frozen captures contain neither incoming ZICONV nor all TPROG, so GAMMA equality to a native shallow lapse cannot be asserted.",
    "GAMMA is a temperature gradient, not dtheta/dz. Source dry-static surrogate differs from exact dry potential-temperature stability; 0.0100 is not g/cp or its own0.0098 convective override.",
    "Retain all13references, fixed5cellstencil,24endpointtimes,10heights and original101x101population, with all-four-neighbour support denominators. No inferred expanded-area coverage.",
    "Positive N2 means dry stable stratification under this diagnostic, not necessarily a temperature inversion; signed N2 and printing-indeterminate cohorts must remain separate.",
    "Native and CALMET heights are approximate common absolute-height proxies; different terrain, geopotential/geometry and unverified datum alignment remain outside printing bounds.",
    "Native layer secants may span very different thicknesses and overlap multiple CALMET centres; no200m-horizontal or exact-height vertical resolution claim.",
    "Local dry N2 is not a validated effective whole-obstacle stability, moist stability, replacement Froude number or branch substitution.",
    "Agreement with shared upstream WRF is consistency evidence only. Disagreement may show representational mismatch; neither establishes true flow, acceptance threshold or configuration adoption.",
    "No100m-window sensitivity is part of the current frozen protocol; any extension needs separate prospective declaration."
  ],
  "maskReview": {
    "supported": true,
    "requirements": [
      "Allfourordered native columns must bracket target with monotone distinct finite heights; no extrapolation, nearest substitution or renormalization.",
      "Positive T/P and positive pressure bounds; nominal dz>1m for printing envelopes.",
      "Preserve target<=native terrain/below-first/above-top distinctions if such samples occur.",
      "Mark bracket proximity<=0.5m ambiguous; nominal values may remain but robust sign claims exclude them.",
      "Printing corners on fixed bracket only: T+-0.05K,P+-0.5hPa at bothends; deltaZ+-1m.",
      "Weight per-column nominal and envelopes with same positive raw terms/SUM1; sign of weighted cohort does not imply every native neighbour has that sign.",
      "Captured U/V inequality labels actual vector change, not independently inferred FRADJ branch count."
    ]
  },
  "epaPrimary": {
    "title": "Reassessment of the Interagency Workgroup on Air Quality Modeling (IWAQM) Phase 2 Summary Report: Revisions to Phase 2 Recommendations",
    "reportId": "EPA-454/R-16-007",
    "date": "December2016",
    "url": "https://www.epa.gov/sites/default/files/2021-01/documents/iwaqm_phase2_reassessment_2016.pdf",
    "textUrl": "https://nepis.epa.gov/Exe/ZyPURL.cgi?Dockey=P100S43Z.TXT",
    "locators": {
      "identity": "PDF page3, printed titlepage",
      "history": "PDF page4, notice",
      "froude": "Section2.2, printed13-15, PDF19-21",
      "ITPROG_domain_mean_claim": "printed14, PDF20",
      "version5_8_cloud_reference": "Section2.4 printed18, PDF24"
    },
    "localVersionReconciliation": "Use actual localsource evidence above. The ITPROG>=1 domain-average characterization is not the active IUPT=-1 path. Tangent/speed/obstacle issues must be checked against localcode, not assumed fixed or unchanged solely by versionnumber.",
    "scopeLimit": "Historic LRT technical guidance; not local model validation, an audit of this build, or a statement of currentBClegal requirements."
  }
}
