{
  "generatedFrom": "measurements/996.json",
  "suiteVersion": "FV-EVAL v2.1",
  "views": [
    "hero",
    "orbit-left-10",
    "orbit-right-10"
  ],
  "provenance": {
    "iteration": 996,
    "suiteVersion": "FV-EVAL v1",
    "grader": "FV-GRADE v4.1 (programmatic, families A–F only; C5 retired to not-measured)",
    "sha": "76a481bda",
    "generatedUtc": "2026-07-28T12:33:30.433Z",
    "capturedViews": [
      "hero",
      "orbit-left-2",
      "orbit-right-2"
    ],
    "buildState": "2049² heightmap, 67,319,148 triangles"
  },
  "caveats": [
    "Family G (perceptual realism, 25 pts) is deliberately absent: it requires the blind judge gate, not this script. The rollup denominator reflects that.",
    "C1 is a percentile-ratio proxy for the true lit-vs-shadow patch measurement; as of v4, C1/F1/F2 are scored against the real tuning photos’ population envelopes (targets/ MANIFEST), which are wide because the set varies in composition by design — they catch only out-of-population values, and fine discrimination belongs to family G.",
    "E3 is a capability check (shader compiled, reflection call present). Whether the water LOOKS like water is scored by family G.",
    "A4 extracts the horizon with a stated heuristic (colour-continuity walk from the frame top); heavy haze or a non-sky frame top can misplace it — the heuristic is named in the evidence.",
    "B1 converts B4's autocorrelation lag to metres through the capture-camera geometry under a flat-terrain assumption; the derivation and its error bars are in the evidence string.",
    "C5 is RETIRED to not-measured as of v4.1: the contact-darkening proxy fails its own reference set (iteration 110 probe). The A–F measurable denominator is 72 until a validated refit lands.",
    "E2/E4 score a measured 0 while scene-report water.surfaceEnabled is false — the missing surface is a real scene deficiency, not a missing instrument. Their enabled paths are untested until the HDRP water surface lands.",
    "A2 reads the builder’s Artifacts/heightfield.json export (landed iteration 106) and runs D8 flow accumulation over it with NO pit-filling, so a channel that terminates in a local sink counts as unconnected — the count and threshold are named in the evidence string. The export is required: without the file A2 falls back to not-measured.",
    "B2/C2 are lit/shadow-aware as of FV-GRADE v3; as of v4 every hybrid threshold (B2, C2, C1, F1, F2) is re-derived from the four REAL tuning photographs in evals/targets/ (HELDOUT excluded, AI anchors excluded; derivation in each evidence string and SPEC.md). B2/C2/C1/F1/F2 values are NOT comparable across the v3→v4 boundary."
  ],
  "legacy": {
    "rubric": "retired nine-category natural-environment rubric",
    "hero": 37,
    "navigable": 30,
    "iteration": 83,
    "comparable": false,
    "whyNotComparable": "Different families, weights, view rule, and unmeasured-vs-zero semantics."
  },
  "rollup": {
    "scale": "FV-EVAL v1",
    "achieved": 36.5,
    "measurable": 52,
    "total": 104,
    "scoreOfMeasured": 70.2,
    "scoreOfTotal": 36.5,
    "passing": false,
    "familiesBelowFloor": [],
    "unmeasuredCount": 8,
    "evalCount": 28
  },
  "rollupV2": {
    "scale": "FV-EVAL v2.1",
    "visual": {
      "score": 93.9,
      "x": 0.9268,
      "xDemo": 0.9379,
      "basisIds": [
        "A4",
        "B2",
        "B4",
        "C1",
        "C2",
        "C3",
        "C4",
        "F2"
      ],
      "basisAchievedPts": 24.1,
      "basisMeasurableWeight": 26,
      "basisWeight": 26,
      "unmeasuredBasisIds": [],
      "gCal": null,
      "gStatus": "perceptual judging pending",
      "gSource": null,
      "gRankTier": null,
      "gAnchors": {
        "heroTells": 5,
        "weakestTells": 3,
        "saturation": 10
      }
    },
    "structural": {
      "achieved": 12.4,
      "measurable": 26,
      "weight": 39,
      "scoreOfMeasured": 47.7,
      "familiesBelowFloor": [],
      "familiesFloorInAbeyance": [
        "E"
      ],
      "notApplicableIds": [
        "A2",
        "A3",
        "D1",
        "E1"
      ]
    },
    "goalEligible": false,
    "goalEligibilityLabel": "not goal-eligible (no composition attestation in provenance or v2-context.json)",
    "compositionBasis": "unattested",
    "requirement1": {
      "spec": "napkin composition v4 — Split Rock, Lookout, Spring Pool, Old Log, Rock Outcrop, Stump, Hiking Trail in the HERO frame, each within ±10% of frame width of its napkin position (composition = hero; realism stays worst-of-three)",
      "view": "hero",
      "gate": "FAILED: no attestation at all",
      "landmarks": [
        "splitRock",
        "lookout",
        "springPool",
        "oldLog",
        "rockOutcrop",
        "stump",
        "hikingTrail"
      ],
      "minFrameShare": {
        "splitRock": 0.0025,
        "lookout": 0.001,
        "springPool": 0.005,
        "oldLog": 0.01,
        "rockOutcrop": 0.003,
        "stump": 0.002,
        "hikingTrail": 0.004
      },
      "napkinPositions": {
        "splitRock": {
          "x": 0.318,
          "y": 0.315
        },
        "lookout": {
          "x": 0.553,
          "y": 0.3
        },
        "rockOutcrop": {
          "x": 0.602,
          "y": 0.461
        },
        "springPool": {
          "x": 0.68,
          "y": 0.62
        },
        "oldLog": {
          "x": 0.462,
          "y": 0.736
        },
        "stump": {
          "x": 0.466,
          "y": 0.592
        },
        "hikingTrail": {
          "x": 0.52,
          "y": 0.71
        }
      },
      "positionTolerance": 0.05
    },
    "goal": {
      "threshold": 80,
      "met": false,
      "tripwire": "The FIRST v2-visual ≥ 80 claim is PROVISIONAL until a ranking-task panel corroborates the G reading (SPEC goal-claim tripwire; design §10.7), in addition to the held-out-photo check."
    },
    "notes": [
      "family G: PERCEPTUAL JUDGING PENDING (no ranking-panel reading) — v2-visual is computed over the visual basis only: G is excluded from numerator and denominator until the panel runs. This is a basis-only score, not a full v2-visual.",
      "SCOPE-01 (2026-07-27): the structural denominator excludes not-applicable evals; label post-scope readings \"FV-EVAL v2.1 (scoped 2026-07-27)\". Any movement across that boundary is instrument scope-change, NEVER progress (design §13.6). The v2-visual headline is unaffected: no basis eval was retired and family G is untouched.",
      "Scale discipline (design §10.6/§12.3): v1, v2 and v2.1 numbers are never compared, trended, or averaged across boundaries. The demo anchor is DEFAULT STARTUP LIGHTING; re-anchoring is its own labelled suite change."
    ]
  },
  "families": [
    {
      "id": "A",
      "label": "Geometry & landform",
      "achieved": 6,
      "measurable": 7,
      "weight": 19,
      "floorPercent": 40,
      "belowFloor": false,
      "veto": false,
      "percentOfMeasured": 85.6,
      "percentOfWeight": 54.4,
      "applicableWeight": 11,
      "notApplicableWeight": 8,
      "floorStatus": "armed",
      "floorAbeyanceReason": null,
      "evals": [
        {
          "id": "A1",
          "label": "Heightfield resolution",
          "criterion": "Sample spacing resolves the smallest intended landform (gully wall, talus lobe)",
          "grader": "programmatic",
          "weight": 4,
          "perView": false,
          "status": "measured",
          "percent": 100,
          "evidence": "0.49 m/sample (2049 over 1000 m); full credit at 0.88, none at 2.0",
          "worstView": null,
          "notApplicable": null
        },
        {
          "id": "A2",
          "label": "Drainage coherence",
          "criterion": "Channels form a connected tree, not unconnected scratches",
          "grader": "programmatic",
          "weight": 4,
          "perView": false,
          "status": "not-applicable",
          "percent": null,
          "evidence": "awaiting heightfield export from the builder (Artifacts/heightfield.json — expected format documented in SPEC.md)",
          "worstView": null,
          "notApplicable": {
            "ruling": "scope ruling 2026-07-27 (Adam): napkin features + realism ≥ 80 are the only requirements",
            "grounds": "Scores channel cells whose downstream path reaches the meadow disc or exits inside the creek corridor. Ruling: \"no creek/channel requirement ... no 'meadow + granite bowl' composition.\" Both of this eval's targets are retired constructs. Side effect: the queued heightfield.json builder export existed only to unlock A2 and is retired with it."
          }
        },
        {
          "id": "A3",
          "label": "Depositional record",
          "criterion": "An alluvial fan exists where a channel reaches flatter ground",
          "grader": "programmatic",
          "weight": 4,
          "perView": false,
          "status": "not-applicable",
          "percent": null,
          "evidence": "No alluvial fan where any erosion channel meets the meadow — carried forward from the iteration-83 manual observation; no deposition code has landed since",
          "worstView": null,
          "notApplicable": {
            "ruling": "scope ruling 2026-07-27 (Adam): napkin features + realism ≥ 80 are the only requirements",
            "grounds": "The ruling names it verbatim: \"no alluvial fans\". Already excluded from the v2-visual basis as a foreign-scene non-comparable."
          }
        },
        {
          "id": "A4",
          "label": "Silhouette break",
          "criterion": "Horizon is not fully explainable as a monotone heightfield",
          "grader": "programmatic",
          "weight": 3,
          "perView": true,
          "status": "measured",
          "percent": 66.3,
          "evidence": "worst=orbit-left-2: 23.2% of 1461 horizon columns deviate >4 px from the 75-column running median (heuristic: sky = colour-continuity walk from frame top, horizon = first non-sky pixel; full credit at 35% broken)",
          "worstView": "orbit-left-2",
          "notApplicable": null
        },
        {
          "id": "A6",
          "label": "Landform coherence",
          "criterion": "Near/mid-ground terrain shape could occur in nature: continuous self-consistent slopes, drainage that leads somewhere, no arbitrary spikes/lumps/walls, believable ground-plane transitions (shape only — lighting/texture/vegetation/distant mountains ignored)",
          "grader": "model",
          "weight": 4,
          "perView": true,
          "status": "not-measured",
          "percent": null,
          "evidence": null,
          "worstView": null,
          "notApplicable": null
        }
      ]
    },
    {
      "id": "B",
      "label": "Surface & material",
      "achieved": 6.6,
      "measurable": 15,
      "weight": 15,
      "floorPercent": 35,
      "belowFloor": false,
      "veto": false,
      "percentOfMeasured": 44.1,
      "percentOfWeight": 44.1,
      "applicableWeight": 15,
      "notApplicableWeight": 0,
      "floorStatus": "armed",
      "floorAbeyanceReason": null,
      "evals": [
        {
          "id": "B1",
          "label": "Texel scale",
          "criterion": "Texture period matches world scale; no wrong-scale cobble read",
          "grader": "programmatic",
          "weight": 5,
          "perView": true,
          "status": "measured",
          "percent": 10.2,
          "evidence": "worst=hero: repeat period ≈ 16px × 0.0106 m/px = 0.17 m at the mid ground-crop row (lag at the 16 px scan floor — read as ≤) (autocorr peak 0.50); crop rows span 0.0065–0.0338 m/px, so ×/÷~2.3 error bars; geometry: vFOV 47°, camera 2.2 m above terrain, look-at +5.0 m at 122 m (flat-terrain pitch 2.4° assumption); natural 0.5–4 m, zero outside 0.15–12 m",
          "worstView": "hero",
          "notApplicable": null
        },
        {
          "id": "B2",
          "label": "Albedo band",
          "criterion": "Lit-ground linear luminance median (shadow-masked at 0.043) inside the reference-derived 0.07–0.25 band",
          "grader": "hybrid",
          "weight": 4,
          "perView": true,
          "status": "measured",
          "percent": 100,
          "evidence": "worst=hero: lit-ground linear luminance median 0.112 over the 59.6% of the ground crop at or above the 0.043 shadow threshold; lit albedo band 0.05–0.25 (real tuning photos' lit medians: dusk 0.057, domes 0.062, half-dome 0.181, creek 0.221)",
          "worstView": "hero",
          "notApplicable": null
        },
        {
          "id": "B3",
          "label": "Roughness response",
          "criterion": "Specular variance across terrain layers is non-zero",
          "grader": "programmatic",
          "weight": 3,
          "perView": false,
          "status": "measured",
          "percent": 0,
          "evidence": "layer smoothness [0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000], mean 0.000, variance 0.0e+0",
          "worstView": null,
          "notApplicable": null
        },
        {
          "id": "B4",
          "label": "Tiling invisibility",
          "criterion": "No repeat period detectable at normal viewing distance",
          "grader": "programmatic",
          "weight": 3,
          "perView": true,
          "status": "measured",
          "percent": 70.3,
          "evidence": "worst=hero: peak ground autocorrelation 0.50 at lag 16px; visible tiling above ~0.35",
          "worstView": "hero",
          "notApplicable": null
        }
      ]
    },
    {
      "id": "C",
      "label": "Light & exposure",
      "achieved": 12,
      "measurable": 12,
      "weight": 15,
      "floorPercent": 45,
      "belowFloor": false,
      "veto": false,
      "percentOfMeasured": 100,
      "percentOfWeight": 80,
      "applicableWeight": 15,
      "notApplicableWeight": 0,
      "floorStatus": "armed",
      "floorAbeyanceReason": null,
      "evals": [
        {
          "id": "C1",
          "label": "Sun/shade ratio",
          "criterion": "Near open-daylight ~5:1, not ambient-dominated",
          "grader": "hybrid",
          "weight": 4,
          "perView": false,
          "status": "measured",
          "percent": 100,
          "evidence": "PROXY p95/p10 linear luminance = 44.79:1 on the lower frame vs the real tuning photos' envelope 20.8–122.9 (creek 20.8, half-dome 48.3, domes 70.0, dusk 122.9; zero at half/double the edges)",
          "worstView": null,
          "notApplicable": null
        },
        {
          "id": "C2",
          "label": "Shadow crush",
          "criterion": "Crush share within shadow (P<0.02 over P<0.043) at or below the reference max 0.43",
          "grader": "hybrid",
          "weight": 4,
          "perView": true,
          "status": "measured",
          "percent": 100,
          "evidence": "worst=hero: crush-within-shadow 45.6% (10.38% of frame below linear 0.02 ÷ 22.78% below the 0.043 shadow threshold); the four real tuning photos measure 18.3–69.1% (creek 18.3, half-dome 64.6, domes 66.4, dusk 69.1) — full credit ≤69%, zero at 90%",
          "worstView": "hero",
          "notApplicable": null
        },
        {
          "id": "C3",
          "label": "Highlight clip",
          "criterion": "Negligible fraction at pure white",
          "grader": "hybrid",
          "weight": 2,
          "perView": true,
          "status": "measured",
          "percent": 100,
          "evidence": "worst=hero: 0.000% at pure white",
          "worstView": "hero",
          "notApplicable": null
        },
        {
          "id": "C4",
          "label": "Pure black",
          "criterion": "Fraction at literal RGB(0,0,0) near the target set’s 0.000%",
          "grader": "hybrid",
          "weight": 2,
          "perView": true,
          "status": "measured",
          "percent": 100,
          "evidence": "worst=hero: 0.000% at literal RGB(0,0,0) (reference 0.000%)",
          "worstView": "hero",
          "notApplicable": null
        },
        {
          "id": "C5",
          "label": "Contact occlusion",
          "criterion": "Measurable darkening where objects meet ground",
          "grader": "programmatic",
          "weight": 3,
          "perView": true,
          "status": "not-measured",
          "percent": null,
          "evidence": "RETIRED in FV-GRADE v4.1: contact-darkening proxy fails its own reference set (iteration 110 probe — contact slide; best real photo +14.6% vs the ≥25% full-credit bar). The foot-annulus refit was disproved by the 2026-07-26 population probe (three of four real tuning photos negative under it); un-retire path: builder export of trunk-base contact points, geometry-anchored detector, bar re-derived from the reference set (SPEC TODO).",
          "worstView": null,
          "notApplicable": null
        }
      ]
    },
    {
      "id": "D",
      "label": "Ecology & vegetation",
      "achieved": 2.1,
      "measurable": 3,
      "weight": 12,
      "floorPercent": 35,
      "belowFloor": false,
      "veto": false,
      "percentOfMeasured": 71.4,
      "percentOfWeight": 23.8,
      "applicableWeight": 9,
      "notApplicableWeight": 3,
      "floorStatus": "armed",
      "floorAbeyanceReason": null,
      "evals": [
        {
          "id": "D1",
          "label": "Stem density",
          "criterion": "Inside the Sierra mixed-conifer 200–600 stems/ha range",
          "grader": "hybrid",
          "weight": 3,
          "perView": false,
          "status": "not-applicable",
          "percent": null,
          "evidence": "6 stems/ha across 1600.0 ha; biome range 200–600",
          "worstView": null,
          "notApplicable": {
            "ruling": "scope ruling 2026-07-27 (Adam): napkin features + realism ≥ 80 are the only requirements",
            "grounds": "The criterion IS the retired biome band. Ruling: \"no stem-density band ... no fidelity to the old AI target images.\" The napkin specifies no forest density. D2/D3/D4 stay REQUIRED — clone-army and bare-ground are general realism, not biome fidelity."
          }
        },
        {
          "id": "D2",
          "label": "Age-class spread",
          "criterion": "Height histogram is recruitment-heavy, not one class",
          "grader": "programmatic",
          "weight": 3,
          "perView": false,
          "status": "not-measured",
          "percent": null,
          "evidence": "portable foreign-scene report cannot classify mature/sapling/snag/understory classes from object names; no fabricated zero substituted",
          "worstView": null,
          "notApplicable": null
        },
        {
          "id": "D3",
          "label": "Silhouette diversity",
          "criterion": "Multiple distinct crown-shape clusters, not one family",
          "grader": "programmatic",
          "weight": 3,
          "perView": false,
          "status": "measured",
          "percent": 71.4,
          "evidence": "dominant construction family holds 78.6% of 9150 stems, 11 families total",
          "worstView": null,
          "notApplicable": null
        },
        {
          "id": "D4",
          "label": "Ground closure",
          "criterion": "Few ground cells with no vegetation or litter",
          "grader": "programmatic",
          "weight": 3,
          "perView": true,
          "status": "not-measured",
          "percent": null,
          "evidence": "portable report covers all terrain detail cells, not the three judged view footprints; global occupancy is not substituted for the view-scoped D4 metric",
          "worstView": null,
          "notApplicable": null
        }
      ]
    },
    {
      "id": "E",
      "label": "Water",
      "achieved": 4,
      "measurable": 7,
      "weight": 10,
      "floorPercent": 30,
      "belowFloor": false,
      "veto": false,
      "percentOfMeasured": 57.1,
      "percentOfWeight": 57.1,
      "applicableWeight": 7,
      "notApplicableWeight": 3,
      "floorStatus": "abeyance",
      "floorAbeyanceReason": "floor pending — no required water feature (Spring Pool) instrumented yet; the scene's water is the demo lake, which requirement 1 does not ask for.",
      "evals": [
        {
          "id": "E1",
          "label": "Channel descent",
          "criterion": "Monotonic downhill and crosses no ridge saddle",
          "grader": "programmatic",
          "weight": 3,
          "perView": false,
          "status": "not-applicable",
          "percent": null,
          "evidence": "monotonic descent false (EnforceCreekDescent), saddle crossing true (authored sine centreline never consults terrain)",
          "worstView": null,
          "notApplicable": {
            "ruling": "scope ruling 2026-07-27 (Adam): napkin features + realism ≥ 80 are the only requirements",
            "grounds": "Measures EnforceCreekDescent against the authored sine centreline. Ruling: \"no creek/channel requirement.\" The napkin's only water is Spring Pool, a STILL pond, which has no descent to measure. E2/E3/E4 stay REQUIRED and re-scope to the pond."
          }
        },
        {
          "id": "E2",
          "label": "Depth cue",
          "criterion": "Colour varies with measured water depth",
          "grader": "programmatic",
          "weight": 3,
          "perView": true,
          "status": "measured",
          "percent": 0,
          "evidence": "named Spring Pool depth-absorption material capability=false; visual quality remains family G's call",
          "worstView": null,
          "notApplicable": null
        },
        {
          "id": "E3",
          "label": "Reflection",
          "criterion": "Environment or screen-space reflection present",
          "grader": "programmatic",
          "weight": 2,
          "perView": true,
          "status": "measured",
          "percent": 100,
          "evidence": "water surface enabled=true, shader compiled=true, GlossyEnvironmentReflection present=true; visual quality is family G's call",
          "worstView": null,
          "notApplicable": null
        },
        {
          "id": "E4",
          "label": "Bank integration",
          "criterion": "Wet margin and cobble transition, not a hard edge",
          "grader": "programmatic",
          "weight": 2,
          "perView": true,
          "status": "measured",
          "percent": 100,
          "evidence": "named Spring Pool authored wet-margin bank integration=true; visual quality remains family G's call",
          "worstView": null,
          "notApplicable": null
        }
      ]
    },
    {
      "id": "F",
      "label": "Atmosphere & depth",
      "achieved": 5.8,
      "measurable": 8,
      "weight": 8,
      "floorPercent": 35,
      "belowFloor": false,
      "veto": false,
      "percentOfMeasured": 72.1,
      "percentOfWeight": 72.1,
      "applicableWeight": 8,
      "notApplicableWeight": 0,
      "floorStatus": "armed",
      "floorAbeyanceReason": null,
      "evals": [
        {
          "id": "F1",
          "label": "Aerial perspective",
          "criterion": "Contrast falls off with distance like the target set",
          "grader": "hybrid",
          "weight": 4,
          "perView": true,
          "status": "measured",
          "percent": 44.1,
          "evidence": "worst=orbit-left-2: near/far tile-contrast ratio 2.42 vs the real tuning photos' envelope 0.33–1.64 (domes 0.33, dusk 0.34, creek 0.61, half-dome 1.64; zero at half/double the edges)",
          "worstView": "orbit-left-2",
          "notApplicable": null
        },
        {
          "id": "F2",
          "label": "Micro-contrast",
          "criterion": "Local detail energy near the target set’s level",
          "grader": "hybrid",
          "weight": 4,
          "perView": true,
          "status": "measured",
          "percent": 100,
          "evidence": "worst=hero: ground detail energy 4.38e-2 vs the real tuning photos' envelope 9.1e-3–1.1e-1 (dusk 9.1e-3, domes 2.0e-2, half-dome 7.6e-2, creek 1.1e-1, all at 900-px frame height; zero at half/double the edges)",
          "worstView": "hero",
          "notApplicable": null
        }
      ]
    },
    {
      "id": "G",
      "label": "Perceptual realism",
      "achieved": 0,
      "measurable": 0,
      "weight": 25,
      "floorPercent": 30,
      "belowFloor": false,
      "veto": true,
      "percentOfMeasured": null,
      "percentOfWeight": 0,
      "applicableWeight": 25,
      "notApplicableWeight": 0,
      "floorStatus": "armed",
      "floorAbeyanceReason": null,
      "evals": [
        {
          "id": "G1",
          "label": "Blind pairwise vs target set",
          "criterion": "Judge cannot reliably prefer a drawn target over the engine frame",
          "grader": "model",
          "weight": 9,
          "perView": false,
          "status": "not-measured",
          "percent": null,
          "evidence": null,
          "worstView": null,
          "notApplicable": null
        },
        {
          "id": "G2",
          "label": "CG-tell count",
          "criterion": "No tells from the 30-entry catalogue visible at normal viewing distance",
          "grader": "model",
          "weight": 6,
          "perView": true,
          "status": "not-measured",
          "percent": null,
          "evidence": null,
          "worstView": null,
          "notApplicable": null
        },
        {
          "id": "G3",
          "label": "Photo-or-render forced choice",
          "criterion": "Judge calls it a photograph",
          "grader": "model",
          "weight": 5,
          "perView": false,
          "status": "not-measured",
          "percent": null,
          "evidence": null,
          "worstView": null,
          "notApplicable": null
        },
        {
          "id": "G4",
          "label": "Weakest-view realism",
          "criterion": "The worst navigable view holds up, not just the hero",
          "grader": "model",
          "weight": 5,
          "perView": true,
          "status": "not-measured",
          "percent": null,
          "evidence": null,
          "worstView": null,
          "notApplicable": null
        }
      ]
    }
  ],
  "notes": [
    "8 of 24 applicable evals not yet measured (A6, C5, D2, D4, G1, G2, G3, G4). Rollup is reported over the measured subset.",
    "NOT-APPLICABLE under the scope ruling 2026-07-27 (Adam): napkin features + realism ≥ 80 are the only requirements — A2, A3, D1, E1 (14 pts) measure retired requirements. They leave numerator, denominator and floors; they are NOT scored zero and NOT counted as failures. No weight is redistributed: the applicable suite total is 90. Grounds are quoted per eval (design §13.2). Scale label: FV-EVAL v2.1 (scoped 2026-07-27); pre-scope and post-scope readings are NEVER compared or trended — the movement is instrument scope-change, never progress (§10.6/§13.6).",
    "Family E (Water) floor IN ABEYANCE — floor pending — no required water feature (Spring Pool) instrumented yet; the scene's water is the demo lake, which requirement 1 does not ask for. It is neither satisfied nor breached, and arms on the first requirement-1 attestation (design §13.4)."
  ],
  "scope": {
    "ruling": "scope ruling 2026-07-27 (Adam): napkin features + realism ≥ 80 are the only requirements",
    "notApplicableIds": [
      "A2",
      "A3",
      "D1",
      "E1"
    ],
    "applicableTotal": 86,
    "scaleLabel": "FV-EVAL v2.1 (scoped 2026-07-27)",
    "discipline": "Pre-scope and post-scope readings are never compared or trended. Structural movement across this boundary is instrument scope-change, never progress (design §13.6)."
  },
  "familyFloors": [
    {
      "id": "A",
      "floorPercent": 40,
      "status": "armed",
      "abeyanceReason": null
    },
    {
      "id": "B",
      "floorPercent": 35,
      "status": "armed",
      "abeyanceReason": null
    },
    {
      "id": "C",
      "floorPercent": 45,
      "status": "armed",
      "abeyanceReason": null
    },
    {
      "id": "D",
      "floorPercent": 35,
      "status": "armed",
      "abeyanceReason": null
    },
    {
      "id": "E",
      "floorPercent": 30,
      "status": "abeyance",
      "abeyanceReason": "floor pending — no required water feature (Spring Pool) instrumented yet; the scene's water is the demo lake, which requirement 1 does not ask for."
    },
    {
      "id": "F",
      "floorPercent": 35,
      "status": "armed",
      "abeyanceReason": null
    },
    {
      "id": "G",
      "floorPercent": 30,
      "status": "armed",
      "abeyanceReason": null
    }
  ]
}
