{
  "phase": "extension", "version": 1, "root_seed": 0,
  "frozen_before_assessment": true,
  "connectors": {"environment_seeds": [0,7], "structure_seeds": [0,5], "count": 48, "policy": "Eight independently frozen generic terrain expressions, each copied for six width/rise/cover/curve decisions. Locked platforms and public endpoints. Gradients bounded by 0.035, waves 0..0.7, radial depression 0..2, optional water level 3. Width 3 or 5, rise 0..2, post height <=8, maximum unsupported taxicab deck span 6, fill <=800. No resampling."},
  "boundaries": {"count": 16, "policy": "Four environment seeds by four independently seeded cubic controls, height 1..3 and socket spacing 4..10. Include a zero-curvature line. Maximum base change one block per raster step."},
  "halls": {"count": 12, "policy": "Seeds 0..11, variable polygon widths/depths 13..25, chamfer 0..4, ceiling 5..7, hip or hip with lantern. Functions, entrances and proportions locked before site query."},
  "compositions": {"count": 12, "policy": "Two lightweight public graph clients, seeds 0..5. One branching campus, one perimeter cluster. Preserve locked vertices and declared graph edges. Includes existing Hearth buildings substituted for polygon halls."},
  "stress": {"count": 24, "policy": "Single locked endpoint pair per input. Independent environment seeds 2000..2023, gradients through 0.28, waves through 4, water through 12, profile rise 0..3. Retain every success and failure without resampling or widened bounds."},
  "novel_compositions": "Focused tests additionally use an unsampled kinked polyline and a polygon footprint not used in the two shipped clients.",
  "metrics": ["input outcome", "candidate acceptance", "all diagnostics", "runtime", "actual edit cost", "principal geometry/topology signature", "contact signature"],
  "claims": "Self-authored finite extension exercise, not independent audit. Prior external Pyodide results are user-reported; this phase claims only execution actually performed here."
}
