{"origins":[{"value":"USER","label":"User input","user_input":true},{"value":"DERIVED","label":"Derived","user_input":false},{"value":"PARK_DATA","label":"Park/location data","user_input":false},{"value":"MAP_DATA","label":"Map/CV data","user_input":false},{"value":"EXTERNAL","label":"External data","user_input":false},{"value":"CONDITIONAL","label":"Conditional input","user_input":true}],"fields":[{"field":"park_name","origin":"USER","origin_label":"User input","user_input":true,"required":true,"conditional":false,"trigger":null,"derivation":"The primary identifier. Resolved to a park record, and through it to coordinates, hours, boundary and content."},{"field":"visit_date","origin":"USER","origin_label":"User input","user_input":true,"required":true,"conditional":false,"trigger":null,"derivation":"Hours, seasonal closures, events and the sun all depend on the date, so no default can stand in for it."},{"field":"group","origin":"USER","origin_label":"User input","user_input":true,"required":true,"conditional":false,"trigger":null,"derivation":"Counts per age band. Sets walking pace, rest cadence, difficulty ceiling and the effort budget at once."},{"field":"trip_duration","origin":"USER","origin_label":"User input","user_input":true,"required":true,"conditional":false,"trigger":null,"derivation":"HALF_DAY / FULL_DAY / TWO_DAYS / THREE_DAYS. A length, not a label: four hours, eight hours, or eight hours a day."},{"field":"arrival_time","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"An ordinary start, moved later where the park does not open until then. Hours narrow the day, never widen it."},{"field":"pace","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"BALANCED unless stated. Sets the objective, the dwell multiplier and the rest cadence together."},{"field":"interests","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Unstated means unweighted, which is a usable plan. The chips offered are narrowed to what this park can satisfy."},{"field":"accessibility","origin":"CONDITIONAL","origin_label":"Conditional input","user_input":true,"required":false,"conditional":true,"trigger":"always offered once, before the plan — a need nobody states cannot be inferred from anything the platform holds","derivation":"A visitor requirement, never the facility's own status — that comes from the park record."},{"field":"dietary_requirements","origin":"CONDITIONAL","origin_label":"Conditional input","user_input":true,"required":false,"conditional":true,"trigger":"the park has food, and the visit covers a meal window","derivation":"Skipped entirely where no food is recorded; there would be nothing for the answer to change."},{"field":"budget","origin":"CONDITIONAL","origin_label":"Conditional input","user_input":true,"required":false,"conditional":true,"trigger":"the park or one of its stops charges","derivation":"Free parks never ask. Otherwise a tier, priced against the venue class, since a visitor cannot know local prices yet."},{"field":"pinned_stops","origin":"CONDITIONAL","origin_label":"Conditional input","user_input":true,"required":false,"conditional":true,"trigger":"the visitor asks to choose stops themselves","derivation":"Offered from the park's own recorded stops, by name."},{"field":"difficulty","origin":"CONDITIONAL","origin_label":"Conditional input","user_input":true,"required":false,"conditional":true,"trigger":"a walking interest was chosen (hiking, adventure or scenic views) and the park grades its trails at more than one level","derivation":"A single-difficulty park has nothing to choose between. The party's own ceiling applies regardless of the answer."},{"field":"personal_blocks","origin":"CONDITIONAL","origin_label":"Conditional input","user_input":true,"required":false,"conditional":true,"trigger":"the visitor says part of the day is already spoken for","derivation":"Held open as holes; the schedule cascades past them."},{"field":"latitude","origin":"MAP_DATA","origin_label":"Map/CV data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Nominatim's coordinate for the resolved park, corroborated against Wikidata P625. Never asked."},{"field":"longitude","origin":"MAP_DATA","origin_label":"Map/CV data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"As latitude. Asked only if two same-named parks cannot be told apart, and then as a choice of place, not a number."},{"field":"park_boundary","origin":"MAP_DATA","origin_label":"Map/CV data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"OSM way/relation geometry for the resolved park."},{"field":"park_type","origin":"EXTERNAL","origin_label":"External data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Inferred from the resolved name and OSM class; sets the turnaround margin, spend baseline and attention curve."},{"field":"timezone","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"The park's recorded zone; the UTC offset for the visit date comes from it, so the visitor never types one."},{"field":"utc_offset_hours","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"zoneinfo applied to the park's timezone on the visit date, so daylight saving is right. Longitude/15 as a fallback."},{"field":"operating_hours","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Structured weekly hours for the visit date's weekday, else the park's default open/close."},{"field":"seasonal_hours","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Seasonal variants of the above, selected by the visit date."},{"field":"closed_areas","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Rules and seasonal windows evaluated against the visit date."},{"field":"entrances","origin":"MAP_DATA","origin_label":"Map/CV data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Entry/exit places from the map."},{"field":"exits","origin":"MAP_DATA","origin_label":"Map/CV data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"As entrances; primary gate first."},{"field":"vehicle_access","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"From the entrance record."},{"field":"parking_areas","origin":"MAP_DATA","origin_label":"Map/CV data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"PARKING places from the map."},{"field":"entry_fee","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Park record; priced against the budget."},{"field":"facility_type","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Category on the place record, normalised into the platform's own taxonomy. The visitor is never asked what a thing is."},{"field":"facility_accessibility","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"The facility's recorded status — a different fact from the visitor's requirement, and never conflated with it."},{"field":"rest_area_capacity","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Place record."},{"field":"shade_available","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Place record."},{"field":"food_type","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Restaurant/place category."},{"field":"dietary_options","origin":"EXTERNAL","origin_label":"External data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"OSM cuisine, tri-stated: suitable, unsuitable, or unknown with the caveat carried into the plan."},{"field":"attraction_type","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Place category."},{"field":"nature_type","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Place category and zone type."},{"field":"activity_type","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Activity record."},{"field":"activity_eligibility","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Age and height gates on the record."},{"field":"weather_dependency","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Activity metadata."},{"field":"event_schedule","origin":"EXTERNAL","origin_label":"External data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"A schedule feed. None is recorded, so events are never offered and never asked about."},{"field":"trail_geometry","origin":"MAP_DATA","origin_label":"Map/CV data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"OSM ways, stored as GeoJSON."},{"field":"trail_distance","origin":"MAP_DATA","origin_label":"Map/CV data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Measured along the geometry."},{"field":"trail_elevation","origin":"EXTERNAL","origin_label":"External data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Where a source records it; absent is absent."},{"field":"trail_difficulty","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Source grading, normalised."},{"field":"trail_duration","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Naismith over distance and ascent, at the party's own pace."},{"field":"trail_accessibility","origin":"PARK_DATA","origin_label":"Park/location data","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Recorded wheelchair/surface flags."},{"field":"trip_window","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Arrival, opening, timed entry, closing, turnaround before sunset and any return constraint, composed in one direction."},{"field":"sunrise_sunset","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"NOAA solar position for the park's coordinates and the visit date. Computed, not fetched."},{"field":"walking_speed","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Slowest age band present, times the travel mode."},{"field":"rest_cadence","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Slowest age band present, adjusted by pace and seating."},{"field":"difficulty_ceiling","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Least able band present, and fitness."},{"field":"effort_ceiling","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Naismith budget scaled by band tolerance and fitness."},{"field":"visit_duration_per_stop","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Type prior for the stop, times the pace factor, decayed by how long the visitor has already been on their feet."},{"field":"has_children","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"From the group counts. Asking it separately would be asking the same question twice."},{"field":"require_wheelchair_access","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"From the party's wheelchair count and step-free need."},{"field":"meals_wanted","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"The meal windows the trip window actually covers."},{"field":"spend_tier","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"MEDIUM unless a budget question was triggered and answered."},{"field":"planning_mode","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"AUTOMATIC until the visitor pins a stop, which is what choosing stops means."},{"field":"travel_mode","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Walking, unless an access need says otherwise."},{"field":"strategy_id","origin":"DERIVED","origin_label":"Derived","user_input":false,"required":false,"conditional":false,"trigger":null,"derivation":"Implied by pace. Never asked."},{"field":"timed_entry_window","origin":"CONDITIONAL","origin_label":"Conditional input","user_input":true,"required":false,"conditional":true,"trigger":"the park issues timed entry (no outdoor park in this platform does, so it is not asked)","derivation":"Clamps the whole day when present."},{"field":"shortest_height_cm","origin":"CONDITIONAL","origin_label":"Conditional input","user_input":true,"required":false,"conditional":true,"trigger":"a stop records a minimum height (no outdoor park in this platform does, so it is not asked)","derivation":"A gate, not a preference: under it means excluded, with the reason stated."},{"field":"overnight_location","origin":"CONDITIONAL","origin_label":"Conditional input","user_input":true,"required":false,"conditional":true,"trigger":"the trip runs to two or more days","derivation":"Only then is there a night to place, or a transfer to cost."}],"counts":{"USER":4,"DERIVED":19,"CONDITIONAL":9,"MAP_DATA":8,"EXTERNAL":4,"PARK_DATA":18}}