{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://plantedmoney.ai/spec/valuation-contract.json",
  "title": "Planted Money — investor.valuation (Valuation Engine v3 — single artifact)",
  "description": "Authoritative shape of investor.valuation carried by every valuation response (/api/underwrite, /api/property investor.*, MCP underwrite + comps, D1 ingest scoring). V3-1.1: valuation.artifact is the SINGLE valuation artifact every surface derives display values from. V3-1.3: arv carries Tier-1 comp evidence or null — the neighborhood-premium estimate ships ONLY in area_context {value, label: 'Area estimate — not property-specific'}, never in an arv field. V3-1.4 comp policy v2: GLA band ±20% (subject sqft known), beds ±1 (both known), expansion ladder 0.5mi/180d → 0.75mi/270d → 1.0mi/365d (−8 confidence per step, mandatory time-indexing), MAD log-ppsf trim at 3.0×MAD (sqft known; the 0.35 dispersion gate stays), counts MIN 3 to value / ≥5 for a public point (else arv.range_only true) / target 8 / max 12. V3-0.3: comp index factors are capped (8%/yr compounded, total clamp [0.75, 1.30]). Every estimate ships with method, confidence and range; Tier-3 suppresses rather than guesses (INV-5). value_as_is is NEVER blended into arv (the 1638 N Campbell no-blend invariant, INV-8). p5v4 stop-loss: range-only, area-context, stale, and suppressed valuations retain evidence for explanation but produce no point amount on consumer surfaces and no suggested offer, profit, NOI, DSCR, CoC, strategy score, or cashflow anywhere. On every served Tier-1 value, arv.low/high are the split-conformal 80% interval [q80_lo × value, q80_hi × value] from dist/data/calibration.json; the empirical comp IQR moves to arv.comp_range. arv.confidence_p10 (P(|error|≤10%) × 100) is the calibrated confidence; legacy arv.confidence is deprecated. arv.method 'hedonic_v1' is a transparent tier-2 model and is always range_only. Rent carries four never-blended fields (as_is_contract / stabilized_post_reno / context / rent_confidence); legacy rent.market/rent.reno are compatibility aliases. tax.appeal is a Board-of-Review scenario. opex compliance_reserve (RLTO/RTLO) only reaches NOI/DSCR when the valuation is point-actionable.",
  "type": "object",
  "required": [
    "model_version",
    "as_of",
    "inputs_hash",
    "subject",
    "arv",
    "value_as_is",
    "rent",
    "rehab",
    "tax",
    "warnings"
  ],
  "additionalProperties": true,
  "properties": {
    "model_version": {
      "type": "string",
      "examples": [
        "p5v5-2026.07"
      ]
    },
    "as_of": {
      "type": "string",
      "description": "ISO date the valuation was computed"
    },
    "inputs_hash": {
      "type": "string",
      "description": "Stable recursively key-sorted reproducibility fingerprint over canonical subject identity, tract inputs, valuation assumptions, full normalized comp/index/flip-pair evidence, source provenance, selected asset slices, and model/registry versions. It is not anonymization, collision-resistant security, or a credential."
    },
    "subject": {
      "type": "object",
      "description": "Canonical identity and provenance for the property actually valued. Unknown fields stay null; they are never borrowed from a comp.",
      "required": ["key", "lat", "lon", "tract_geoid", "county", "price", "price_source", "units", "units_source", "property_type", "condition", "condition_source"],
      "properties": {
        "key": { "type": "string" },
        "listing_id": { "type": ["string", "null"] },
        "address": { "type": ["string", "null"] },
        "lat": { "type": "number" },
        "lon": { "type": "number" },
        "tract_geoid": { "type": ["string", "null"] },
        "county": { "type": "string", "enum": ["cook", "lake", "unknown"] },
        "price": { "type": ["number", "null"] },
        "price_source": { "type": ["string", "null"] },
        "units": { "type": ["integer", "null"] },
        "units_source": { "type": ["string", "null"] },
        "beds": { "type": ["number", "null"] },
        "sqft": { "type": ["number", "null"] },
        "year_built": { "type": ["number", "null"] },
        "property_type": { "type": ["string", "null"] },
        "condition": { "type": ["string", "null"] },
        "condition_source": { "type": "string" }
      }
    },
    "arv": {
      "type": "object",
      "required": [
        "value",
        "low",
        "high",
        "confidence",
        "method_tier",
        "method"
      ],
      "properties": {
        "value": {
          "type": [
            "number",
            "null"
          ],
          "description": "After-repair value; null when suppressed (Tier 3)"
        },
        "low": {
          "type": [
            "number",
            "null"
          ],
          "description": "Empirical dispersion low (NOT a fixed ±%)"
        },
        "high": {
          "type": [
            "number",
            "null"
          ]
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 100,
          "description": "DEPRECATED (V3-2.2) — legacy heuristic 0-100 confidence, kept for compatibility. Build on confidence_p10 instead."
        },
        "method_tier": {
          "type": [
            "integer",
            "null"
          ],
          "enum": [
            1,
            2,
            3,
            null
          ]
        },
        "method": {
          "type": "string",
          "enum": [
            "renovated_comps",
            "lake_gis_comps",
            "hedonic_v1",
            "suppressed"
          ],
          "description": "V3-1.3: Tier-1 comp evidence (renovated_comps | lake_gis_comps), hedonic_v1 (V3-1.2 transparent tier-2 model, ALWAYS range_only) or suppressed. nbhd_premium is NOT a valid arv method — that estimate rides in area_context only."
        },
        "comps": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "pin": {
                "type": "string"
              },
              "price": {
                "type": "number"
              },
              "indexed_price": {
                "type": "number"
              },
              "index_factor": {
                "type": "number",
                "description": "Time index applied to the sale price. V3-0.3: capped at 8%/yr compounded AND hard-clamped to [0.75, 1.30].",
                "minimum": 0.75,
                "maximum": 1.3
              },
              "gla_adj": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "GLA $ adjustment applied to the indexed price (marginal $/sf × sqft delta, capped ±15%)"
              },
              "sale_year": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "dist_mi": {
                "type": "number"
              },
              "sqft": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "condition": {
                "type": "string",
                "enum": [
                  "distressed",
                  "dated",
                  "renovated",
                  "new"
                ]
              },
              "similarity": {
                "type": "number"
              },
              "sale_date": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "ISO sale date when the source carries it (Socrata wvhk-k5uv sale_date, Lake GIS epoch); null for year-granularity corpus rows."
              },
              "beds": {
                "type": [
                  "integer",
                  "null"
                ]
              }
            }
          }
        },
        "flip_pairs": {
          "type": "array",
          "description": "Same-PIN resale legs detected in the pool (condition signal; never counted twice)"
        },
        "premium": {
          "type": [
            "object",
            "null"
          ],
          "description": "Tier-2 only. null otherwise.",
          "properties": {
            "value": {
              "type": "number"
            },
            "n_pairs": {
              "type": "integer"
            },
            "shrunk_from": {
              "type": [
                "number",
                "null"
              ]
            }
          }
        },
        "suppression_reason": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "insufficient_renovated_comps",
            "tract_not_ingested",
            "dispersion_exceeds_threshold",
            "outside_mapped_tracts",
            "luxury_thin_comps",
            "condo_model_unavailable",
            null
          ]
        },
        "appraisal_ceiling": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "flag": {
              "type": "boolean"
            },
            "max_reno_sale_24mo": {
              "type": [
                "number",
                "null"
              ]
            }
          }
        },
        "time_index_note": {
          "type": [
            "string",
            "null"
          ]
        },
        "flip_pairs_summary": {
          "type": [
            "object",
            "null"
          ],
          "description": "item 10(b): {n, median_uplift_pct, sample:[<=5]} — replaces the full same-PIN resale array.",
          "properties": {
            "n": {
              "type": "integer"
            },
            "median_uplift_pct": {
              "type": [
                "number",
                "null"
              ]
            },
            "sample": {
              "type": "array"
            }
          }
        },
        "range_only": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "true -> consumers surface only the RANGE; no point amount, offer, profit, NOI, DSCR, CoC, strategy score, or cashflow may be derived. The artifact's value is interval provenance, not an actionable estimate."
        },
        "n_comps": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Count of qualifying comps behind the value (max 12)."
        },
        "ladder_step": {
          "type": [
            "integer",
            "null"
          ],
          "description": "V3-1.4: which expansion-ladder step produced the stratum (1 = 0.5mi/180d, 2 = 0.75mi/270d, 3 = 1.0mi/365d). Each step past 1 costs 8 confidence points."
        },
        "confidence_p10": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 100,
          "description": "V3-2.2: calibrated confidence = P(|error| <= 10%) × 100 from the calibration segment (calibration.json). THE confidence field going forward."
        },
        "fsd": {
          "type": [
            "number",
            "null"
          ],
          "description": "Robust dispersion proxy (%) from the calibration segment; FSD tiers high<=13 / medium<=20 / low>20 (V3-2.2)."
        },
        "interval": {
          "type": [
            "object",
            "null"
          ],
          "description": "V3-2.1 served interval: split-conformal 80% band replacing the empirical IQR in low/high.",
          "properties": {
            "low": {
              "type": "number"
            },
            "high": {
              "type": "number"
            },
            "coverage": {
              "type": "number"
            },
            "calibrated": {
              "type": "boolean"
            },
            "segment": {
              "type": "string"
            },
            "method": {
              "type": "string",
              "examples": [
                "split_conformal",
                "hedonic_sigma_x_conformal"
              ]
            },
            "version": {
              "type": [
                "string",
                "null"
              ]
            },
            "widened_by_model_disagreement": {
              "type": [
                "number",
                "null"
              ],
              "description": "V3-1.2(a): set when |comp−model|/mean > 0.12 widened the band (warning approaches_disagree)"
            }
          }
        },
        "segment": {
          "type": [
            "string",
            "null"
          ],
          "description": "Calibration segment key '<ptype>_<city|suburb>' used for the interval/confidence."
        },
        "range_reason": {
          "type": [
            "string",
            "null"
          ],
          "examples": [
            "thin_comps",
            "calibration_display_gate",
            "thin_comps+calibration_display_gate",
            "hedonic_tier2_always_range"
          ]
        },
        "comp_range": {
          "type": [
            "object",
            "null"
          ],
          "description": "Empirical comp IQR (pre-calibration) kept for transparency once the calibrated interval replaces low/high."
        },
        "model": {
          "type": [
            "object",
            "null"
          ],
          "description": "hedonic_v1 tier-2 basis details (value, location_basis, quarter_used, segment) when arv.method == 'hedonic_v1'."
        }
      }
    },
    "value_as_is": {
      "type": [
        "object",
        "null"
      ],
      "description": "Dated/distressed stratum median (n>=3), LABELED. NEVER blended into arv. V3-1.12: relaxes once more to a mixed non-renovated stratum (1.0mi/48mo) with a documented 5% haircut (as_is_basis 'mixed_condition_haircut') before returning null with warning as_is_thin_evidence.",
      "required": [
        "value",
        "low",
        "high",
        "n_comps"
      ],
      "properties": {
        "value": {
          "type": [
            "number",
            "null"
          ]
        },
        "low": {
          "type": [
            "number",
            "null"
          ]
        },
        "high": {
          "type": [
            "number",
            "null"
          ]
        },
        "n_comps": {
          "type": "integer"
        },
        "as_is_basis": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "primary",
            "relaxed",
            "mixed_condition_haircut",
            null
          ]
        }
      }
    },
    "rent": {
      "type": "object",
      "required": [
        "market",
        "reno",
        "s8",
        "method",
        "confidence"
      ],
      "properties": {
        "market": {
          "type": [
            "number",
            "null"
          ],
          "description": "LEGACY ALIAS (V3-3.2) == as_is_contract.value; kept for compatibility."
        },
        "reno": {
          "type": [
            "number",
            "null"
          ],
          "description": "LEGACY ALIAS (V3-3.2) == stabilized_post_reno.value; kept for compatibility. Pro-forma renovated rent (labeled)."
        },
        "s8": {
          "type": [
            "number",
            "null"
          ],
          "description": "Section 8 / SAFMR by bedroom mix"
        },
        "method": {
          "type": "string",
          "examples": [
            "safmr_anchored",
            "mls_blended"
          ]
        },
        "mu": {
          "type": [
            "number",
            "null"
          ],
          "description": "MLS blend weight; 0 pre-license"
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ]
        },
        "unit_mix": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "beds": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "count": {
                "type": "integer"
              },
              "safmr": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "est": {
                "type": [
                  "number",
                  "null"
                ]
              }
            }
          }
        },
        "warnings": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "as_is_contract": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "value": {
              "type": [
                "number",
                "null"
              ]
            },
            "low": {
              "type": [
                "number",
                "null"
              ]
            },
            "high": {
              "type": [
                "number",
                "null"
              ]
            },
            "confidence": {
              "type": [
                "number",
                "null"
              ]
            },
            "interval_pct": {
              "type": [
                "number",
                "null"
              ],
              "description": "± band as a fraction, clamped [0.08, 0.25] (V3-3.6)"
            },
            "evidence": {
              "type": "array",
              "items": {
                "type": "object"
              }
            }
          },
          "description": "V3-3.2: what the building rents for TODAY in its current condition (never blended with the others)."
        },
        "stabilized_post_reno": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "value": {
              "type": [
                "number",
                "null"
              ]
            },
            "low": {
              "type": [
                "number",
                "null"
              ]
            },
            "high": {
              "type": [
                "number",
                "null"
              ]
            },
            "confidence": {
              "type": [
                "number",
                "null"
              ]
            },
            "interval_pct": {
              "type": [
                "number",
                "null"
              ],
              "description": "± band as a fraction, clamped [0.08, 0.25] (V3-3.6)"
            },
            "evidence": {
              "type": "array",
              "items": {
                "type": "object"
              }
            }
          },
          "description": "V3-3.2: post-renovation stabilized market rent; uplift evidence-bounded (<=1.5× as-is; SAFMR band × sqft elasticity)."
        },
        "context": {
          "type": [
            "object",
            "null"
          ],
          "description": "V3-3.2 CONTEXT ONLY — never anchors the estimate.",
          "properties": {
            "acs_gross": {
              "type": [
                "number",
                "null"
              ],
              "description": "ACS gross-rent context; null until the V3-3.4 ingest lands"
            },
            "safmr_2br_equiv": {
              "type": [
                "number",
                "null"
              ],
              "description": "HUD SAFMR 2BR for the ZIP (voucher standard — S8 arbitrage math)"
            },
            "zori_zip": {
              "type": [
                "number",
                "null"
              ],
              "description": "ZORI ZIP-blended all-bedroom rent"
            }
          }
        },
        "rent_confidence": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "low",
            "medium",
            null
          ],
          "description": "'low' when the band exceeds ±24% (V3-3.6) -> risk flag rent_model_uncertainty"
        }
      }
    },
    "rehab": {
      "type": "object",
      "required": [
        "estimate",
        "scope",
        "psf_base",
        "multipliers"
      ],
      "properties": {
        "estimate": {
          "type": [
            "number",
            "null"
          ]
        },
        "scope": {
          "type": "string",
          "enum": [
            "cosmetic",
            "moderate",
            "gut",
            "structural"
          ]
        },
        "scope_source": {
          "type": "string",
          "description": "e.g. 'condition:distressed→gut', 'caller_override'"
        },
        "psf_base": {
          "type": "number"
        },
        "multipliers": {
          "type": "object",
          "properties": {
            "violations": {
              "type": "number"
            },
            "age": {
              "type": "number"
            },
            "mechanicals": {
              "type": "number"
            }
          }
        },
        "registry_version": {
          "type": "string"
        }
      }
    },
    "tax": {
      "type": "object",
      "required": [
        "current_annual",
        "predictive_annual",
        "target_basis",
        "county",
        "method"
      ],
      "properties": {
        "current_annual": {
          "type": [
            "number",
            "null"
          ]
        },
        "predictive_annual": {
          "type": [
            "number",
            "null"
          ]
        },
        "target_basis": {
          "type": "string",
          "enum": [
            "arv",
            "price",
            "area_estimate"
          ],
          "description": "Basis the predictive tax targeted. V3-1.3: 'area_estimate' when the forward value came from area context (no Tier-1 ARV)."
        },
        "county": {
          "type": "string",
          "enum": [
            "cook",
            "lake",
            "unknown"
          ]
        },
        "method": {
          "type": "string",
          "examples": [
            "cook_equalized",
            "lake_median_rate"
          ]
        },
        "shock_flag": {
          "type": "boolean"
        },
        "next_reassess_year": {
          "type": [
            "integer",
            "null"
          ]
        },
        "exemptions_assumed": {
          "type": [
            "number",
            "null"
          ]
        },
        "confidence": {
          "type": [
            "string",
            "null"
          ]
        },
        "appeal": {
          "type": [
            "object",
            "null"
          ],
          "description": "V3-3.8 Board-of-Review appeal scenario (conservative 10% AV reduction default; registry tax.bor_appeal_*).",
          "properties": {
            "est_av_reduction_pct": {
              "type": "number"
            },
            "est_annual_savings": {
              "type": "number"
            },
            "locked_years": {
              "type": "integer"
            },
            "note": {
              "type": "string"
            }
          }
        }
      }
    },
    "noi_implied_value": {
      "type": [
        "number",
        "null"
      ],
      "description": "Income-approach cross-check ONLY; never sets ARV. Warning when it diverges > 25% from comp ARV."
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "area_context": {
      "type": [
        "object",
        "null"
      ],
      "description": "V3-1.3 + 0.7: the neighborhood-premium estimate when no Tier-1 comp ARV exists (and as context beside Tier-1). NEVER a property-specific value; consumer surfaces render the label verbatim. Rows scored off this basis carry deal_score <= 65 and score_basis 'area_estimate'.",
      "required": [
        "value",
        "label"
      ],
      "properties": {
        "value": {
          "type": "number"
        },
        "low": {
          "type": [
            "number",
            "null"
          ]
        },
        "high": {
          "type": [
            "number",
            "null"
          ]
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "maximum": 55,
          "description": "Capped at the old Tier-2 ceiling (55)."
        },
        "label": {
          "type": "string",
          "enum": [
            "Area estimate — not property-specific"
          ]
        },
        "method": {
          "type": "string",
          "enum": [
            "nbhd_premium"
          ]
        },
        "premium": {
          "type": [
            "object",
            "null"
          ]
        },
        "basis": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "artifact": {
      "type": [
        "object",
        "null"
      ],
      "description": "V3-1.1 THE SINGLE VALUATION ARTIFACT — one versioned result per subject+inputs; every serving path (cards, /api/property, /api/underwrite, MCP underwrite/deep_underwrite/comps, market_pulse) derives its displayed value from this record.",
      "required": [
        "model_version",
        "as_of",
        "inputs_hash",
        "subject",
        "comps_used",
        "comps_rejected",
        "fallback_chain",
        "warnings"
      ],
      "properties": {
        "model_version": {
          "type": "string"
        },
        "as_of": {
          "type": "string"
        },
        "inputs_hash": {
          "type": "string"
        },
        "subject": {
          "type": "object",
          "description": "Same canonical subject object as valuation.subject; parity is contract-enforced.",
          "required": ["key", "lat", "lon", "tract_geoid", "county", "price", "price_source", "units", "units_source", "property_type", "condition", "condition_source"],
          "properties": {
            "key": { "type": "string" },
            "listing_id": { "type": ["string", "null"] },
            "address": { "type": ["string", "null"] },
            "lat": { "type": "number" },
            "lon": { "type": "number" },
            "tract_geoid": { "type": ["string", "null"] },
            "county": { "type": "string", "enum": ["cook", "lake", "unknown"] },
            "price": { "type": ["number", "null"] },
            "price_source": { "type": ["string", "null"] },
            "units": { "type": ["integer", "null"] },
            "units_source": { "type": ["string", "null"] },
            "beds": { "type": ["number", "null"] },
            "sqft": { "type": ["number", "null"] },
            "year_built": { "type": ["number", "null"] },
            "property_type": { "type": ["string", "null"] },
            "condition": { "type": ["string", "null"] },
            "condition_source": { "type": "string" }
          }
        },
        "as_is": {
          "type": [
            "object",
            "null"
          ]
        },
        "arv": {
          "type": [
            "object",
            "null"
          ],
          "description": "Tier-1 comp evidence only: {value, low, high, method, tier, confidence, n_comps, range_only} — null when no comp-stratified ARV exists.",
          "properties": {
            "value": {
              "type": "number"
            },
            "low": {
              "type": [
                "number",
                "null"
              ]
            },
            "high": {
              "type": [
                "number",
                "null"
              ]
            },
            "method": {
              "type": "string",
              "enum": [
                "renovated_comps",
                "lake_gis_comps"
              ]
            },
            "tier": {
              "type": "integer",
              "enum": [
                1
              ]
            },
            "confidence": {
              "type": [
                "number",
                "null"
              ]
            },
            "n_comps": {
              "type": [
                "integer",
                "null"
              ]
            },
            "range_only": {
              "type": "boolean"
            }
          }
        },
        "arv_null_reason": {
          "type": [
            "string",
            "null"
          ],
          "description": "Machine-readable reason when arv is null (insufficient_renovated_comps, dispersion_exceeds_threshold, luxury_thin_comps, tract_not_ingested, condo_model_unavailable, ...)."
        },
        "comps_used": {
          "type": "array"
        },
        "comps_rejected": {
          "type": "array",
          "description": "Reason-tagged rejections: gla_band, beds_band, ppsf_outlier_mad, rapid_resale_within_90d, not arms-length (price_under_10k | multi_parcel_sale | non_arms_deed_type | quitclaim_deed | duplicate_sale_within_365d), ..."
        },
        "area_context": {
          "type": [
            "object",
            "null"
          ]
        },
        "vintages": {
          "type": [
            "object",
            "null"
          ]
        },
        "fallback_chain": {
          "type": "array",
          "description": "V3-1.8: ordered comp-source attempts; entries {source: corpus | socrata_fallback | socrata | socrata_forced | lake_gis | none, served: boolean, fields_missing?, note?}. COMP_SOURCE='socrata' env override forces the Socrata path (socrata_forced).",
          "items": {
            "type": "object",
            "properties": {
              "source": {
                "type": "string",
                "enum": [
                  "corpus",
                  "socrata_fallback",
                  "socrata",
                  "socrata_forced",
                  "lake_gis",
                  "none"
                ]
              },
              "served": {
                "type": "boolean"
              }
            }
          }
        },
        "warnings": {
          "type": "array"
        }
      }
    }
  },
  "x-display-ladder": {
    "policy_id": "V3-2.3",
    "enforced_at": "worker.js buildValuation — the ONE place that reads calibration.json segments[seg].display",
    "ladder": [
      "Tier-1, >=5 comps: point + calibrated interval IF calibration display == 'point'; else RANGE (arv.range_only=true, range_reason 'calibration_display_gate')",
      "Tier-1, 3-4 comps: RANGE always (range_reason includes 'thin_comps'); <3 comps -> no Tier-1",
      "No Tier-1: hedonic_v1 tier-2 RANGE where the hedonic segment is display_eligible AND subject is Cook AND the location effect resolved; else area_context demotion (value NEVER in arv, deal-score cap 65) or full suppression with reason"
    ],
    "note": "calibration display:'range' or 'suppress' keeps the calibrated interval in the valuation artifact but blocks every point-derived economic and score. Consumer surfaces render no midpoint. When a segment earns display:'point', point economics unlock automatically."
  }
}
