{
  "version": 2,
  "status": "Five great spirits name the five-day week. Hearthday is a full commercial closure. Routine proposal, not an implemented calendar or map.",
  "week": {
    "length": 5,
    "days": [
      {
        "id": 1,
        "name": "Rootday",
        "theme": "Ordinary work, repairs and planning",
        "spirit": {
          "name": "The Root",
          "associations": "Ancestry, endurance and belonging",
          "symbol": "root"
        },
        "memory": "Grow"
      },
      {
        "id": 2,
        "name": "Riverday",
        "theme": "Larger market and exchanges",
        "spirit": {
          "name": "The River",
          "associations": "Movement, exchange and change",
          "symbol": "wave"
        },
        "memory": "Travel"
      },
      {
        "id": 3,
        "name": "Emberday",
        "theme": "Focused work, training and the long delivery route",
        "spirit": {
          "name": "The Ember",
          "associations": "Making, courage and transformation",
          "symbol": "ember"
        },
        "memory": "Make"
      },
      {
        "id": 4,
        "name": "Bloomday",
        "theme": "Social visits and a small optional music evening",
        "spirit": {
          "name": "The Bloom",
          "associations": "Expression, generosity and fleeting beauty",
          "symbol": "flower"
        },
        "memory": "Celebrate"
      },
      {
        "id": 5,
        "name": "Hearthday",
        "theme": "All shops closed; essential care, households and optional seasonal gatherings",
        "spirit": {
          "name": "The Hearth",
          "associations": "Shelter, kinship and rest",
          "symbol": "hearth"
        },
        "memory": "Rest"
      }
    ],
    "memoryAid": "Grow → travel → make → celebrate → rest",
    "naming": "Days use familiar domains of the five great spirits; no ceremonial names need to be memorised. Spirit personalities and deeper lore remain open."
  },
  "phases": [
    {
      "id": "dawn",
      "window": "roughly 06:00–09:00; Roska starts 04:30, Vesper later"
    },
    {
      "id": "morning",
      "window": "09:00–12:00"
    },
    {
      "id": "midday",
      "window": "12:00–14:00"
    },
    {
      "id": "afternoon",
      "window": "14:00–18:00; visits occupy part of this window"
    },
    {
      "id": "evening",
      "window": "18:00–21:00; public inn closes 20:00; Wren sleeps at 20:00"
    },
    {
      "id": "night",
      "window": "Home overnight; Vesper may observe until 22:00"
    }
  ],
  "rules": {
    "precedence": [
      "Urgent safety or medical care and essential dependent care",
      "Accepted excursion with commitments handled, or known travel absence",
      "Assigned seasonal Hearthday gathering, for consenting participants only",
      "Weekly shared event",
      "Hearthday personal routine",
      "Baseline workday routine"
    ],
    "travel": "Place IDs are destination anchors, not routes. Allow travel time after the map exists. No simultaneous visit across distant places; exact arrival times are not yet fixed.",
    "weeklyVisits": "A phase entry reserves a broad visit window, not an uninterrupted four-hour gathering. Return checks explicitly stated in the event remain required.",
    "hearthday": "All shops, markets, routine paid services, paid transport, order collections and public office hours close for the whole day. No buying from NPCs off duty or substitute festival stalls. Existing lodgers keep access; urgent medical aid, necessary watch duties and animal, crop, hive and fermentation checks continue. Private cooking and voluntary shared meals are not commercial services.",
    "childcare": "Days 1–4: Elian accompanies Wren before school, teaches mornings, Edda explicitly agrees to lunch-reading supervision 12:00–14:00 while Elian is at the hall, then Elian resumes care. Day 5: Elian remains with Wren all day. No automatic Lucien babysitting or unsupervised evening wandering.",
    "leadership": "Khaeli’s late-pregnancy routine prioritises seated work, short accessible visits, rest and optional attendance. Tiredness or weather moves habitat discussion to the hall; no medical crisis implied. Hearthday has no scheduled leadership appointments.",
    "travelAbsence": "Evren and Seraphine are away through Day 3 daytime after departure. Their own stock is unavailable in person; Orin keeps ordinary supplies available. Delayed return remains an absence, not teleportation.",
    "weather": "Unsafe river, forest or ridge conditions move work to gear care/records at home or the usual sheltered workplace. Hive openings depend on weather. Public cancellation notices name the fallback destination.",
    "charcoal": "Torren only travels away after a burn is safely finished, secured or explicitly handed over; no unattended burn implied. A live burn overrides social visits.",
    "companions": "Only the current 2 tanks / 2 healers / 4 damage roster is eligible. Recruitment is player-triggered and overrides a routine only after work commitments are handled. Practice is not deployment. No new ability kits or companions added.",
    "services": "Rootday through Bloomday have predictable morning availability, with posted weekly exceptions. On Bloomday, shopkeepers and notices remind players to stock up for Hearthday. All normal commerce resumes on Rootday; do not shift missed purchases into a hidden Hearthday counter.",
    "inn": "Agnes hosts and Hesta controls food. Days 1–3 serve supper until 20:00. Bloomday has no cooked supper while Hesta visits friends; Agnes handles rooms and cold drinks. Hearthday has no public food, drink or room sales. Existing guests use prepaid lodging and provisions arranged on Bloomday; neither resident has an unpaid service shift.",
    "events": "Recurring small gatherings are proposals rather than festivals. Participation never creates a romantic relationship or changes a household.",
    "seasonalHearthdays": "The proposed year has 120 days, 24 weeks and four 30-day seasons. Each week-of-year has one assigned Hearthday character: 20 small or quiet weeks and four larger festivals. Optional participation changes only the listed residents and phases. Birthdays and essential care take priority; no occasion opens shops.",
    "voluntary": "Gatherings are opt-in; declining leaves the personal Hearthday routine in place. Essential care, rest and urgent needs take priority. No sales, compulsory errands, mandatory gifts or automatic relationship changes.",
    "annualBirthdays": "See annual-calendar.v1.json for 40 proposed birthdays and date-specific home visits. A short greeting is enough. No age progression or real-person birthday is inferred. Wren’s birthday includes Elian’s supervision."
  },
  "routines": [
    {
      "residentId": "villager.agnes",
      "name": "Agnes",
      "homeId": "address.agnes",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.inn",
          "activity": "Check pantry and prepare breakfast"
        },
        {
          "phase": "morning",
          "placeId": "site.inn",
          "activity": "Welcome guests and handle rooms"
        },
        {
          "phase": "midday",
          "placeId": "site.inn",
          "activity": "Lunch service and a proper meal break"
        },
        {
          "phase": "afternoon",
          "placeId": "site.inn",
          "activity": "Accounts, arrivals and small repairs"
        },
        {
          "phase": "evening",
          "placeId": "site.inn",
          "activity": "Host supper; close public room at 20:00, then go home"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.agnes",
        "activity": "Read a ridiculous mystery with no business callers"
      },
      "night": {
        "placeId": "address.agnes",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "quiet-inn-table"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.agnes",
          "activity": "Slow breakfast and read a mystery; no pantry shift"
        },
        {
          "phase": "morning",
          "placeId": "address.agnes",
          "activity": "A private morning with no room or meal sales"
        },
        {
          "phase": "midday",
          "placeId": "address.agnes",
          "activity": "Lunch made for herself"
        },
        {
          "phase": "afternoon",
          "placeId": "address.agnes",
          "activity": "Read and rest, without business callers"
        },
        {
          "phase": "evening",
          "placeId": "address.agnes",
          "activity": "Quiet supper and puzzle reading"
        }
      ]
    },
    {
      "residentId": "villager.asmo",
      "name": "Asmo",
      "homeId": "address.leadership",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.leadership",
          "activity": "Breakfast and quiet music with Khaeli"
        },
        {
          "phase": "morning",
          "placeId": "site.hall",
          "activity": "Predictable public listening and decision hours"
        },
        {
          "phase": "midday",
          "placeId": "site.hall",
          "activity": "Lunch break, then review one practical village problem"
        },
        {
          "phase": "afternoon",
          "placeId": "site.hall",
          "activity": "Accounts and correspondence; finish by late afternoon"
        },
        {
          "phase": "evening",
          "placeId": "address.leadership",
          "activity": "Supper with Khaeli, piano and unfinished compositions"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.leadership",
        "activity": "Shared rest and preparing the baby’s sleeping nook with Khaeli"
      },
      "night": {
        "placeId": "address.leadership",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "structural-review",
        "music-evening",
        "paid-repair-budget"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.leadership",
          "activity": "Unhurried breakfast with Khaeli"
        },
        {
          "phase": "morning",
          "placeId": "address.leadership",
          "activity": "Private piano practice and household time; hall office closed"
        },
        {
          "phase": "midday",
          "placeId": "address.leadership",
          "activity": "Lunch together without village accounts"
        },
        {
          "phase": "afternoon",
          "placeId": "address.leadership",
          "activity": "Shared rest and work on the sleeping nook only by choice"
        },
        {
          "phase": "evening",
          "placeId": "address.leadership",
          "activity": "Supper and music with Khaeli"
        }
      ]
    },
    {
      "residentId": "villager.lys",
      "name": "Aveline",
      "homeId": "address.lys",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.flower-garden",
          "activity": "Cut flowers and water beds"
        },
        {
          "phase": "morning",
          "placeId": "site.flower-garden",
          "activity": "Sell bouquets and take arrangement orders"
        },
        {
          "phase": "midday",
          "placeId": "site.flower-garden",
          "activity": "Lunch and prepare collected orders"
        },
        {
          "phase": "afternoon",
          "placeId": "site.flower-garden",
          "activity": "Prune, plant and press a few favourite blooms"
        },
        {
          "phase": "evening",
          "placeId": "address.lys",
          "activity": "Supper and a novel; leave the flower work behind"
        }
      ],
      "restDayAfternoon": {
        "placeId": "site.green",
        "activity": "Sketch colours and enjoy the garden without tending it"
      },
      "night": {
        "placeId": "address.lys",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "flowers-and-remembrance",
        "market-day"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.lys",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.lys",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.lys",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "site.green",
          "activity": "Sketch colours and enjoy the garden without tending it"
        },
        {
          "phase": "evening",
          "placeId": "address.lys",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.bram",
      "name": "Bram",
      "homeId": "address.bram",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.forge",
          "activity": "Light forge and prepare the day’s metal"
        },
        {
          "phase": "morning",
          "placeId": "site.forge",
          "activity": "Repair intake, fittings and a predictable customer hour"
        },
        {
          "phase": "midday",
          "placeId": "site.forge",
          "activity": "Extinguish active work for lunch; review practical jobs"
        },
        {
          "phase": "afternoon",
          "placeId": "site.forge",
          "activity": "Focused forging and finish outstanding repairs"
        },
        {
          "phase": "evening",
          "placeId": "address.bram",
          "activity": "Cook, rest and make small offcut birds"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.bram",
        "activity": "Unhurried sculpture and rest; forge cold"
      },
      "night": {
        "placeId": "address.bram",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "repair-exchange",
        "controlled-practice"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.bram",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.bram",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.bram",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.bram",
          "activity": "Unhurried sculpture and rest; forge cold"
        },
        {
          "phase": "evening",
          "placeId": "address.bram",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.solan",
      "name": "Dain",
      "homeId": "address.carpenters-household",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.carpenters-household",
          "activity": "Breakfast with Torren and agree household chores"
        },
        {
          "phase": "morning",
          "placeId": "site.craft-yard",
          "activity": "Take repair requests and work on furniture"
        },
        {
          "phase": "midday",
          "placeId": "site.craft-yard",
          "activity": "Shared yard lunch; trade practical advice"
        },
        {
          "phase": "afternoon",
          "placeId": "site.craft-yard",
          "activity": "Joinery and scheduled repair visits, logged at the yard"
        },
        {
          "phase": "evening",
          "placeId": "address.carpenters-household",
          "activity": "Supper with Torren; a toy or comfort project of his own"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.carpenters-household",
        "activity": "Work on his own comfortable chair, only if he feels like it"
      },
      "night": {
        "placeId": "address.carpenters-household",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "repair-exchange",
        "toy-repairs",
        "home-cooking"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.carpenters-household",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.carpenters-household",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.carpenters-household",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.carpenters-household",
          "activity": "Work on his own comfortable chair, only if he feels like it"
        },
        {
          "phase": "evening",
          "placeId": "address.carpenters-household",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.edda",
      "name": "Edda",
      "homeId": "address.edda",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.edda",
          "activity": "Breakfast and a few pages before opening"
        },
        {
          "phase": "morning",
          "placeId": "site.archive-school",
          "activity": "Open library, returns and thoughtful recommendations"
        },
        {
          "phase": "midday",
          "placeId": "site.archive-school",
          "activity": "Lunch reading table; agreed supervision of Wren on Days 1–4"
        },
        {
          "phase": "afternoon",
          "placeId": "site.archive-school",
          "activity": "Book repair and research; brief garden pause at closing"
        },
        {
          "phase": "evening",
          "placeId": "address.edda",
          "activity": "Melodramatic fiction and hesitant pages of her own"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.edda",
        "activity": "Protected reading and writing, away from the service desk"
      },
      "night": {
        "placeId": "address.edda",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "source-debate",
        "books-without-performance"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.edda",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.edda",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.edda",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.edda",
          "activity": "Protected reading and writing, away from the service desk"
        },
        {
          "phase": "evening",
          "placeId": "address.edda",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.elian",
      "name": "Elian",
      "homeId": "address.archive-household",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.archive-household",
          "activity": "Breakfast with Wren and walk together"
        },
        {
          "phase": "morning",
          "placeId": "site.archive-school",
          "activity": "Teach morning lessons on Days 1–4"
        },
        {
          "phase": "midday",
          "placeId": "site.hall",
          "activity": "Clerk window on Days 1–4 while Edda supervises Wren by agreement"
        },
        {
          "phase": "afternoon",
          "placeId": "site.archive-school",
          "activity": "Lesson preparation and supervised projects with Wren"
        },
        {
          "phase": "evening",
          "placeId": "address.archive-household",
          "activity": "Family supper, reading, Wren’s 20:00 bedtime; quiet adult time afterward"
        }
      ],
      "restDayAfternoon": {
        "placeId": "site.green",
        "activity": "Paper creatures and running games with Wren"
      },
      "night": {
        "placeId": "address.archive-household",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "green-outing"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.archive-household",
          "activity": "Breakfast with Wren, with no school rush"
        },
        {
          "phase": "morning",
          "placeId": "address.archive-household",
          "activity": "Paper models and mapmaking with Wren"
        },
        {
          "phase": "midday",
          "placeId": "site.green",
          "activity": "Family picnic with Wren; bring provisions from home"
        },
        {
          "phase": "afternoon",
          "placeId": "site.green",
          "activity": "Supervise Wren’s running games and paper creatures"
        },
        {
          "phase": "evening",
          "placeId": "address.archive-household",
          "activity": "Family supper and reading; Wren sleeps at 20:00"
        }
      ]
    },
    {
      "residentId": "villager.evren",
      "name": "Evren",
      "homeId": "address.inn-lodging",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.stables",
          "activity": "Check animal and load with Fen before departure"
        },
        {
          "phase": "morning",
          "placeId": "site.stables",
          "activity": "Local delivery round; collection point remains the yard"
        },
        {
          "phase": "midday",
          "placeId": "site.market",
          "activity": "Local parcels and meal break"
        },
        {
          "phase": "afternoon",
          "placeId": "site.stables",
          "activity": "Posted collection window, cart checks and correspondence"
        },
        {
          "phase": "evening",
          "placeId": "site.inn",
          "activity": "Supper, letters and conversation; lodging afterward"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.inn-lodging",
        "activity": "Write personal letters and tend his small plant"
      },
      "night": {
        "placeId": "address.inn-lodging",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "harness-feedback",
        "long-route-outbound",
        "music-evening"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.inn-lodging",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.inn-lodging",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.inn-lodging",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.inn-lodging",
          "activity": "Write personal letters and tend his small plant"
        },
        {
          "phase": "evening",
          "placeId": "address.inn-lodging",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.fen",
      "name": "Fen",
      "homeId": "address.fen",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.stables",
          "activity": "Feed, water and inspect animals before breakfast"
        },
        {
          "phase": "morning",
          "placeId": "site.stables",
          "activity": "Animal care and transport requests"
        },
        {
          "phase": "midday",
          "placeId": "site.stables",
          "activity": "Lunch after settling animals; check tack"
        },
        {
          "phase": "afternoon",
          "placeId": "site.stables",
          "activity": "Repairs, gentle exercise and arrivals"
        },
        {
          "phase": "evening",
          "placeId": "site.stables",
          "activity": "Final feed and stable check, then supper at home"
        }
      ],
      "restDayAfternoon": {
        "placeId": "site.stables",
        "activity": "Essential animal checks only, with a long quiet break"
      },
      "night": {
        "placeId": "address.fen",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "harness-feedback"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "site.stables",
          "activity": "Essential feed, water and animal welfare check"
        },
        {
          "phase": "morning",
          "placeId": "address.fen",
          "activity": "Breakfast and rest after settling the animals; no transport sales"
        },
        {
          "phase": "midday",
          "placeId": "site.stables",
          "activity": "Short water and welfare check, then his own lunch"
        },
        {
          "phase": "afternoon",
          "placeId": "site.stables",
          "activity": "Essential animal checks between long quiet breaks; no customer appointments"
        },
        {
          "phase": "evening",
          "placeId": "site.stables",
          "activity": "Final feed and safety check, then supper at home"
        }
      ]
    },
    {
      "residentId": "villager.freya",
      "name": "Freya",
      "homeId": "address.freya",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.watch-training",
          "activity": "Solo practice before breakfast"
        },
        {
          "phase": "morning",
          "placeId": "site.watch-training",
          "activity": "Ward drills and controlled spellblade practice"
        },
        {
          "phase": "midday",
          "placeId": "address.freya",
          "activity": "Eat lunch at home, using bread collected before noon; respect Roska’s midday closure"
        },
        {
          "phase": "afternoon",
          "placeId": "site.archive-school",
          "activity": "Research and prepare safe exercises"
        },
        {
          "phase": "evening",
          "placeId": "address.freya",
          "activity": "A village-heart stroll on the way home, then puzzles"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.freya",
        "activity": "An absorbing puzzle and an intentionally unproductive afternoon"
      },
      "night": {
        "placeId": "address.freya",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "controlled-practice",
        "ward-study"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.freya",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.freya",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.freya",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.freya",
          "activity": "An absorbing puzzle and an intentionally unproductive afternoon"
        },
        {
          "phase": "evening",
          "placeId": "address.freya",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.garrick",
      "name": "Garrick",
      "homeId": "address.garrick",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.garrick",
          "activity": "Breakfast and inspect old equipment"
        },
        {
          "phase": "morning",
          "placeId": "site.watch-training",
          "activity": "Short familiar patrol and optional mentoring; no command duty"
        },
        {
          "phase": "midday",
          "placeId": "site.inn",
          "activity": "Lunch and unhurried conversation"
        },
        {
          "phase": "afternoon",
          "placeId": "address.garrick",
          "activity": "Repair a wooden toy or visit a neighbour by invitation"
        },
        {
          "phase": "evening",
          "placeId": "address.garrick",
          "activity": "Quiet supper and equipment care"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.garrick",
        "activity": "Rest and a small wooden project without a deadline"
      },
      "night": {
        "placeId": "address.garrick",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "toy-repairs",
        "quiet-inn-table"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.garrick",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.garrick",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.garrick",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.garrick",
          "activity": "Rest and a small wooden project without a deadline"
        },
        {
          "phase": "evening",
          "placeId": "address.garrick",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.oren",
      "name": "Halric",
      "homeId": "address.farmhouse",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.farm",
          "activity": "Check livestock with Odel, then breakfast"
        },
        {
          "phase": "morning",
          "placeId": "site.farm",
          "activity": "Field work, seed and supply sales at the farm gate"
        },
        {
          "phase": "midday",
          "placeId": "site.farm",
          "activity": "Lunch and an advice window for growers"
        },
        {
          "phase": "afternoon",
          "placeId": "site.farm",
          "activity": "Crops, fencing and seasonal jobs"
        },
        {
          "phase": "evening",
          "placeId": "address.farmhouse",
          "activity": "Supper with Odel and seed sorting"
        }
      ],
      "restDayAfternoon": {
        "placeId": "site.farm",
        "activity": "Essential crop and animal checks only; sit and observe the fields"
      },
      "night": {
        "placeId": "address.farmhouse",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "grain-and-bread",
        "soil-trial",
        "family-supper"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "site.farm",
          "activity": "Essential animal and crop checks with Odel; no farm-gate sales"
        },
        {
          "phase": "morning",
          "placeId": "address.farmhouse",
          "activity": "Breakfast and a slow morning"
        },
        {
          "phase": "midday",
          "placeId": "address.farmhouse",
          "activity": "Lunch and private seed sorting if enjoyable"
        },
        {
          "phase": "afternoon",
          "placeId": "site.farm",
          "activity": "Essential crop checks and a quiet sit by the fields"
        },
        {
          "phase": "evening",
          "placeId": "address.farmhouse",
          "activity": "Supper with Odel and a small game"
        }
      ]
    },
    {
      "residentId": "villager.hesta",
      "name": "Hesta",
      "homeId": "address.inn-lodging",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.inn",
          "activity": "Breakfast preparation, menus and stores"
        },
        {
          "phase": "morning",
          "placeId": "site.inn",
          "activity": "Kitchen preparation with a proper break before lunch"
        },
        {
          "phase": "midday",
          "placeId": "site.inn",
          "activity": "Lunch service, then her own meal"
        },
        {
          "phase": "afternoon",
          "placeId": "site.inn",
          "activity": "Protected break followed by supper preparation"
        },
        {
          "phase": "evening",
          "placeId": "site.inn",
          "activity": "Supper service; kitchen closes at 20:00, then private lodging"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.inn-lodging",
        "activity": "Time off; no unpaid kitchen cover or surprise catering"
      },
      "night": {
        "placeId": "address.inn-lodging",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "dairy-tasting",
        "meal-not-made-by-hesta"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.inn-lodging",
          "activity": "Breakfast from food prepared ahead; no kitchen shift"
        },
        {
          "phase": "morning",
          "placeId": "address.inn-lodging",
          "activity": "Choose earrings, read or simply sleep longer"
        },
        {
          "phase": "midday",
          "placeId": "address.inn-lodging",
          "activity": "Eat her own lunch without serving customers"
        },
        {
          "phase": "afternoon",
          "placeId": "address.inn-lodging",
          "activity": "Rest and a word game"
        },
        {
          "phase": "evening",
          "placeId": "address.inn-lodging",
          "activity": "A simple private supper; no catering"
        }
      ]
    },
    {
      "residentId": "villager.mirelle",
      "name": "Ivara",
      "homeId": "address.clinic-household",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.clinic",
          "activity": "Garden notes and watering before opening"
        },
        {
          "phase": "morning",
          "placeId": "site.clinic",
          "activity": "Apothecary counter, remedies and orders"
        },
        {
          "phase": "midday",
          "placeId": "site.clinic",
          "activity": "Lunch and agreed stock or patient handover with Ysra"
        },
        {
          "phase": "afternoon",
          "placeId": "site.clinic",
          "activity": "Prepare orders, cultivation and scheduled shared rounds"
        },
        {
          "phase": "evening",
          "placeId": "address.clinic-household",
          "activity": "Supper and one uninterrupted quiet hour; dusk watering first"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.clinic-household",
        "activity": "Read for pleasure after essential plant care"
      },
      "night": {
        "placeId": "address.clinic-household",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "cultivation-trial",
        "controlled-practice",
        "meal-not-made-by-hesta"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "site.clinic",
          "activity": "Brief essential plant and medicine-storage check; shop shut"
        },
        {
          "phase": "morning",
          "placeId": "address.clinic-household",
          "activity": "Breakfast and private reading; no remedies sold"
        },
        {
          "phase": "midday",
          "placeId": "address.clinic-household",
          "activity": "Lunch with Ysra when possible"
        },
        {
          "phase": "afternoon",
          "placeId": "address.clinic-household",
          "activity": "Quiet cultivation notes only if enjoyable; no appointments"
        },
        {
          "phase": "evening",
          "placeId": "address.clinic-household",
          "activity": "Supper and an uninterrupted quiet hour unless urgent care is needed"
        }
      ]
    },
    {
      "residentId": "villager.joren",
      "name": "Joren",
      "homeId": "address.joren",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.mill",
          "activity": "Inspect water and machinery before milling"
        },
        {
          "phase": "morning",
          "placeId": "site.mill",
          "activity": "Grain intake, milling and flour collection"
        },
        {
          "phase": "midday",
          "placeId": "site.mill",
          "activity": "Lunch and measure outgoing flour"
        },
        {
          "phase": "afternoon",
          "placeId": "site.mill",
          "activity": "Grinding and maintenance with machinery stopped for inspection"
        },
        {
          "phase": "evening",
          "placeId": "address.joren",
          "activity": "Cook and sing quietly to himself"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.joren",
        "activity": "Try a new meal; mill closed all day"
      },
      "night": {
        "placeId": "address.joren",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "grain-and-bread",
        "brew-and-grain"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.joren",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.joren",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.joren",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.joren",
          "activity": "Try a new meal; mill closed all day"
        },
        {
          "phase": "evening",
          "placeId": "address.joren",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.kael",
      "name": "Kael",
      "homeId": "address.kael",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.watch-training",
          "activity": "Patrol handover and breakfast"
        },
        {
          "phase": "morning",
          "placeId": "site.watch-training",
          "activity": "Checks, reports and posted captain’s availability"
        },
        {
          "phase": "midday",
          "placeId": "site.watch-training",
          "activity": "Lunch and incident records"
        },
        {
          "phase": "afternoon",
          "placeId": "site.watch-training",
          "activity": "Public training, then handover before leaving"
        },
        {
          "phase": "evening",
          "placeId": "address.kael",
          "activity": "Quiet supper, mend a map and stop reading reports"
        }
      ],
      "restDayAfternoon": {
        "placeId": "site.watch-training",
        "activity": "Short duty check and handover, then off-duty rest"
      },
      "night": {
        "placeId": "address.kael",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "river-safety",
        "controlled-practice"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "site.watch-training",
          "activity": "Necessary safety handover; no public drills or appointments"
        },
        {
          "phase": "morning",
          "placeId": "address.kael",
          "activity": "Breakfast and off-duty time after handover"
        },
        {
          "phase": "midday",
          "placeId": "address.kael",
          "activity": "Private lunch"
        },
        {
          "phase": "afternoon",
          "placeId": "site.watch-training",
          "activity": "Brief necessary duty check and handover, then rest"
        },
        {
          "phase": "evening",
          "placeId": "address.kael",
          "activity": "Quiet supper and map mending only for pleasure"
        }
      ]
    },
    {
      "residentId": "villager.khaeli",
      "name": "Khaeli",
      "homeId": "address.leadership",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.leadership",
          "activity": "Breakfast with Asmo; optional short garden walk"
        },
        {
          "phase": "morning",
          "placeId": "site.hall",
          "activity": "Seated community appointments with breaks"
        },
        {
          "phase": "midday",
          "placeId": "address.leadership",
          "activity": "Lunch and a protected rest"
        },
        {
          "phase": "afternoon",
          "placeId": "site.forest-work",
          "activity": "Short, accessible grove visits and habitat notes; rest afterward"
        },
        {
          "phase": "evening",
          "placeId": "address.leadership",
          "activity": "Shared supper, harp or violin and quiet company"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.leadership",
        "activity": "Shared rest and choosing lullabies with Asmo"
      },
      "night": {
        "placeId": "address.leadership",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "habitat-notes",
        "forest-agreement",
        "music-evening"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.leadership",
          "activity": "Unhurried breakfast with Asmo"
        },
        {
          "phase": "morning",
          "placeId": "address.leadership",
          "activity": "Music, a short optional garden pause and rest; no appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.leadership",
          "activity": "Lunch and protected rest"
        },
        {
          "phase": "afternoon",
          "placeId": "address.leadership",
          "activity": "Rest and choose lullabies with Asmo"
        },
        {
          "phase": "evening",
          "placeId": "address.leadership",
          "activity": "Shared supper and gentle music"
        }
      ]
    },
    {
      "residentId": "villager.korvin",
      "name": "Korvin",
      "homeId": "address.korvin",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.korvin",
          "activity": "Breakfast and review today’s drawings"
        },
        {
          "phase": "morning",
          "placeId": "site.craft-yard",
          "activity": "Project consultations and structural planning"
        },
        {
          "phase": "midday",
          "placeId": "site.craft-yard",
          "activity": "Shared yard lunch; clarify orders and materials"
        },
        {
          "phase": "afternoon",
          "placeId": "site.craft-yard",
          "activity": "Models, drawings and booked inspections recorded at the yard"
        },
        {
          "phase": "evening",
          "placeId": "address.korvin",
          "activity": "Make a model or set the drawings aside for supper"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.korvin",
        "activity": "An unfinished model for pleasure, with no client appointments"
      },
      "night": {
        "placeId": "address.korvin",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "structural-review",
        "paid-repair-budget"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.korvin",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.korvin",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.korvin",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.korvin",
          "activity": "An unfinished model for pleasure, with no client appointments"
        },
        {
          "phase": "evening",
          "placeId": "address.korvin",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.lira",
      "name": "Lira",
      "homeId": "address.lira",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.landing",
          "activity": "Early catch from the landing; return time posted"
        },
        {
          "phase": "morning",
          "placeId": "site.market",
          "activity": "Sell the catch and compare river news"
        },
        {
          "phase": "midday",
          "placeId": "site.landing",
          "activity": "Lunch, map notes and sorting gear"
        },
        {
          "phase": "afternoon",
          "placeId": "site.landing",
          "activity": "Mend nets, care for the boat and plan short surveys"
        },
        {
          "phase": "evening",
          "placeId": "address.lira",
          "activity": "Supper and record a route worth revisiting"
        }
      ],
      "restDayAfternoon": {
        "placeId": "site.landing",
        "activity": "Leisurely riverside time after checking the boat; no fishing quota"
      },
      "night": {
        "placeId": "address.lira",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "river-safety",
        "market-day",
        "music-evening"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.lira",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.lira",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.lira",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "site.landing",
          "activity": "Leisurely riverside time after checking the boat; no fishing quota"
        },
        {
          "phase": "evening",
          "placeId": "address.lira",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.lucien",
      "name": "Lucien",
      "homeId": "address.archive-household",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.archive-household",
          "activity": "Breakfast with the archive household, then notes"
        },
        {
          "phase": "morning",
          "placeId": "site.archive-school",
          "activity": "Archive enquiries and source work"
        },
        {
          "phase": "midday",
          "placeId": "site.archive-school",
          "activity": "Lunch and enthusiastic but bounded discussion"
        },
        {
          "phase": "afternoon",
          "placeId": "site.archive-school",
          "activity": "Translation and records; field visits booked separately"
        },
        {
          "phase": "evening",
          "placeId": "address.archive-household",
          "activity": "Late kettle and translation, respecting Wren’s quiet hours"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.archive-household",
        "activity": "Read something with no scholarly purpose"
      },
      "night": {
        "placeId": "address.archive-household",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "source-debate",
        "ward-study",
        "tool-marks"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.archive-household",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.archive-household",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.archive-household",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.archive-household",
          "activity": "Read something with no scholarly purpose"
        },
        {
          "phase": "evening",
          "placeId": "address.archive-household",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.maelle",
      "name": "Maelle",
      "homeId": "address.maelle",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.shrine",
          "activity": "Open shrine, water and candles"
        },
        {
          "phase": "morning",
          "placeId": "site.shrine",
          "activity": "Welcome visitors and listen without rushing"
        },
        {
          "phase": "midday",
          "placeId": "site.shrine",
          "activity": "Lunch and a quiet pause"
        },
        {
          "phase": "afternoon",
          "placeId": "site.shrine",
          "activity": "Appointments, practical care and shrine upkeep"
        },
        {
          "phase": "evening",
          "placeId": "address.maelle",
          "activity": "Private reading and a game; public duties finished"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.maelle",
        "activity": "Rest and recreational reading; shrine remains open for quiet visits"
      },
      "night": {
        "placeId": "address.maelle",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "controlled-practice",
        "ordinary-games"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.maelle",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.maelle",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.maelle",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.maelle",
          "activity": "Rest and recreational reading; shrine remains open for quiet visits"
        },
        {
          "phase": "evening",
          "placeId": "address.maelle",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.maris",
      "name": "Maris",
      "homeId": "address.maris",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.apiary",
          "activity": "Check water and hive entrances in the cool"
        },
        {
          "phase": "morning",
          "placeId": "site.apiary",
          "activity": "Hive care when weather permits; honey collection window"
        },
        {
          "phase": "midday",
          "placeId": "site.apiary",
          "activity": "Lunch, flower notes and journal"
        },
        {
          "phase": "afternoon",
          "placeId": "site.apiary",
          "activity": "Pack orders and tend forage patches"
        },
        {
          "phase": "evening",
          "placeId": "address.maris",
          "activity": "Brief apiary check at dusk, then supper and reading"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.maris",
        "activity": "Read after essential hive checks; no routine orders"
      },
      "night": {
        "placeId": "address.maris",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "habitat-notes",
        "market-day",
        "honey-and-bread"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "site.apiary",
          "activity": "Check hive water and entrances; no honey sales"
        },
        {
          "phase": "morning",
          "placeId": "address.maris",
          "activity": "Breakfast, reading and time away from orders"
        },
        {
          "phase": "midday",
          "placeId": "address.maris",
          "activity": "Private lunch"
        },
        {
          "phase": "afternoon",
          "placeId": "address.maris",
          "activity": "Read after essential hive checks; no orders"
        },
        {
          "phase": "evening",
          "placeId": "address.maris",
          "activity": "Brief dusk welfare check, then supper and reading"
        }
      ]
    },
    {
      "residentId": "villager.pip",
      "name": "Merrit",
      "homeId": "address.pip",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.mushroom-beds",
          "activity": "Clean tools and inspect cultures"
        },
        {
          "phase": "morning",
          "placeId": "site.mushroom-beds",
          "activity": "Harvest, sell produce and prepare delivery boxes"
        },
        {
          "phase": "midday",
          "placeId": "site.mushroom-beds",
          "activity": "Lunch and label specimens accurately"
        },
        {
          "phase": "afternoon",
          "placeId": "site.mushroom-beds",
          "activity": "Controlled trials and cultivation records"
        },
        {
          "phase": "evening",
          "placeId": "address.pip",
          "activity": "Games, supper and occasional meals without mushrooms"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.pip",
        "activity": "A mushroom-free lunch and an afternoon game after essential checks"
      },
      "night": {
        "placeId": "address.pip",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "cultivation-trial",
        "soil-trial",
        "ordinary-games"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "site.mushroom-beds",
          "activity": "Brief culture health and moisture checks, no produce sales"
        },
        {
          "phase": "morning",
          "placeId": "address.pip",
          "activity": "Breakfast and a morning away from experiments"
        },
        {
          "phase": "midday",
          "placeId": "address.pip",
          "activity": "A deliberately mushroom-free lunch"
        },
        {
          "phase": "afternoon",
          "placeId": "address.pip",
          "activity": "A game or time with a friend"
        },
        {
          "phase": "evening",
          "placeId": "address.pip",
          "activity": "Supper and rest"
        }
      ]
    },
    {
      "residentId": "villager.elowen",
      "name": "Morwen",
      "homeId": "address.elowen",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.cemetery",
          "activity": "Quiet rounds and check paths"
        },
        {
          "phase": "morning",
          "placeId": "site.cemetery",
          "activity": "Gardening, remembrance visits and practical help"
        },
        {
          "phase": "midday",
          "placeId": "site.cemetery",
          "activity": "Lunch, then tea with visitors who want company"
        },
        {
          "phase": "afternoon",
          "placeId": "site.cemetery",
          "activity": "Care for memorials and seasonal planting"
        },
        {
          "phase": "evening",
          "placeId": "address.elowen",
          "activity": "Supper and an ordinary cheerful book"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.elowen",
        "activity": "Protected personal time after a short cemetery check"
      },
      "night": {
        "placeId": "address.elowen",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "flowers-and-remembrance",
        "ordinary-games"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.elowen",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.elowen",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.elowen",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.elowen",
          "activity": "Protected personal time after a short cemetery check"
        },
        {
          "phase": "evening",
          "placeId": "address.elowen",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.nessa",
      "name": "Nessa",
      "homeId": "address.nessa",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.landing",
          "activity": "Early fishing on familiar waters"
        },
        {
          "phase": "morning",
          "placeId": "site.landing",
          "activity": "Sell the catch and secure the boat"
        },
        {
          "phase": "midday",
          "placeId": "site.landing",
          "activity": "Lunch and net repairs"
        },
        {
          "phase": "afternoon",
          "placeId": "address.nessa",
          "activity": "Preserve fish and repair household things"
        },
        {
          "phase": "evening",
          "placeId": "address.nessa",
          "activity": "Weather notes and a quiet cup"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.nessa",
        "activity": "Household mending for herself; no routine catch to deliver"
      },
      "night": {
        "placeId": "address.nessa",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "river-safety",
        "market-day"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.nessa",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.nessa",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.nessa",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.nessa",
          "activity": "Household mending for herself; no routine catch to deliver"
        },
        {
          "phase": "evening",
          "placeId": "address.nessa",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.nils",
      "name": "Nils",
      "homeId": "address.nils",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.nils",
          "activity": "Breakfast and clear yesterday’s clutter"
        },
        {
          "phase": "morning",
          "placeId": "site.tinkerer",
          "activity": "Start oldest repair; predictable customer intake"
        },
        {
          "phase": "midday",
          "placeId": "site.tinkerer",
          "activity": "Lunch and finish a practical repair before experiments"
        },
        {
          "phase": "afternoon",
          "placeId": "site.tinkerer",
          "activity": "Test devices and write understandable instructions"
        },
        {
          "phase": "evening",
          "placeId": "address.nils",
          "activity": "Small clockwork project, then clear the floor"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.nils",
        "activity": "Personal tinkering with no customer queue"
      },
      "night": {
        "placeId": "address.nils",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "repair-exchange",
        "controlled-practice"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.nils",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.nils",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.nils",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.nils",
          "activity": "Personal tinkering with no customer queue"
        },
        {
          "phase": "evening",
          "placeId": "address.nils",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.odel",
      "name": "Odel",
      "homeId": "address.farmhouse",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.farm",
          "activity": "Milking and animal care with Halric"
        },
        {
          "phase": "morning",
          "placeId": "site.farm",
          "activity": "Dairy work, pasture checks and produce collection"
        },
        {
          "phase": "midday",
          "placeId": "site.farm",
          "activity": "Lunch and cheese turning"
        },
        {
          "phase": "afternoon",
          "placeId": "site.farm",
          "activity": "Pasture care, dairy records and second animal check"
        },
        {
          "phase": "evening",
          "placeId": "address.farmhouse",
          "activity": "Supper with Halric, carving or a quietly competitive game"
        }
      ],
      "restDayAfternoon": {
        "placeId": "site.farm",
        "activity": "Essential milking and animal care; sketch the pasture between checks"
      },
      "night": {
        "placeId": "address.farmhouse",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "habitat-notes",
        "dairy-tasting",
        "forest-agreement",
        "family-supper"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "site.farm",
          "activity": "Essential milking and animal care; no produce counter"
        },
        {
          "phase": "morning",
          "placeId": "site.farm",
          "activity": "Secure milk and check animal welfare, then rest"
        },
        {
          "phase": "midday",
          "placeId": "address.farmhouse",
          "activity": "Lunch with Halric"
        },
        {
          "phase": "afternoon",
          "placeId": "site.farm",
          "activity": "Essential animal check and cheese care, with pasture sketching between"
        },
        {
          "phase": "evening",
          "placeId": "address.farmhouse",
          "activity": "Supper with Halric and a small game"
        }
      ]
    },
    {
      "residentId": "villager.orin",
      "name": "Orin",
      "homeId": "address.orin",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.market",
          "activity": "Receive ordinary stock and arrange stall"
        },
        {
          "phase": "morning",
          "placeId": "site.market",
          "activity": "Reliable everyday supplies and trade"
        },
        {
          "phase": "midday",
          "placeId": "site.market",
          "activity": "Lunch followed by a short collection window"
        },
        {
          "phase": "afternoon",
          "placeId": "site.market",
          "activity": "Serve customers, then balance accounts before closing"
        },
        {
          "phase": "evening",
          "placeId": "address.orin",
          "activity": "Supper; stop calculating the value of every gift"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.orin",
        "activity": "An afternoon with no business callers"
      },
      "night": {
        "placeId": "address.orin",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "market-day"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.orin",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.orin",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.orin",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.orin",
          "activity": "An afternoon with no business callers"
        },
        {
          "phase": "evening",
          "placeId": "address.orin",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.riven",
      "name": "Riven",
      "homeId": "address.riven",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.riven",
          "activity": "Late breakfast and tune the lute"
        },
        {
          "phase": "morning",
          "placeId": "site.green",
          "activity": "Practice and work on an unfinished song"
        },
        {
          "phase": "midday",
          "placeId": "site.inn",
          "activity": "Lunch and listen without turning everything into material"
        },
        {
          "phase": "afternoon",
          "placeId": "site.green",
          "activity": "Rehearse or take a listening walk"
        },
        {
          "phase": "evening",
          "placeId": "site.inn",
          "activity": "A short informal set on Days 1 and 3; home early on Days 2 and 5"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.riven",
        "activity": "An intentionally ordinary day: laundry, a postcard and no performance"
      },
      "night": {
        "placeId": "address.riven",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "books-without-performance",
        "music-evening"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.riven",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.riven",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.riven",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.riven",
          "activity": "An intentionally ordinary day: laundry, a postcard and no performance"
        },
        {
          "phase": "evening",
          "placeId": "address.riven",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.mira",
      "name": "Roska",
      "homeId": "address.mira",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.bakery",
          "activity": "Pre-dawn baking from 04:30; eat breakfast between batches"
        },
        {
          "phase": "morning",
          "placeId": "site.bakery",
          "activity": "Open bread counter and fill ordinary orders"
        },
        {
          "phase": "midday",
          "placeId": "address.mira",
          "activity": "Protected midday rest; counter closed"
        },
        {
          "phase": "afternoon",
          "placeId": "site.bakery",
          "activity": "Limited prepaid collections from 14:00–16:00, then close"
        },
        {
          "phase": "evening",
          "placeId": "address.mira",
          "activity": "Bitter tea and supper; recipes only by choice; bed by 21:00"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.mira",
        "activity": "Rest with bread baked on Bloomday; bakery closed all day"
      },
      "night": {
        "placeId": "address.mira",
        "activity": "Sleep about 21:00–04:30."
      },
      "weekly": [
        "grain-and-bread",
        "honey-and-bread"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.mira",
          "activity": "Sleep past her usual baking start; no pre-dawn batch"
        },
        {
          "phase": "morning",
          "placeId": "address.mira",
          "activity": "Bitter tea and breakfast from yesterday’s bread"
        },
        {
          "phase": "midday",
          "placeId": "address.mira",
          "activity": "An unhurried lunch and rest"
        },
        {
          "phase": "afternoon",
          "placeId": "address.mira",
          "activity": "Read or try a recipe only for pleasure; bakery shut"
        },
        {
          "phase": "evening",
          "placeId": "address.mira",
          "activity": "Quiet supper and an early night if she wants"
        }
      ]
    },
    {
      "residentId": "villager.selka",
      "name": "Sabine",
      "homeId": "address.selka",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.selka",
          "activity": "Breakfast and choose fabrics"
        },
        {
          "phase": "morning",
          "placeId": "site.tailor",
          "activity": "Fittings, measurements and repair intake"
        },
        {
          "phase": "midday",
          "placeId": "site.tailor",
          "activity": "Lunch away from stitching, then prepare orders"
        },
        {
          "phase": "afternoon",
          "placeId": "site.tailor",
          "activity": "Focused sewing; close with an afternoon walk"
        },
        {
          "phase": "evening",
          "placeId": "address.selka",
          "activity": "Personal clothes or patchwork, never an automatic second shift"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.selka",
        "activity": "A bold outfit sketch or a day without a needle"
      },
      "night": {
        "placeId": "address.selka",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "colour-and-construction",
        "music-evening"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.selka",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.selka",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.selka",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.selka",
          "activity": "A bold outfit sketch or a day without a needle"
        },
        {
          "phase": "evening",
          "placeId": "address.selka",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.seraphine",
      "name": "Seraphine",
      "homeId": "address.seraphine",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.seraphine",
          "activity": "Breakfast and unpack only after tea"
        },
        {
          "phase": "morning",
          "placeId": "site.market",
          "activity": "Rare-goods stall and provenance conversations"
        },
        {
          "phase": "midday",
          "placeId": "site.market",
          "activity": "Lunch and arrange collections"
        },
        {
          "phase": "afternoon",
          "placeId": "site.market",
          "activity": "Trade, display cloth and arrange future travel"
        },
        {
          "phase": "evening",
          "placeId": "address.seraphine",
          "activity": "Tea and private correspondence; a real homecoming ritual"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.seraphine",
        "activity": "Unpack personal keepsakes, with no market performance"
      },
      "night": {
        "placeId": "address.seraphine",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "market-day",
        "long-route-outbound",
        "music-evening"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.seraphine",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.seraphine",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.seraphine",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.seraphine",
          "activity": "Unpack personal keepsakes, with no market performance"
        },
        {
          "phase": "evening",
          "placeId": "address.seraphine",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.tamsin",
      "name": "Tamsin",
      "homeId": "address.tamsin",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.tamsin",
          "activity": "Breakfast above the shop and prepare bench"
        },
        {
          "phase": "morning",
          "placeId": "site.leatherworker",
          "activity": "Fittings, repairs and intake"
        },
        {
          "phase": "midday",
          "placeId": "site.leatherworker",
          "activity": "Lunch and review fit notes"
        },
        {
          "phase": "afternoon",
          "placeId": "site.leatherworker",
          "activity": "Bench work, safe buckles and sole repairs"
        },
        {
          "phase": "evening",
          "placeId": "address.tamsin",
          "activity": "Sketch a festival shoe or share a meal after closing"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.tamsin",
        "activity": "Rest, colour experiments and wearing comfortable shoes"
      },
      "night": {
        "placeId": "address.tamsin",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "colour-and-construction",
        "harness-feedback",
        "music-evening"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.tamsin",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.tamsin",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.tamsin",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.tamsin",
          "activity": "Rest, colour experiments and wearing comfortable shoes"
        },
        {
          "phase": "evening",
          "placeId": "address.tamsin",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.thorne",
      "name": "Thorne",
      "homeId": "address.thorne",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.forest-work",
          "activity": "Dawn boundary walk and track notes"
        },
        {
          "phase": "morning",
          "placeId": "site.forest-work",
          "activity": "Foraging and practical work near the known grove meeting point"
        },
        {
          "phase": "midday",
          "placeId": "site.forest-work",
          "activity": "Lunch and check equipment"
        },
        {
          "phase": "afternoon",
          "placeId": "site.watch-training",
          "activity": "Accessible return window, archery and practical lessons"
        },
        {
          "phase": "evening",
          "placeId": "address.thorne",
          "activity": "Early supper and quiet company only by invitation"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.thorne",
        "activity": "Rest after a short familiar boundary check"
      },
      "night": {
        "placeId": "address.thorne",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "controlled-practice"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.thorne",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.thorne",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.thorne",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.thorne",
          "activity": "Rest after a short familiar boundary check"
        },
        {
          "phase": "evening",
          "placeId": "address.thorne",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.torren",
      "name": "Torren",
      "homeId": "address.carpenters-household",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.forest-work",
          "activity": "Early woodlot and equipment inspection"
        },
        {
          "phase": "morning",
          "placeId": "site.forest-work",
          "activity": "Managed cutting, coppice and scheduled charcoal work"
        },
        {
          "phase": "midday",
          "placeId": "site.craft-yard",
          "activity": "Bring timber or fuel only after leaving the burn safe"
        },
        {
          "phase": "afternoon",
          "placeId": "site.forest-work",
          "activity": "Woodlot records, replanting and safe closure of work"
        },
        {
          "phase": "evening",
          "placeId": "address.carpenters-household",
          "activity": "Wash, cook with Dain and embroider a simple border"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.carpenters-household",
        "activity": "Careful cooking and household time; no unattended active burn"
      },
      "night": {
        "placeId": "address.carpenters-household",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "forest-agreement",
        "home-cooking"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.carpenters-household",
          "activity": "Breakfast; no burn started that would require a Hearthday work shift"
        },
        {
          "phase": "morning",
          "placeId": "address.carpenters-household",
          "activity": "Household chores and a geometric embroidery border"
        },
        {
          "phase": "midday",
          "placeId": "address.carpenters-household",
          "activity": "Private lunch"
        },
        {
          "phase": "afternoon",
          "placeId": "address.carpenters-household",
          "activity": "Careful cooking and household time; any unavoidable live burn takes safety priority"
        },
        {
          "phase": "evening",
          "placeId": "address.carpenters-household",
          "activity": "Cook supper with Dain"
        }
      ]
    },
    {
      "residentId": "villager.tovin",
      "name": "Tovin",
      "homeId": "address.tovin",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.brewery",
          "activity": "Check fermentations and start planned brew"
        },
        {
          "phase": "morning",
          "placeId": "site.brewery",
          "activity": "Brewing, stock and collection orders"
        },
        {
          "phase": "midday",
          "placeId": "site.brewery",
          "activity": "Lunch and record the batch honestly"
        },
        {
          "phase": "afternoon",
          "placeId": "site.brewery",
          "activity": "Clean equipment, prepare deliveries and close counter"
        },
        {
          "phase": "evening",
          "placeId": "site.inn",
          "activity": "Short social visit on ordinary workdays; home afterward for quiet tea"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.tovin",
        "activity": "Rest after essential fermentation checks"
      },
      "night": {
        "placeId": "address.tovin",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "brew-and-grain"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "site.brewery",
          "activity": "Essential fermentation and safety checks; no collections or sales"
        },
        {
          "phase": "morning",
          "placeId": "address.tovin",
          "activity": "Breakfast and quiet time"
        },
        {
          "phase": "midday",
          "placeId": "address.tovin",
          "activity": "An unhurried lunch"
        },
        {
          "phase": "afternoon",
          "placeId": "address.tovin",
          "activity": "Rest after any necessary fermentation check"
        },
        {
          "phase": "evening",
          "placeId": "address.tovin",
          "activity": "Private supper and quiet tea; inn closed"
        }
      ]
    },
    {
      "residentId": "villager.vela",
      "name": "Vela",
      "homeId": "address.vela",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "site.craft-yard",
          "activity": "Prepare stone and tools in the cool"
        },
        {
          "phase": "morning",
          "placeId": "site.craft-yard",
          "activity": "Stonework and a predictable consultation hour"
        },
        {
          "phase": "midday",
          "placeId": "site.craft-yard",
          "activity": "Shared lunch and review restoration details"
        },
        {
          "phase": "afternoon",
          "placeId": "site.craft-yard",
          "activity": "Measured restoration or drawings; inspections booked from here"
        },
        {
          "phase": "evening",
          "placeId": "address.vela",
          "activity": "Draw by the hearth and enjoy slow conversation"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.vela",
        "activity": "A soft blanket, personal drawing and no stone orders"
      },
      "night": {
        "placeId": "address.vela",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "structural-review",
        "controlled-practice",
        "tool-marks"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.vela",
          "activity": "Sleep, breakfast and a slow start; no work opening"
        },
        {
          "phase": "morning",
          "placeId": "address.vela",
          "activity": "Private household time or a hobby; no sales, collections or appointments"
        },
        {
          "phase": "midday",
          "placeId": "address.vela",
          "activity": "Lunch from provisions bought before Hearthday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.vela",
          "activity": "A soft blanket, personal drawing and no stone orders"
        },
        {
          "phase": "evening",
          "placeId": "address.vela",
          "activity": "Private supper, reading or quiet company; workplaces remain closed"
        }
      ]
    },
    {
      "residentId": "villager.nyx",
      "name": "Vesper",
      "homeId": "address.nyx",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.nyx",
          "activity": "Sleep later after observation; unhurried breakfast"
        },
        {
          "phase": "morning",
          "placeId": "address.nyx",
          "activity": "Late morning notes and consultations by appointment"
        },
        {
          "phase": "midday",
          "placeId": "site.market",
          "activity": "Ordinary errands, lunch and an unexpected pastry"
        },
        {
          "phase": "afternoon",
          "placeId": "address.nyx",
          "activity": "Compare observations and rest before evening work"
        },
        {
          "phase": "evening",
          "placeId": "site.stargazing",
          "activity": "Observe at the ridge; return home about 22:00"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.nyx",
        "activity": "An afternoon free of consultations and predictions"
      },
      "night": {
        "placeId": "address.nyx",
        "activity": "Sleep about 23:00–08:00; no dawn appointments."
      },
      "weekly": [
        "source-debate"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.nyx",
          "activity": "Sleep later after observation"
        },
        {
          "phase": "morning",
          "placeId": "address.nyx",
          "activity": "Unhurried breakfast; no consultations"
        },
        {
          "phase": "midday",
          "placeId": "address.nyx",
          "activity": "Lunch from supplies bought on Bloomday"
        },
        {
          "phase": "afternoon",
          "placeId": "address.nyx",
          "activity": "Rest and ordinary surprises, without predictions on demand"
        },
        {
          "phase": "evening",
          "placeId": "address.nyx",
          "activity": "Quiet evening; stargazing only for pleasure and if safe"
        }
      ]
    },
    {
      "residentId": "villager.wren",
      "name": "Wren",
      "homeId": "address.archive-household",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.archive-household",
          "activity": "Breakfast with Elian and walk together"
        },
        {
          "phase": "morning",
          "placeId": "site.archive-school",
          "activity": "Morning lessons on Days 1–4"
        },
        {
          "phase": "midday",
          "placeId": "site.archive-school",
          "activity": "Lunch and agreed reading supervision with Edda on Days 1–4"
        },
        {
          "phase": "afternoon",
          "placeId": "site.archive-school",
          "activity": "Projects and play with Elian; visits only with an agreed adult"
        },
        {
          "phase": "evening",
          "placeId": "address.archive-household",
          "activity": "Family supper, paper creatures and reading; bed at 20:00"
        }
      ],
      "restDayAfternoon": {
        "placeId": "site.green",
        "activity": "Run and fold paper creatures with Elian"
      },
      "night": {
        "placeId": "address.archive-household",
        "activity": "Sleep from 20:00 with Elian at home."
      },
      "weekly": [
        "green-outing"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.archive-household",
          "activity": "Breakfast with Elian without a school bell"
        },
        {
          "phase": "morning",
          "placeId": "address.archive-household",
          "activity": "Paper models and mapmaking with Elian"
        },
        {
          "phase": "midday",
          "placeId": "site.green",
          "activity": "Family picnic with Elian, who remains responsible for supervision"
        },
        {
          "phase": "afternoon",
          "placeId": "site.green",
          "activity": "Running games and paper creatures with Elian"
        },
        {
          "phase": "evening",
          "placeId": "address.archive-household",
          "activity": "Family supper and reading; bed at 20:00"
        }
      ]
    },
    {
      "residentId": "villager.ysra",
      "name": "Ysra",
      "homeId": "address.clinic-household",
      "baseline": [
        {
          "phase": "dawn",
          "placeId": "address.clinic-household",
          "activity": "Breakfast and review the clinic list"
        },
        {
          "phase": "morning",
          "placeId": "site.clinic",
          "activity": "Appointments and walk-in assessment"
        },
        {
          "phase": "midday",
          "placeId": "site.clinic",
          "activity": "Lunch and stock handover with Ivara"
        },
        {
          "phase": "afternoon",
          "placeId": "site.clinic",
          "activity": "Booked house calls; a notice gives return time and contact arrangements"
        },
        {
          "phase": "evening",
          "placeId": "address.clinic-household",
          "activity": "Off-duty supper, reading or a short river walk"
        }
      ],
      "restDayAfternoon": {
        "placeId": "address.clinic-household",
        "activity": "Rest after a short clinic session; urgent contact remains available"
      },
      "night": {
        "placeId": "address.clinic-household",
        "activity": "At home overnight; private time and sleep."
      },
      "weekly": [
        "meal-not-made-by-hesta"
      ],
      "hearthday": [
        {
          "phase": "dawn",
          "placeId": "address.clinic-household",
          "activity": "Breakfast; clear urgent-contact arrangement"
        },
        {
          "phase": "morning",
          "placeId": "address.clinic-household",
          "activity": "Off duty, contactable for urgent medical needs; no routine clinic session"
        },
        {
          "phase": "midday",
          "placeId": "address.clinic-household",
          "activity": "Lunch and rest"
        },
        {
          "phase": "afternoon",
          "placeId": "address.clinic-household",
          "activity": "Read or take a short walk; urgent care overrides plans"
        },
        {
          "phase": "evening",
          "placeId": "address.clinic-household",
          "activity": "Private supper and a deliberately terrible card trick"
        }
      ]
    }
  ],
  "events": [
    {
      "id": "repair-exchange",
      "day": 1,
      "phase": "afternoon",
      "placeId": "site.forge",
      "participants": [
        "villager.bram",
        "villager.solan",
        "villager.nils"
      ],
      "activity": "A bounded repair exchange: handles, fittings and finishing one overdue device. Shops post this location; collections resume next morning."
    },
    {
      "id": "grain-and-bread",
      "day": 1,
      "phase": "afternoon",
      "placeId": "site.mill",
      "participants": [
        "villager.joren",
        "villager.oren",
        "villager.mira"
      ],
      "activity": "Compare flour blends and reserve grain. Roska has no afternoon collections today and keeps her midday rest."
    },
    {
      "id": "flowers-and-remembrance",
      "day": 1,
      "phase": "afternoon",
      "placeId": "site.cemetery",
      "participants": [
        "villager.lys",
        "villager.elowen"
      ],
      "activity": "Choose seasonal memorial flowers and discuss the people behind the arrangements."
    },
    {
      "id": "habitat-notes",
      "day": 1,
      "phase": "afternoon",
      "placeId": "site.apiary",
      "participants": [
        "villager.khaeli",
        "villager.maris",
        "villager.odel"
      ],
      "activity": "A short seated flowering-and-pasture discussion; Odel returns for his late animal check and Khaeli rests afterward."
    },
    {
      "id": "river-safety",
      "day": 1,
      "phase": "midday",
      "placeId": "site.landing",
      "participants": [
        "villager.kael",
        "villager.lira",
        "villager.nessa"
      ],
      "activity": "Compare river conditions over lunch; identify hazards without turning it into a long formal meeting."
    },
    {
      "id": "colour-and-construction",
      "day": 1,
      "phase": "afternoon",
      "placeId": "site.tailor",
      "participants": [
        "villager.selka",
        "villager.tamsin"
      ],
      "activity": "Discuss a cloth-and-leather commission and test a bold colour combination. Leatherworker counter closed for this booked visit."
    },
    {
      "id": "market-day",
      "day": 2,
      "phase": "morning",
      "placeId": "site.market",
      "participants": [
        "villager.orin",
        "villager.seraphine",
        "villager.lira",
        "villager.nessa",
        "villager.lys",
        "villager.maris"
      ],
      "activity": "The larger weekly market: ordinary supplies, rare goods, fish, flowers and honey. Their usual counters post this temporary selling location."
    },
    {
      "id": "dairy-tasting",
      "day": 2,
      "phase": "afternoon",
      "placeId": "site.inn",
      "participants": [
        "villager.hesta",
        "villager.odel"
      ],
      "activity": "A short tasting of the next cheese batch before supper preparation; Odel returns for animal care."
    },
    {
      "id": "cultivation-trial",
      "day": 2,
      "phase": "afternoon",
      "placeId": "site.clinic",
      "participants": [
        "villager.mirelle",
        "villager.pip"
      ],
      "activity": "Compare a labelled cultivation trial and agree credit and next steps. Apothecary order collection stays available."
    },
    {
      "id": "source-debate",
      "day": 2,
      "phase": "afternoon",
      "placeId": "site.archive-school",
      "participants": [
        "villager.edda",
        "villager.lucien",
        "villager.nyx"
      ],
      "activity": "Compare a record, an observation and a remembered story; leave room for uncertainty. Edda remains at the library desk."
    },
    {
      "id": "toy-repairs",
      "day": 2,
      "phase": "afternoon",
      "placeId": "site.craft-yard",
      "participants": [
        "villager.solan",
        "villager.garrick"
      ],
      "activity": "Dain teaches a toy joint while Garrick finishes a wooden boat; a quiet mentoring visit, not another watch shift."
    },
    {
      "id": "harness-feedback",
      "day": 2,
      "phase": "afternoon",
      "placeId": "site.stables",
      "participants": [
        "villager.fen",
        "villager.tamsin",
        "villager.evren"
      ],
      "activity": "A short harness fitting and route-gear feedback session; Fen retains animal care and Evren his collection window."
    },
    {
      "id": "quiet-inn-table",
      "day": 2,
      "phase": "evening",
      "placeId": "site.inn",
      "participants": [
        "villager.agnes",
        "villager.garrick"
      ],
      "activity": "A quiet shared cup between arrivals; Agnes remains the inn host. Both leave at the 20:00 close."
    },
    {
      "id": "structural-review",
      "day": 3,
      "phase": "morning",
      "placeId": "site.craft-yard",
      "participants": [
        "villager.korvin",
        "villager.vela",
        "villager.asmo"
      ],
      "activity": "Review one real repair, access and materials. Hall listening hours move to the yard today; ordinary craft enquiries still fit around it."
    },
    {
      "id": "controlled-practice",
      "day": 3,
      "phase": "afternoon",
      "placeId": "site.watch-training",
      "participants": [
        "villager.kael",
        "villager.vela",
        "villager.freya",
        "villager.bram",
        "villager.thorne",
        "villager.nils",
        "villager.maelle",
        "villager.mirelle"
      ],
      "activity": "Optional weekly practice for the eight initial companions, not an automatic excursion. Scheduled service collections close for this window; Ysra remains available at the clinic."
    },
    {
      "id": "long-route-outbound",
      "day": 3,
      "phase": "dawn",
      "placeId": "site.stables",
      "participants": [
        "villager.evren",
        "villager.seraphine"
      ],
      "activity": "Load and depart together after Fen checks the animal. Their Day 3 morning, midday and afternoon are off-village; return before evening only if the route permits."
    },
    {
      "id": "forest-agreement",
      "day": 3,
      "phase": "morning",
      "placeId": "site.forest-work",
      "participants": [
        "villager.torren",
        "villager.khaeli",
        "villager.odel"
      ],
      "activity": "A short accessible grove meeting about coppice and grazing boundaries. Odel completes morning milking first; no active charcoal burn during this visit."
    },
    {
      "id": "books-without-performance",
      "day": 3,
      "phase": "afternoon",
      "placeId": "site.archive-school",
      "participants": [
        "villager.edda",
        "villager.riven"
      ],
      "activity": "Exchange an unfinished story in private; Riven does not perform it without permission."
    },
    {
      "id": "green-outing",
      "day": 3,
      "phase": "afternoon",
      "placeId": "site.green",
      "participants": [
        "villager.elian",
        "villager.wren"
      ],
      "activity": "An afternoon of running games and drawing landmarks together; Elian remains responsible for supervision."
    },
    {
      "id": "brew-and-grain",
      "day": 3,
      "phase": "midday",
      "placeId": "site.brewery",
      "participants": [
        "villager.tovin",
        "villager.joren"
      ],
      "activity": "Lunch and compare grain choices for a small trial brew. Mill collections pause for the posted lunch break."
    },
    {
      "id": "soil-trial",
      "day": 3,
      "phase": "afternoon",
      "placeId": "site.farm",
      "participants": [
        "villager.oren",
        "villager.pip"
      ],
      "activity": "Check a small mushroom-compost trial against an ordinary bed, record the result and share credit."
    },
    {
      "id": "music-evening",
      "day": 4,
      "phase": "evening",
      "placeId": "site.hall",
      "participants": [
        "villager.asmo",
        "villager.khaeli",
        "villager.riven",
        "villager.tamsin",
        "villager.evren",
        "villager.seraphine",
        "villager.lira",
        "villager.selka"
      ],
      "activity": "A small optional music evening at the hall: existing piano, harp or violin, lute and space to dance. Light refreshments only; finish at 20:00. If travel is delayed Evren and Seraphine miss it."
    },
    {
      "id": "honey-and-bread",
      "day": 4,
      "phase": "afternoon",
      "placeId": "site.bakery",
      "participants": [
        "villager.mira",
        "villager.maris"
      ],
      "activity": "Test a tiny honey batch during Roska’s 14:00–16:00 collection window, then share tea without inventing extra orders."
    },
    {
      "id": "ordinary-games",
      "day": 4,
      "phase": "afternoon",
      "placeId": "site.inn",
      "participants": [
        "villager.elowen",
        "villager.pip",
        "villager.maelle"
      ],
      "activity": "A protected afternoon board game; no grief counselling or work meeting unless they explicitly choose it."
    },
    {
      "id": "meal-not-made-by-hesta",
      "day": 4,
      "phase": "evening",
      "placeId": "address.clinic-household",
      "participants": [
        "villager.hesta",
        "villager.ysra",
        "villager.mirelle"
      ],
      "activity": "Ysra and Ivara host Hesta for supper and a deliberately terrible card trick. Inn supper is closed today; Agnes handles rooms and cold drinks only, advertised in advance."
    },
    {
      "id": "ward-study",
      "day": 4,
      "phase": "afternoon",
      "placeId": "site.archive-school",
      "participants": [
        "villager.freya",
        "villager.lucien"
      ],
      "activity": "Discuss a safe ward diagram and a disputed source; no live spell test among the books."
    },
    {
      "id": "tool-marks",
      "day": 4,
      "phase": "morning",
      "placeId": "site.craft-yard",
      "participants": [
        "villager.lucien",
        "villager.vela"
      ],
      "activity": "Examine a carved stone and distinguish tool marks from writing. Archive enquiries have Edda’s usual library desk."
    },
    {
      "id": "paid-repair-budget",
      "day": 4,
      "phase": "afternoon",
      "placeId": "site.hall",
      "participants": [
        "villager.asmo",
        "villager.korvin"
      ],
      "activity": "Finish a bounded repair budget; stop in time for supper and music."
    },
    {
      "id": "home-cooking",
      "day": 5,
      "phase": "evening",
      "placeId": "address.carpenters-household",
      "participants": [
        "villager.solan",
        "villager.torren"
      ],
      "activity": "Cook an unhurried household supper together, with no customer appointments."
    },
    {
      "id": "family-supper",
      "day": 5,
      "phase": "evening",
      "placeId": "address.farmhouse",
      "participants": [
        "villager.oren",
        "villager.odel"
      ],
      "activity": "Share supper and a small game; Halric cooks after Odel’s final animal check."
    }
  ],
  "hearthdayCalendar": {
    "assignmentKey": "weekOfYear",
    "weeksPerYear": 24,
    "weeksPerSeason": 6,
    "assignments": [
      {
        "weekOfYear": 1,
        "occasionId": "spring-blossoms",
        "season": "Spring",
        "day": 5
      },
      {
        "weekOfYear": 2,
        "occasionId": "spring-paper",
        "season": "Spring",
        "day": 10
      },
      {
        "weekOfYear": 3,
        "occasionId": "spring-seeds",
        "season": "Spring",
        "day": 15
      },
      {
        "weekOfYear": 4,
        "occasionId": "spring-river",
        "season": "Spring",
        "day": 20
      },
      {
        "weekOfYear": 5,
        "occasionId": "spring-doorstep",
        "season": "Spring",
        "day": 25
      },
      {
        "weekOfYear": 6,
        "occasionId": "spring-lanterns",
        "season": "Spring",
        "day": 30
      },
      {
        "weekOfYear": 7,
        "occasionId": "summer-colours",
        "season": "Summer",
        "day": 5
      },
      {
        "weekOfYear": 8,
        "occasionId": "summer-games",
        "season": "Summer",
        "day": 10
      },
      {
        "weekOfYear": 9,
        "occasionId": "summer-shade",
        "season": "Summer",
        "day": 15
      },
      {
        "weekOfYear": 10,
        "occasionId": "summer-music",
        "season": "Summer",
        "day": 20
      },
      {
        "weekOfYear": 11,
        "occasionId": "summer-sketches",
        "season": "Summer",
        "day": 25
      },
      {
        "weekOfYear": 12,
        "occasionId": "summer-riverlights",
        "season": "Summer",
        "day": 30
      },
      {
        "weekOfYear": 13,
        "occasionId": "autumn-table",
        "season": "Autumn",
        "day": 5
      },
      {
        "weekOfYear": 14,
        "occasionId": "autumn-mending",
        "season": "Autumn",
        "day": 10
      },
      {
        "weekOfYear": 15,
        "occasionId": "autumn-kitchen",
        "season": "Autumn",
        "day": 15
      },
      {
        "weekOfYear": 16,
        "occasionId": "autumn-memories",
        "season": "Autumn",
        "day": 20
      },
      {
        "weekOfYear": 17,
        "occasionId": "autumn-warmth",
        "season": "Autumn",
        "day": 25
      },
      {
        "weekOfYear": 18,
        "occasionId": "autumn-lasttable",
        "season": "Autumn",
        "day": 30
      },
      {
        "weekOfYear": 19,
        "occasionId": "winter-stories",
        "season": "Winter",
        "day": 5
      },
      {
        "weekOfYear": 20,
        "occasionId": "winter-cards",
        "season": "Winter",
        "day": 10
      },
      {
        "weekOfYear": 21,
        "occasionId": "winter-puzzles",
        "season": "Winter",
        "day": 15
      },
      {
        "weekOfYear": 22,
        "occasionId": "winter-quiet",
        "season": "Winter",
        "day": 20
      },
      {
        "weekOfYear": 23,
        "occasionId": "winter-letters",
        "season": "Winter",
        "day": 25
      },
      {
        "weekOfYear": 24,
        "occasionId": "winter-longnight",
        "season": "Winter",
        "day": 30
      }
    ],
    "status": "Complete proposed annual allocation: 24 unique Hearthdays across four 30-day seasons.",
    "fallback": "Personal Hearthday routines; shops remain closed even when no gathering is assigned.",
    "selection": "Select the entry matching the current week-of-year. Participation is optional; declining restores the personal Hearthday.",
    "occasions": [
      {
        "id": "spring-blossoms",
        "season": "Spring",
        "seasonPosition": "Early",
        "title": "First-blossom picnic",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.green",
        "participants": [
          "villager.lys",
          "villager.maris",
          "villager.khaeli",
          "villager.asmo"
        ],
        "activity": "Bring food prepared at home, notice the first flowers and share an unhurried picnic. Khaeli can sit or skip the outing.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel outdoor gatherings in unsafe weather; participants keep their personal Hearthday. Do not assume an unplanned indoor venue has room.",
        "seasonDay": 5,
        "dayOfYear": 5,
        "weekOfSeason": 1,
        "weekOfYear": 1,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "spring-paper",
        "season": "Spring",
        "seasonPosition": "Middle",
        "title": "Paper creatures and village maps",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.archive-school",
        "participants": [
          "villager.elian",
          "villager.wren",
          "villager.edda",
          "villager.lucien"
        ],
        "activity": "Voluntary paper creatures and playful maps, with Elian supervising Wren. Library lending and clerk services stay closed.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel outdoor gatherings in unsafe weather; participants keep their personal Hearthday. Do not assume an unplanned indoor venue has room.",
        "seasonDay": 10,
        "dayOfYear": 10,
        "weekOfSeason": 2,
        "weekOfYear": 2,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "spring-seeds",
        "season": "Spring",
        "title": "Seeds and stories",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.green",
        "participants": [
          "villager.oren",
          "villager.pip",
          "villager.mirelle",
          "villager.odel"
        ],
        "activity": "Compare last year’s growing mishaps and share stories; no seed sales or order collection.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel unsafe outdoor gatherings; personal Hearthday routines remain available. Do not assume a new indoor venue.",
        "seasonDay": 15,
        "dayOfYear": 15,
        "weekOfSeason": 3,
        "weekOfYear": 3,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "spring-river",
        "season": "Spring",
        "seasonPosition": "Late",
        "title": "River stories",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.landing",
        "participants": [
          "villager.lira",
          "villager.nessa",
          "villager.seraphine",
          "villager.riven"
        ],
        "activity": "Share memories of the river from a safe bank; no fishing expedition, ferry service or trade.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel outdoor gatherings in unsafe weather; participants keep their personal Hearthday. Do not assume an unplanned indoor venue has room.",
        "seasonDay": 20,
        "dayOfYear": 20,
        "weekOfSeason": 4,
        "weekOfYear": 4,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "spring-doorstep",
        "season": "Spring",
        "title": "A doorstep Hearthday",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.green",
        "participants": [],
        "activity": "No organised event. Private invitations, household meals and short doorstep chats mark the week.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel unsafe outdoor gatherings; personal Hearthday routines remain available. Do not assume a new indoor venue.",
        "seasonDay": 25,
        "dayOfYear": 25,
        "weekOfSeason": 5,
        "weekOfYear": 5,
        "scale": "quiet-week",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "spring-lanterns",
        "season": "Spring",
        "title": "Flowers & Lanterns",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.green",
        "participants": [
          "villager.lys",
          "villager.asmo",
          "villager.khaeli",
          "villager.riven",
          "villager.elian",
          "villager.wren"
        ],
        "activity": "A larger but optional farewell to spring: flowers and an early lantern gathering, with music before dusk. No stalls or paid services. Elian accompanies Wren and takes her home before 20:00.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel unsafe outdoor gatherings; personal Hearthday routines remain available. Do not assume a new indoor venue.",
        "seasonDay": 30,
        "dayOfYear": 30,
        "weekOfSeason": 6,
        "weekOfYear": 6,
        "scale": "seasonal-festival",
        "window": "15:00–19:00, with breaks and early departures",
        "phases": [
          "afternoon",
          "evening"
        ]
      },
      {
        "id": "summer-colours",
        "season": "Summer",
        "seasonPosition": "Early",
        "title": "Colour walk",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.green",
        "participants": [
          "villager.lys",
          "villager.selka",
          "villager.tamsin"
        ],
        "activity": "An easy walk to notice colours and clothes without taking commissions.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel outdoor gatherings in unsafe weather; participants keep their personal Hearthday. Do not assume an unplanned indoor venue has room.",
        "seasonDay": 5,
        "dayOfYear": 35,
        "weekOfSeason": 1,
        "weekOfYear": 7,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "summer-games",
        "season": "Summer",
        "seasonPosition": "Middle",
        "title": "Games under the trees",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.green",
        "participants": [
          "villager.elowen",
          "villager.pip",
          "villager.maelle",
          "villager.thorne",
          "villager.garrick"
        ],
        "activity": "Bring a familiar board game and a picnic. Quiet company counts as participation; nobody is asked to perform their profession.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel outdoor gatherings in unsafe weather; participants keep their personal Hearthday. Do not assume an unplanned indoor venue has room.",
        "seasonDay": 10,
        "dayOfYear": 40,
        "weekOfSeason": 2,
        "weekOfYear": 8,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "summer-shade",
        "season": "Summer",
        "title": "A day in the shade",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.green",
        "participants": [],
        "activity": "No organised gathering. Rest, reading and household meals; essential animal water checks still happen.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel unsafe outdoor gatherings; personal Hearthday routines remain available. Do not assume a new indoor venue.",
        "seasonDay": 15,
        "dayOfYear": 45,
        "weekOfSeason": 3,
        "weekOfYear": 9,
        "scale": "quiet-week",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "summer-music",
        "season": "Summer",
        "seasonPosition": "Late",
        "title": "A little music for its own sake",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.hall",
        "participants": [
          "villager.asmo",
          "villager.khaeli",
          "villager.riven",
          "villager.evren",
          "villager.tamsin"
        ],
        "activity": "Piano, harp or violin, lute and optional dancing; no public office, tickets, catering or expected performance from tired residents.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel outdoor gatherings in unsafe weather; participants keep their personal Hearthday. Do not assume an unplanned indoor venue has room.",
        "seasonDay": 20,
        "dayOfYear": 50,
        "weekOfSeason": 4,
        "weekOfYear": 10,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "summer-sketches",
        "season": "Summer",
        "title": "Sketches beside the water",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.landing",
        "participants": [
          "villager.solan",
          "villager.odel",
          "villager.vela",
          "villager.lira"
        ],
        "activity": "Bring a sketchbook or simply sit on the safe bank. Nobody has to be good at drawing and nothing is for sale.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel unsafe outdoor gatherings; personal Hearthday routines remain available. Do not assume a new indoor venue.",
        "seasonDay": 25,
        "dayOfYear": 55,
        "weekOfSeason": 5,
        "weekOfYear": 11,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "summer-riverlights",
        "season": "Summer",
        "title": "Riverlights",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.landing",
        "participants": [
          "villager.lira",
          "villager.nessa",
          "villager.seraphine",
          "villager.riven",
          "villager.kael",
          "villager.fen"
        ],
        "activity": "Farewell to summer with reusable lanterns along the bank, river stories and a small shared meal. Nothing is released into the water. Unsafe conditions cancel the waterside gathering; shops remain closed.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel unsafe outdoor gatherings; personal Hearthday routines remain available. Do not assume a new indoor venue.",
        "seasonDay": 30,
        "dayOfYear": 60,
        "weekOfSeason": 6,
        "weekOfYear": 12,
        "scale": "seasonal-festival",
        "window": "15:00–19:00, with breaks and early departures",
        "phases": [
          "afternoon",
          "evening"
        ]
      },
      {
        "id": "autumn-table",
        "season": "Autumn",
        "seasonPosition": "Early",
        "title": "A shared harvest table",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.green",
        "participants": [
          "villager.oren",
          "villager.odel",
          "villager.joren",
          "villager.mira",
          "villager.hesta"
        ],
        "activity": "Bring a dish made voluntarily beforehand; essential animal care happens first. Hesta and Roska attend as guests, not cooks on duty.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel outdoor gatherings in unsafe weather; participants keep their personal Hearthday. Do not assume an unplanned indoor venue has room.",
        "seasonDay": 5,
        "dayOfYear": 65,
        "weekOfSeason": 1,
        "weekOfYear": 13,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "autumn-mending",
        "season": "Autumn",
        "seasonPosition": "Middle",
        "title": "Mend something of your own",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.craft-yard",
        "participants": [
          "villager.bram",
          "villager.solan",
          "villager.nils",
          "villager.vela",
          "villager.korvin"
        ],
        "activity": "An optional low-key gathering for personal objects, stories and sharing a simple technique. No customer intake, payment, orders or compulsory favours.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel outdoor gatherings in unsafe weather; participants keep their personal Hearthday. Do not assume an unplanned indoor venue has room.",
        "seasonDay": 10,
        "dayOfYear": 70,
        "weekOfSeason": 2,
        "weekOfYear": 14,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "autumn-kitchen",
        "season": "Autumn",
        "title": "A day for home kitchens",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.green",
        "participants": [],
        "activity": "Private household meals and voluntary supper invitations; no public catering rota or new orders.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel unsafe outdoor gatherings; personal Hearthday routines remain available. Do not assume a new indoor venue.",
        "seasonDay": 15,
        "dayOfYear": 75,
        "weekOfSeason": 3,
        "weekOfYear": 15,
        "scale": "quiet-week",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "autumn-memories",
        "season": "Autumn",
        "seasonPosition": "Late",
        "title": "Stories of those remembered",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.cemetery",
        "participants": [
          "villager.elowen",
          "villager.maelle",
          "villager.lys",
          "villager.agnes"
        ],
        "activity": "A short voluntary remembrance walk. Quiet listening and declining to speak are welcome; no scheduled service fees or demanded disclosures.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel outdoor gatherings in unsafe weather; participants keep their personal Hearthday. Do not assume an unplanned indoor venue has room.",
        "seasonDay": 20,
        "dayOfYear": 80,
        "weekOfSeason": 4,
        "weekOfYear": 16,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "autumn-warmth",
        "season": "Autumn",
        "title": "Blankets and tall tales",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.hall",
        "participants": [
          "villager.agnes",
          "villager.hesta",
          "villager.tovin",
          "villager.edda",
          "villager.garrick"
        ],
        "activity": "Bring a blanket and a tale. Hesta and Agnes are guests; refreshments come from voluntary preparations, not an inn shift.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel unsafe outdoor gatherings; personal Hearthday routines remain available. Do not assume a new indoor venue.",
        "seasonDay": 25,
        "dayOfYear": 85,
        "weekOfSeason": 5,
        "weekOfYear": 17,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "autumn-lasttable",
        "season": "Autumn",
        "title": "The Last Harvest Table",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.green",
        "participants": [
          "villager.oren",
          "villager.odel",
          "villager.joren",
          "villager.maris",
          "villager.mira",
          "villager.hesta"
        ],
        "activity": "An optional end-of-autumn shared table. Households bring food prepared by choice; nobody is assigned professional catering. Finish before essential evening care.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel unsafe outdoor gatherings; personal Hearthday routines remain available. Do not assume a new indoor venue.",
        "seasonDay": 30,
        "dayOfYear": 90,
        "weekOfSeason": 6,
        "weekOfYear": 18,
        "scale": "seasonal-festival",
        "window": "15:00–19:00, with breaks and early departures",
        "phases": [
          "afternoon",
          "evening"
        ]
      },
      {
        "id": "winter-stories",
        "season": "Winter",
        "seasonPosition": "Early",
        "title": "Stories by the hearth",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.hall",
        "participants": [
          "villager.agnes",
          "villager.edda",
          "villager.riven",
          "villager.elian",
          "villager.wren"
        ],
        "activity": "Bring a story or simply listen. Elian accompanies Wren and leaves well before bedtime; no paid inn service.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel outdoor gatherings in unsafe weather; participants keep their personal Hearthday. Do not assume an unplanned indoor venue has room.",
        "seasonDay": 5,
        "dayOfYear": 95,
        "weekOfSeason": 1,
        "weekOfYear": 19,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "winter-cards",
        "season": "Winter",
        "seasonPosition": "Middle",
        "title": "Cards and terrible tricks",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.hall",
        "participants": [
          "villager.ysra",
          "villager.mirelle",
          "villager.hesta",
          "villager.orin",
          "villager.seraphine"
        ],
        "activity": "A small card afternoon with food brought from home. No trading; Ysra may leave for urgent care without ending everyone’s gathering.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel outdoor gatherings in unsafe weather; participants keep their personal Hearthday. Do not assume an unplanned indoor venue has room.",
        "seasonDay": 10,
        "dayOfYear": 100,
        "weekOfSeason": 2,
        "weekOfYear": 20,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "winter-puzzles",
        "season": "Winter",
        "title": "Puzzles by the fire",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.hall",
        "participants": [
          "villager.freya",
          "villager.nils",
          "villager.korvin",
          "villager.edda"
        ],
        "activity": "Bring a favourite puzzle or watch others reason it out. No repairs, commissions or entrance fee.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel unsafe outdoor gatherings; personal Hearthday routines remain available. Do not assume a new indoor venue.",
        "seasonDay": 15,
        "dayOfYear": 105,
        "weekOfSeason": 3,
        "weekOfYear": 21,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "winter-quiet",
        "season": "Winter",
        "seasonPosition": "Late",
        "title": "A quiet Hearthday",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.green",
        "participants": [],
        "activity": "No scheduled gathering. Small household traditions, private invitations and a short walk make this week distinct without another event.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel outdoor gatherings in unsafe weather; participants keep their personal Hearthday. Do not assume an unplanned indoor venue has room.",
        "seasonDay": 20,
        "dayOfYear": 110,
        "weekOfSeason": 4,
        "weekOfYear": 22,
        "scale": "quiet-week",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "winter-letters",
        "season": "Winter",
        "title": "Letters before the turning",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.archive-school",
        "participants": [
          "villager.elian",
          "villager.wren",
          "villager.lucien",
          "villager.evren"
        ],
        "activity": "Write or draw personal letters, with Elian supervising Wren. This is a social gathering, not clerk hours, school or paid courier collection.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel unsafe outdoor gatherings; personal Hearthday routines remain available. Do not assume a new indoor venue.",
        "seasonDay": 25,
        "dayOfYear": 115,
        "weekOfSeason": 5,
        "weekOfYear": 23,
        "scale": "small-gathering",
        "window": "A short visit within 14:00–18:00",
        "phases": [
          "afternoon"
        ]
      },
      {
        "id": "winter-longnight",
        "season": "Winter",
        "title": "The Long Night",
        "day": 5,
        "phase": "afternoon",
        "placeId": "site.hall",
        "participants": [
          "villager.asmo",
          "villager.khaeli",
          "villager.riven",
          "villager.maelle",
          "villager.elowen",
          "villager.elian",
          "villager.wren"
        ],
        "activity": "A larger year-end evening of warm light, music and remembered kindnesses. The family portion ends before Wren’s bedtime; no one must stay until midnight. Next morning begins Spring 1.",
        "optional": true,
        "commerce": false,
        "weatherFallback": "Cancel unsafe outdoor gatherings; personal Hearthday routines remain available. Do not assume a new indoor venue.",
        "seasonDay": 30,
        "dayOfYear": 120,
        "weekOfSeason": 6,
        "weekOfYear": 24,
        "scale": "seasonal-festival",
        "window": "16:00–20:00 family gathering; optional adult music afterward",
        "phases": [
          "afternoon",
          "evening"
        ]
      }
    ]
  },
  "annualCalendarSource": "Design/VillageLife/annual-calendar.v1.json",
  "year": {
    "days": 120,
    "weeks": 24,
    "seasons": 4,
    "daysPerSeason": 30,
    "weeksPerSeason": 6,
    "daysPerWeek": 5,
    "start": "Spring 1 · Rootday",
    "end": "Winter 30 · Hearthday",
    "rollover": "Winter 30 is followed by Spring 1 of the next year; no extra intercalary day or leap day.",
    "dateFormat": "Season + day number, optionally weekday; no extra month-name vocabulary."
  },
  "overrides": [
    {
      "residentId": "villager.hesta",
      "day": 4,
      "phase": "afternoon",
      "placeId": "site.inn",
      "activity": "Finish lunch cleanup, put away stores and prepare tomorrow’s ingredients; no supper service tonight. Leave for the invited supper after a break."
    },
    {
      "residentId": "villager.ysra",
      "day": 3,
      "phase": "afternoon",
      "placeId": "site.clinic",
      "activity": "Remain at the clinic for urgent needs while Ivara and Maelle attend practice; house calls booked on other afternoons."
    },
    {
      "residentId": "villager.evren",
      "day": 3,
      "phase": "morning",
      "placeId": null,
      "activity": "Away on the long delivery and buying route. Not available in the village; return is conditional on safe travel."
    },
    {
      "residentId": "villager.evren",
      "day": 3,
      "phase": "midday",
      "placeId": null,
      "activity": "Away on the long delivery and buying route. Not available in the village; return is conditional on safe travel."
    },
    {
      "residentId": "villager.evren",
      "day": 3,
      "phase": "afternoon",
      "placeId": null,
      "activity": "Away on the long delivery and buying route. Not available in the village; return is conditional on safe travel."
    },
    {
      "residentId": "villager.seraphine",
      "day": 3,
      "phase": "morning",
      "placeId": null,
      "activity": "Away on the long delivery and buying route. Not available in the village; return is conditional on safe travel."
    },
    {
      "residentId": "villager.seraphine",
      "day": 3,
      "phase": "midday",
      "placeId": null,
      "activity": "Away on the long delivery and buying route. Not available in the village; return is conditional on safe travel."
    },
    {
      "residentId": "villager.seraphine",
      "day": 3,
      "phase": "afternoon",
      "placeId": null,
      "activity": "Away on the long delivery and buying route. Not available in the village; return is conditional on safe travel."
    },
    {
      "residentId": "villager.riven",
      "day": 2,
      "phase": "evening",
      "placeId": "address.riven",
      "activity": "An evening at home with no public performance."
    }
  ],
  "weeklySchedules": [
    {
      "residentId": "villager.agnes",
      "name": "Agnes",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.inn",
              "activity": "Check pantry and prepare breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.inn",
              "activity": "Welcome guests and handle rooms",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch service and a proper meal break",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.inn",
              "activity": "Accounts, arrivals and small repairs",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "Host supper; close public room at 20:00, then go home",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.inn",
              "activity": "Check pantry and prepare breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.inn",
              "activity": "Welcome guests and handle rooms",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch service and a proper meal break",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.inn",
              "activity": "Accounts, arrivals and small repairs",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "A quiet shared cup between arrivals; Agnes remains the inn host. Both leave at the 20:00 close.",
              "source": "weekly-event",
              "eventId": "quiet-inn-table"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.inn",
              "activity": "Check pantry and prepare breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.inn",
              "activity": "Welcome guests and handle rooms",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch service and a proper meal break",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.inn",
              "activity": "Accounts, arrivals and small repairs",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "Host supper; close public room at 20:00, then go home",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.inn",
              "activity": "Check pantry and prepare breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.inn",
              "activity": "Welcome guests and handle rooms",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch service and a proper meal break",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.inn",
              "activity": "Accounts, arrivals and small repairs",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "Host supper; close public room at 20:00, then go home",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.agnes",
              "activity": "Slow breakfast and read a mystery; no pantry shift",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.agnes",
              "activity": "A private morning with no room or meal sales",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.agnes",
              "activity": "Lunch made for herself",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.agnes",
              "activity": "Read and rest, without business callers",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.agnes",
              "activity": "Quiet supper and puzzle reading",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.asmo",
      "name": "Asmo",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.leadership",
              "activity": "Breakfast and quiet music with Khaeli",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.hall",
              "activity": "Predictable public listening and decision hours",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.hall",
              "activity": "Lunch break, then review one practical village problem",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.hall",
              "activity": "Accounts and correspondence; finish by late afternoon",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.leadership",
              "activity": "Supper with Khaeli, piano and unfinished compositions",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.leadership",
              "activity": "Breakfast and quiet music with Khaeli",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.hall",
              "activity": "Predictable public listening and decision hours",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.hall",
              "activity": "Lunch break, then review one practical village problem",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.hall",
              "activity": "Accounts and correspondence; finish by late afternoon",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.leadership",
              "activity": "Supper with Khaeli, piano and unfinished compositions",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.leadership",
              "activity": "Breakfast and quiet music with Khaeli",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.craft-yard",
              "activity": "Review one real repair, access and materials. Hall listening hours move to the yard today; ordinary craft enquiries still fit around it.",
              "source": "weekly-event",
              "eventId": "structural-review"
            },
            {
              "phase": "midday",
              "placeId": "site.hall",
              "activity": "Lunch break, then review one practical village problem",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.hall",
              "activity": "Accounts and correspondence; finish by late afternoon",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.leadership",
              "activity": "Supper with Khaeli, piano and unfinished compositions",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.leadership",
              "activity": "Breakfast and quiet music with Khaeli",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.hall",
              "activity": "Predictable public listening and decision hours",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.hall",
              "activity": "Lunch break, then review one practical village problem",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.hall",
              "activity": "Finish a bounded repair budget; stop in time for supper and music.",
              "source": "weekly-event",
              "eventId": "paid-repair-budget"
            },
            {
              "phase": "evening",
              "placeId": "site.hall",
              "activity": "A small optional music evening at the hall: existing piano, harp or violin, lute and space to dance. Light refreshments only; finish at 20:00. If travel is delayed Evren and Seraphine miss it.",
              "source": "weekly-event",
              "eventId": "music-evening"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.leadership",
              "activity": "Unhurried breakfast with Khaeli",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.leadership",
              "activity": "Private piano practice and household time; hall office closed",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.leadership",
              "activity": "Lunch together without village accounts",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.leadership",
              "activity": "Shared rest and work on the sleeping nook only by choice",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.leadership",
              "activity": "Supper and music with Khaeli",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.lys",
      "name": "Aveline",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.flower-garden",
              "activity": "Cut flowers and water beds",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.flower-garden",
              "activity": "Sell bouquets and take arrangement orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.flower-garden",
              "activity": "Lunch and prepare collected orders",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.cemetery",
              "activity": "Choose seasonal memorial flowers and discuss the people behind the arrangements.",
              "source": "weekly-event",
              "eventId": "flowers-and-remembrance"
            },
            {
              "phase": "evening",
              "placeId": "address.lys",
              "activity": "Supper and a novel; leave the flower work behind",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.flower-garden",
              "activity": "Cut flowers and water beds",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.market",
              "activity": "The larger weekly market: ordinary supplies, rare goods, fish, flowers and honey. Their usual counters post this temporary selling location.",
              "source": "weekly-event",
              "eventId": "market-day"
            },
            {
              "phase": "midday",
              "placeId": "site.flower-garden",
              "activity": "Lunch and prepare collected orders",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.flower-garden",
              "activity": "Prune, plant and press a few favourite blooms",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.lys",
              "activity": "Supper and a novel; leave the flower work behind",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.flower-garden",
              "activity": "Cut flowers and water beds",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.flower-garden",
              "activity": "Sell bouquets and take arrangement orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.flower-garden",
              "activity": "Lunch and prepare collected orders",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.flower-garden",
              "activity": "Prune, plant and press a few favourite blooms",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.lys",
              "activity": "Supper and a novel; leave the flower work behind",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.flower-garden",
              "activity": "Cut flowers and water beds",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.flower-garden",
              "activity": "Sell bouquets and take arrangement orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.flower-garden",
              "activity": "Lunch and prepare collected orders",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.flower-garden",
              "activity": "Prune, plant and press a few favourite blooms",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.lys",
              "activity": "Supper and a novel; leave the flower work behind",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.lys",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.lys",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.lys",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "site.green",
              "activity": "Sketch colours and enjoy the garden without tending it",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.lys",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.bram",
      "name": "Bram",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.forge",
              "activity": "Light forge and prepare the day’s metal",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.forge",
              "activity": "Repair intake, fittings and a predictable customer hour",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.forge",
              "activity": "Extinguish active work for lunch; review practical jobs",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.forge",
              "activity": "A bounded repair exchange: handles, fittings and finishing one overdue device. Shops post this location; collections resume next morning.",
              "source": "weekly-event",
              "eventId": "repair-exchange"
            },
            {
              "phase": "evening",
              "placeId": "address.bram",
              "activity": "Cook, rest and make small offcut birds",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.forge",
              "activity": "Light forge and prepare the day’s metal",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.forge",
              "activity": "Repair intake, fittings and a predictable customer hour",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.forge",
              "activity": "Extinguish active work for lunch; review practical jobs",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.forge",
              "activity": "Focused forging and finish outstanding repairs",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.bram",
              "activity": "Cook, rest and make small offcut birds",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.forge",
              "activity": "Light forge and prepare the day’s metal",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.forge",
              "activity": "Repair intake, fittings and a predictable customer hour",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.forge",
              "activity": "Extinguish active work for lunch; review practical jobs",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Optional weekly practice for the eight initial companions, not an automatic excursion. Scheduled service collections close for this window; Ysra remains available at the clinic.",
              "source": "weekly-event",
              "eventId": "controlled-practice"
            },
            {
              "phase": "evening",
              "placeId": "address.bram",
              "activity": "Cook, rest and make small offcut birds",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.forge",
              "activity": "Light forge and prepare the day’s metal",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.forge",
              "activity": "Repair intake, fittings and a predictable customer hour",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.forge",
              "activity": "Extinguish active work for lunch; review practical jobs",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.forge",
              "activity": "Focused forging and finish outstanding repairs",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.bram",
              "activity": "Cook, rest and make small offcut birds",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.bram",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.bram",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.bram",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.bram",
              "activity": "Unhurried sculpture and rest; forge cold",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.bram",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.solan",
      "name": "Dain",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.carpenters-household",
              "activity": "Breakfast with Torren and agree household chores",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.craft-yard",
              "activity": "Take repair requests and work on furniture",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Shared yard lunch; trade practical advice",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.forge",
              "activity": "A bounded repair exchange: handles, fittings and finishing one overdue device. Shops post this location; collections resume next morning.",
              "source": "weekly-event",
              "eventId": "repair-exchange"
            },
            {
              "phase": "evening",
              "placeId": "address.carpenters-household",
              "activity": "Supper with Torren; a toy or comfort project of his own",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.carpenters-household",
              "activity": "Breakfast with Torren and agree household chores",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.craft-yard",
              "activity": "Take repair requests and work on furniture",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Shared yard lunch; trade practical advice",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.craft-yard",
              "activity": "Dain teaches a toy joint while Garrick finishes a wooden boat; a quiet mentoring visit, not another watch shift.",
              "source": "weekly-event",
              "eventId": "toy-repairs"
            },
            {
              "phase": "evening",
              "placeId": "address.carpenters-household",
              "activity": "Supper with Torren; a toy or comfort project of his own",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.carpenters-household",
              "activity": "Breakfast with Torren and agree household chores",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.craft-yard",
              "activity": "Take repair requests and work on furniture",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Shared yard lunch; trade practical advice",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.craft-yard",
              "activity": "Joinery and scheduled repair visits, logged at the yard",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.carpenters-household",
              "activity": "Supper with Torren; a toy or comfort project of his own",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.carpenters-household",
              "activity": "Breakfast with Torren and agree household chores",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.craft-yard",
              "activity": "Take repair requests and work on furniture",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Shared yard lunch; trade practical advice",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.craft-yard",
              "activity": "Joinery and scheduled repair visits, logged at the yard",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.carpenters-household",
              "activity": "Supper with Torren; a toy or comfort project of his own",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.carpenters-household",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.carpenters-household",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.carpenters-household",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.carpenters-household",
              "activity": "Work on his own comfortable chair, only if he feels like it",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.carpenters-household",
              "activity": "Cook an unhurried household supper together, with no customer appointments.",
              "source": "weekly-event",
              "eventId": "home-cooking"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.edda",
      "name": "Edda",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.edda",
              "activity": "Breakfast and a few pages before opening",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Open library, returns and thoughtful recommendations",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.archive-school",
              "activity": "Lunch reading table; agreed supervision of Wren on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Book repair and research; brief garden pause at closing",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.edda",
              "activity": "Melodramatic fiction and hesitant pages of her own",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.edda",
              "activity": "Breakfast and a few pages before opening",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Open library, returns and thoughtful recommendations",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.archive-school",
              "activity": "Lunch reading table; agreed supervision of Wren on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Compare a record, an observation and a remembered story; leave room for uncertainty. Edda remains at the library desk.",
              "source": "weekly-event",
              "eventId": "source-debate"
            },
            {
              "phase": "evening",
              "placeId": "address.edda",
              "activity": "Melodramatic fiction and hesitant pages of her own",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.edda",
              "activity": "Breakfast and a few pages before opening",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Open library, returns and thoughtful recommendations",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.archive-school",
              "activity": "Lunch reading table; agreed supervision of Wren on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Exchange an unfinished story in private; Riven does not perform it without permission.",
              "source": "weekly-event",
              "eventId": "books-without-performance"
            },
            {
              "phase": "evening",
              "placeId": "address.edda",
              "activity": "Melodramatic fiction and hesitant pages of her own",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.edda",
              "activity": "Breakfast and a few pages before opening",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Open library, returns and thoughtful recommendations",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.archive-school",
              "activity": "Lunch reading table; agreed supervision of Wren on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Book repair and research; brief garden pause at closing",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.edda",
              "activity": "Melodramatic fiction and hesitant pages of her own",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.edda",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.edda",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.edda",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.edda",
              "activity": "Protected reading and writing, away from the service desk",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.edda",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.elian",
      "name": "Elian",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Breakfast with Wren and walk together",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Teach morning lessons on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.hall",
              "activity": "Clerk window on Days 1–4 while Edda supervises Wren by agreement",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Lesson preparation and supervised projects with Wren",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Family supper, reading, Wren’s 20:00 bedtime; quiet adult time afterward",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Breakfast with Wren and walk together",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Teach morning lessons on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.hall",
              "activity": "Clerk window on Days 1–4 while Edda supervises Wren by agreement",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Lesson preparation and supervised projects with Wren",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Family supper, reading, Wren’s 20:00 bedtime; quiet adult time afterward",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Breakfast with Wren and walk together",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Teach morning lessons on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.hall",
              "activity": "Clerk window on Days 1–4 while Edda supervises Wren by agreement",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.green",
              "activity": "An afternoon of running games and drawing landmarks together; Elian remains responsible for supervision.",
              "source": "weekly-event",
              "eventId": "green-outing"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Family supper, reading, Wren’s 20:00 bedtime; quiet adult time afterward",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Breakfast with Wren and walk together",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Teach morning lessons on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.hall",
              "activity": "Clerk window on Days 1–4 while Edda supervises Wren by agreement",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Lesson preparation and supervised projects with Wren",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Family supper, reading, Wren’s 20:00 bedtime; quiet adult time afterward",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Breakfast with Wren, with no school rush",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.archive-household",
              "activity": "Paper models and mapmaking with Wren",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "site.green",
              "activity": "Family picnic with Wren; bring provisions from home",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "site.green",
              "activity": "Supervise Wren’s running games and paper creatures",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Family supper and reading; Wren sleeps at 20:00",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.evren",
      "name": "Evren",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.stables",
              "activity": "Check animal and load with Fen before departure",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.stables",
              "activity": "Local delivery round; collection point remains the yard",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.market",
              "activity": "Local parcels and meal break",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.stables",
              "activity": "Posted collection window, cart checks and correspondence",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "Supper, letters and conversation; lodging afterward",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.stables",
              "activity": "Check animal and load with Fen before departure",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.stables",
              "activity": "Local delivery round; collection point remains the yard",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.market",
              "activity": "Local parcels and meal break",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.stables",
              "activity": "A short harness fitting and route-gear feedback session; Fen retains animal care and Evren his collection window.",
              "source": "weekly-event",
              "eventId": "harness-feedback"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "Supper, letters and conversation; lodging afterward",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.stables",
              "activity": "Load and depart together after Fen checks the animal. Their Day 3 morning, midday and afternoon are off-village; return before evening only if the route permits.",
              "source": "weekly-event",
              "eventId": "long-route-outbound"
            },
            {
              "phase": "morning",
              "placeId": null,
              "activity": "Away on the long delivery and buying route. Not available in the village; return is conditional on safe travel.",
              "source": "exception"
            },
            {
              "phase": "midday",
              "placeId": null,
              "activity": "Away on the long delivery and buying route. Not available in the village; return is conditional on safe travel.",
              "source": "exception"
            },
            {
              "phase": "afternoon",
              "placeId": null,
              "activity": "Away on the long delivery and buying route. Not available in the village; return is conditional on safe travel.",
              "source": "exception"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "Supper, letters and conversation; lodging afterward",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.stables",
              "activity": "Check animal and load with Fen before departure",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.stables",
              "activity": "Local delivery round; collection point remains the yard",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.market",
              "activity": "Local parcels and meal break",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.stables",
              "activity": "Posted collection window, cart checks and correspondence",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.hall",
              "activity": "A small optional music evening at the hall: existing piano, harp or violin, lute and space to dance. Light refreshments only; finish at 20:00. If travel is delayed Evren and Seraphine miss it.",
              "source": "weekly-event",
              "eventId": "music-evening"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.inn-lodging",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.inn-lodging",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.inn-lodging",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.inn-lodging",
              "activity": "Write personal letters and tend his small plant",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.inn-lodging",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.fen",
      "name": "Fen",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.stables",
              "activity": "Feed, water and inspect animals before breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.stables",
              "activity": "Animal care and transport requests",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.stables",
              "activity": "Lunch after settling animals; check tack",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.stables",
              "activity": "Repairs, gentle exercise and arrivals",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.stables",
              "activity": "Final feed and stable check, then supper at home",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.stables",
              "activity": "Feed, water and inspect animals before breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.stables",
              "activity": "Animal care and transport requests",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.stables",
              "activity": "Lunch after settling animals; check tack",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.stables",
              "activity": "A short harness fitting and route-gear feedback session; Fen retains animal care and Evren his collection window.",
              "source": "weekly-event",
              "eventId": "harness-feedback"
            },
            {
              "phase": "evening",
              "placeId": "site.stables",
              "activity": "Final feed and stable check, then supper at home",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.stables",
              "activity": "Feed, water and inspect animals before breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.stables",
              "activity": "Animal care and transport requests",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.stables",
              "activity": "Lunch after settling animals; check tack",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.stables",
              "activity": "Repairs, gentle exercise and arrivals",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.stables",
              "activity": "Final feed and stable check, then supper at home",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.stables",
              "activity": "Feed, water and inspect animals before breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.stables",
              "activity": "Animal care and transport requests",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.stables",
              "activity": "Lunch after settling animals; check tack",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.stables",
              "activity": "Repairs, gentle exercise and arrivals",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.stables",
              "activity": "Final feed and stable check, then supper at home",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.stables",
              "activity": "Essential feed, water and animal welfare check",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.fen",
              "activity": "Breakfast and rest after settling the animals; no transport sales",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "site.stables",
              "activity": "Short water and welfare check, then his own lunch",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "site.stables",
              "activity": "Essential animal checks between long quiet breaks; no customer appointments",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "site.stables",
              "activity": "Final feed and safety check, then supper at home",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.freya",
      "name": "Freya",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.watch-training",
              "activity": "Solo practice before breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.watch-training",
              "activity": "Ward drills and controlled spellblade practice",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "address.freya",
              "activity": "Eat lunch at home, using bread collected before noon; respect Roska’s midday closure",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Research and prepare safe exercises",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.freya",
              "activity": "A village-heart stroll on the way home, then puzzles",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.watch-training",
              "activity": "Solo practice before breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.watch-training",
              "activity": "Ward drills and controlled spellblade practice",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "address.freya",
              "activity": "Eat lunch at home, using bread collected before noon; respect Roska’s midday closure",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Research and prepare safe exercises",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.freya",
              "activity": "A village-heart stroll on the way home, then puzzles",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.watch-training",
              "activity": "Solo practice before breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.watch-training",
              "activity": "Ward drills and controlled spellblade practice",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "address.freya",
              "activity": "Eat lunch at home, using bread collected before noon; respect Roska’s midday closure",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Optional weekly practice for the eight initial companions, not an automatic excursion. Scheduled service collections close for this window; Ysra remains available at the clinic.",
              "source": "weekly-event",
              "eventId": "controlled-practice"
            },
            {
              "phase": "evening",
              "placeId": "address.freya",
              "activity": "A village-heart stroll on the way home, then puzzles",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.watch-training",
              "activity": "Solo practice before breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.watch-training",
              "activity": "Ward drills and controlled spellblade practice",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "address.freya",
              "activity": "Eat lunch at home, using bread collected before noon; respect Roska’s midday closure",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Discuss a safe ward diagram and a disputed source; no live spell test among the books.",
              "source": "weekly-event",
              "eventId": "ward-study"
            },
            {
              "phase": "evening",
              "placeId": "address.freya",
              "activity": "A village-heart stroll on the way home, then puzzles",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.freya",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.freya",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.freya",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.freya",
              "activity": "An absorbing puzzle and an intentionally unproductive afternoon",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.freya",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.garrick",
      "name": "Garrick",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.garrick",
              "activity": "Breakfast and inspect old equipment",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.watch-training",
              "activity": "Short familiar patrol and optional mentoring; no command duty",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch and unhurried conversation",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "address.garrick",
              "activity": "Repair a wooden toy or visit a neighbour by invitation",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.garrick",
              "activity": "Quiet supper and equipment care",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.garrick",
              "activity": "Breakfast and inspect old equipment",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.watch-training",
              "activity": "Short familiar patrol and optional mentoring; no command duty",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch and unhurried conversation",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.craft-yard",
              "activity": "Dain teaches a toy joint while Garrick finishes a wooden boat; a quiet mentoring visit, not another watch shift.",
              "source": "weekly-event",
              "eventId": "toy-repairs"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "A quiet shared cup between arrivals; Agnes remains the inn host. Both leave at the 20:00 close.",
              "source": "weekly-event",
              "eventId": "quiet-inn-table"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.garrick",
              "activity": "Breakfast and inspect old equipment",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.watch-training",
              "activity": "Short familiar patrol and optional mentoring; no command duty",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch and unhurried conversation",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "address.garrick",
              "activity": "Repair a wooden toy or visit a neighbour by invitation",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.garrick",
              "activity": "Quiet supper and equipment care",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.garrick",
              "activity": "Breakfast and inspect old equipment",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.watch-training",
              "activity": "Short familiar patrol and optional mentoring; no command duty",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch and unhurried conversation",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "address.garrick",
              "activity": "Repair a wooden toy or visit a neighbour by invitation",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.garrick",
              "activity": "Quiet supper and equipment care",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.garrick",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.garrick",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.garrick",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.garrick",
              "activity": "Rest and a small wooden project without a deadline",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.garrick",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.oren",
      "name": "Halric",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.farm",
              "activity": "Check livestock with Odel, then breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.farm",
              "activity": "Field work, seed and supply sales at the farm gate",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.farm",
              "activity": "Lunch and an advice window for growers",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.mill",
              "activity": "Compare flour blends and reserve grain. Roska has no afternoon collections today and keeps her midday rest.",
              "source": "weekly-event",
              "eventId": "grain-and-bread"
            },
            {
              "phase": "evening",
              "placeId": "address.farmhouse",
              "activity": "Supper with Odel and seed sorting",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.farm",
              "activity": "Check livestock with Odel, then breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.farm",
              "activity": "Field work, seed and supply sales at the farm gate",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.farm",
              "activity": "Lunch and an advice window for growers",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.farm",
              "activity": "Crops, fencing and seasonal jobs",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.farmhouse",
              "activity": "Supper with Odel and seed sorting",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.farm",
              "activity": "Check livestock with Odel, then breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.farm",
              "activity": "Field work, seed and supply sales at the farm gate",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.farm",
              "activity": "Lunch and an advice window for growers",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.farm",
              "activity": "Check a small mushroom-compost trial against an ordinary bed, record the result and share credit.",
              "source": "weekly-event",
              "eventId": "soil-trial"
            },
            {
              "phase": "evening",
              "placeId": "address.farmhouse",
              "activity": "Supper with Odel and seed sorting",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.farm",
              "activity": "Check livestock with Odel, then breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.farm",
              "activity": "Field work, seed and supply sales at the farm gate",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.farm",
              "activity": "Lunch and an advice window for growers",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.farm",
              "activity": "Crops, fencing and seasonal jobs",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.farmhouse",
              "activity": "Supper with Odel and seed sorting",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.farm",
              "activity": "Essential animal and crop checks with Odel; no farm-gate sales",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.farmhouse",
              "activity": "Breakfast and a slow morning",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.farmhouse",
              "activity": "Lunch and private seed sorting if enjoyable",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "site.farm",
              "activity": "Essential crop checks and a quiet sit by the fields",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.farmhouse",
              "activity": "Share supper and a small game; Halric cooks after Odel’s final animal check.",
              "source": "weekly-event",
              "eventId": "family-supper"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.hesta",
      "name": "Hesta",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.inn",
              "activity": "Breakfast preparation, menus and stores",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.inn",
              "activity": "Kitchen preparation with a proper break before lunch",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch service, then her own meal",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.inn",
              "activity": "Protected break followed by supper preparation",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "Supper service; kitchen closes at 20:00, then private lodging",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.inn",
              "activity": "Breakfast preparation, menus and stores",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.inn",
              "activity": "Kitchen preparation with a proper break before lunch",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch service, then her own meal",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.inn",
              "activity": "A short tasting of the next cheese batch before supper preparation; Odel returns for animal care.",
              "source": "weekly-event",
              "eventId": "dairy-tasting"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "Supper service; kitchen closes at 20:00, then private lodging",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.inn",
              "activity": "Breakfast preparation, menus and stores",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.inn",
              "activity": "Kitchen preparation with a proper break before lunch",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch service, then her own meal",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.inn",
              "activity": "Protected break followed by supper preparation",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "Supper service; kitchen closes at 20:00, then private lodging",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.inn",
              "activity": "Breakfast preparation, menus and stores",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.inn",
              "activity": "Kitchen preparation with a proper break before lunch",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch service, then her own meal",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.inn",
              "activity": "Finish lunch cleanup, put away stores and prepare tomorrow’s ingredients; no supper service tonight. Leave for the invited supper after a break.",
              "source": "exception"
            },
            {
              "phase": "evening",
              "placeId": "address.clinic-household",
              "activity": "Ysra and Ivara host Hesta for supper and a deliberately terrible card trick. Inn supper is closed today; Agnes handles rooms and cold drinks only, advertised in advance.",
              "source": "weekly-event",
              "eventId": "meal-not-made-by-hesta"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.inn-lodging",
              "activity": "Breakfast from food prepared ahead; no kitchen shift",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.inn-lodging",
              "activity": "Choose earrings, read or simply sleep longer",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.inn-lodging",
              "activity": "Eat her own lunch without serving customers",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.inn-lodging",
              "activity": "Rest and a word game",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.inn-lodging",
              "activity": "A simple private supper; no catering",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.mirelle",
      "name": "Ivara",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.clinic",
              "activity": "Garden notes and watering before opening",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.clinic",
              "activity": "Apothecary counter, remedies and orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.clinic",
              "activity": "Lunch and agreed stock or patient handover with Ysra",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.clinic",
              "activity": "Prepare orders, cultivation and scheduled shared rounds",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.clinic-household",
              "activity": "Supper and one uninterrupted quiet hour; dusk watering first",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.clinic",
              "activity": "Garden notes and watering before opening",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.clinic",
              "activity": "Apothecary counter, remedies and orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.clinic",
              "activity": "Lunch and agreed stock or patient handover with Ysra",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.clinic",
              "activity": "Compare a labelled cultivation trial and agree credit and next steps. Apothecary order collection stays available.",
              "source": "weekly-event",
              "eventId": "cultivation-trial"
            },
            {
              "phase": "evening",
              "placeId": "address.clinic-household",
              "activity": "Supper and one uninterrupted quiet hour; dusk watering first",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.clinic",
              "activity": "Garden notes and watering before opening",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.clinic",
              "activity": "Apothecary counter, remedies and orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.clinic",
              "activity": "Lunch and agreed stock or patient handover with Ysra",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Optional weekly practice for the eight initial companions, not an automatic excursion. Scheduled service collections close for this window; Ysra remains available at the clinic.",
              "source": "weekly-event",
              "eventId": "controlled-practice"
            },
            {
              "phase": "evening",
              "placeId": "address.clinic-household",
              "activity": "Supper and one uninterrupted quiet hour; dusk watering first",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.clinic",
              "activity": "Garden notes and watering before opening",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.clinic",
              "activity": "Apothecary counter, remedies and orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.clinic",
              "activity": "Lunch and agreed stock or patient handover with Ysra",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.clinic",
              "activity": "Prepare orders, cultivation and scheduled shared rounds",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.clinic-household",
              "activity": "Ysra and Ivara host Hesta for supper and a deliberately terrible card trick. Inn supper is closed today; Agnes handles rooms and cold drinks only, advertised in advance.",
              "source": "weekly-event",
              "eventId": "meal-not-made-by-hesta"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.clinic",
              "activity": "Brief essential plant and medicine-storage check; shop shut",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.clinic-household",
              "activity": "Breakfast and private reading; no remedies sold",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.clinic-household",
              "activity": "Lunch with Ysra when possible",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.clinic-household",
              "activity": "Quiet cultivation notes only if enjoyable; no appointments",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.clinic-household",
              "activity": "Supper and an uninterrupted quiet hour unless urgent care is needed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.joren",
      "name": "Joren",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.mill",
              "activity": "Inspect water and machinery before milling",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.mill",
              "activity": "Grain intake, milling and flour collection",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.mill",
              "activity": "Lunch and measure outgoing flour",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.mill",
              "activity": "Compare flour blends and reserve grain. Roska has no afternoon collections today and keeps her midday rest.",
              "source": "weekly-event",
              "eventId": "grain-and-bread"
            },
            {
              "phase": "evening",
              "placeId": "address.joren",
              "activity": "Cook and sing quietly to himself",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.mill",
              "activity": "Inspect water and machinery before milling",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.mill",
              "activity": "Grain intake, milling and flour collection",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.mill",
              "activity": "Lunch and measure outgoing flour",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.mill",
              "activity": "Grinding and maintenance with machinery stopped for inspection",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.joren",
              "activity": "Cook and sing quietly to himself",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.mill",
              "activity": "Inspect water and machinery before milling",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.mill",
              "activity": "Grain intake, milling and flour collection",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.brewery",
              "activity": "Lunch and compare grain choices for a small trial brew. Mill collections pause for the posted lunch break.",
              "source": "weekly-event",
              "eventId": "brew-and-grain"
            },
            {
              "phase": "afternoon",
              "placeId": "site.mill",
              "activity": "Grinding and maintenance with machinery stopped for inspection",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.joren",
              "activity": "Cook and sing quietly to himself",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.mill",
              "activity": "Inspect water and machinery before milling",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.mill",
              "activity": "Grain intake, milling and flour collection",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.mill",
              "activity": "Lunch and measure outgoing flour",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.mill",
              "activity": "Grinding and maintenance with machinery stopped for inspection",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.joren",
              "activity": "Cook and sing quietly to himself",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.joren",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.joren",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.joren",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.joren",
              "activity": "Try a new meal; mill closed all day",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.joren",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.kael",
      "name": "Kael",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.watch-training",
              "activity": "Patrol handover and breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.watch-training",
              "activity": "Checks, reports and posted captain’s availability",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.landing",
              "activity": "Compare river conditions over lunch; identify hazards without turning it into a long formal meeting.",
              "source": "weekly-event",
              "eventId": "river-safety"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Public training, then handover before leaving",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.kael",
              "activity": "Quiet supper, mend a map and stop reading reports",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.watch-training",
              "activity": "Patrol handover and breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.watch-training",
              "activity": "Checks, reports and posted captain’s availability",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.watch-training",
              "activity": "Lunch and incident records",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Public training, then handover before leaving",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.kael",
              "activity": "Quiet supper, mend a map and stop reading reports",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.watch-training",
              "activity": "Patrol handover and breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.watch-training",
              "activity": "Checks, reports and posted captain’s availability",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.watch-training",
              "activity": "Lunch and incident records",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Optional weekly practice for the eight initial companions, not an automatic excursion. Scheduled service collections close for this window; Ysra remains available at the clinic.",
              "source": "weekly-event",
              "eventId": "controlled-practice"
            },
            {
              "phase": "evening",
              "placeId": "address.kael",
              "activity": "Quiet supper, mend a map and stop reading reports",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.watch-training",
              "activity": "Patrol handover and breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.watch-training",
              "activity": "Checks, reports and posted captain’s availability",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.watch-training",
              "activity": "Lunch and incident records",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Public training, then handover before leaving",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.kael",
              "activity": "Quiet supper, mend a map and stop reading reports",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.watch-training",
              "activity": "Necessary safety handover; no public drills or appointments",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.kael",
              "activity": "Breakfast and off-duty time after handover",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.kael",
              "activity": "Private lunch",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Brief necessary duty check and handover, then rest",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.kael",
              "activity": "Quiet supper and map mending only for pleasure",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.khaeli",
      "name": "Khaeli",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.leadership",
              "activity": "Breakfast with Asmo; optional short garden walk",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.hall",
              "activity": "Seated community appointments with breaks",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "address.leadership",
              "activity": "Lunch and a protected rest",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.apiary",
              "activity": "A short seated flowering-and-pasture discussion; Odel returns for his late animal check and Khaeli rests afterward.",
              "source": "weekly-event",
              "eventId": "habitat-notes"
            },
            {
              "phase": "evening",
              "placeId": "address.leadership",
              "activity": "Shared supper, harp or violin and quiet company",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.leadership",
              "activity": "Breakfast with Asmo; optional short garden walk",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.hall",
              "activity": "Seated community appointments with breaks",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "address.leadership",
              "activity": "Lunch and a protected rest",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.forest-work",
              "activity": "Short, accessible grove visits and habitat notes; rest afterward",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.leadership",
              "activity": "Shared supper, harp or violin and quiet company",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.leadership",
              "activity": "Breakfast with Asmo; optional short garden walk",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.forest-work",
              "activity": "A short accessible grove meeting about coppice and grazing boundaries. Odel completes morning milking first; no active charcoal burn during this visit.",
              "source": "weekly-event",
              "eventId": "forest-agreement"
            },
            {
              "phase": "midday",
              "placeId": "address.leadership",
              "activity": "Lunch and a protected rest",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.forest-work",
              "activity": "Short, accessible grove visits and habitat notes; rest afterward",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.leadership",
              "activity": "Shared supper, harp or violin and quiet company",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.leadership",
              "activity": "Breakfast with Asmo; optional short garden walk",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.hall",
              "activity": "Seated community appointments with breaks",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "address.leadership",
              "activity": "Lunch and a protected rest",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.forest-work",
              "activity": "Short, accessible grove visits and habitat notes; rest afterward",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.hall",
              "activity": "A small optional music evening at the hall: existing piano, harp or violin, lute and space to dance. Light refreshments only; finish at 20:00. If travel is delayed Evren and Seraphine miss it.",
              "source": "weekly-event",
              "eventId": "music-evening"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.leadership",
              "activity": "Unhurried breakfast with Asmo",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.leadership",
              "activity": "Music, a short optional garden pause and rest; no appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.leadership",
              "activity": "Lunch and protected rest",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.leadership",
              "activity": "Rest and choose lullabies with Asmo",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.leadership",
              "activity": "Shared supper and gentle music",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.korvin",
      "name": "Korvin",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.korvin",
              "activity": "Breakfast and review today’s drawings",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.craft-yard",
              "activity": "Project consultations and structural planning",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Shared yard lunch; clarify orders and materials",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.craft-yard",
              "activity": "Models, drawings and booked inspections recorded at the yard",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.korvin",
              "activity": "Make a model or set the drawings aside for supper",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.korvin",
              "activity": "Breakfast and review today’s drawings",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.craft-yard",
              "activity": "Project consultations and structural planning",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Shared yard lunch; clarify orders and materials",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.craft-yard",
              "activity": "Models, drawings and booked inspections recorded at the yard",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.korvin",
              "activity": "Make a model or set the drawings aside for supper",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.korvin",
              "activity": "Breakfast and review today’s drawings",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.craft-yard",
              "activity": "Review one real repair, access and materials. Hall listening hours move to the yard today; ordinary craft enquiries still fit around it.",
              "source": "weekly-event",
              "eventId": "structural-review"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Shared yard lunch; clarify orders and materials",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.craft-yard",
              "activity": "Models, drawings and booked inspections recorded at the yard",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.korvin",
              "activity": "Make a model or set the drawings aside for supper",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.korvin",
              "activity": "Breakfast and review today’s drawings",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.craft-yard",
              "activity": "Project consultations and structural planning",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Shared yard lunch; clarify orders and materials",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.hall",
              "activity": "Finish a bounded repair budget; stop in time for supper and music.",
              "source": "weekly-event",
              "eventId": "paid-repair-budget"
            },
            {
              "phase": "evening",
              "placeId": "address.korvin",
              "activity": "Make a model or set the drawings aside for supper",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.korvin",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.korvin",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.korvin",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.korvin",
              "activity": "An unfinished model for pleasure, with no client appointments",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.korvin",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.lira",
      "name": "Lira",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.landing",
              "activity": "Early catch from the landing; return time posted",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.market",
              "activity": "Sell the catch and compare river news",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.landing",
              "activity": "Compare river conditions over lunch; identify hazards without turning it into a long formal meeting.",
              "source": "weekly-event",
              "eventId": "river-safety"
            },
            {
              "phase": "afternoon",
              "placeId": "site.landing",
              "activity": "Mend nets, care for the boat and plan short surveys",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.lira",
              "activity": "Supper and record a route worth revisiting",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.landing",
              "activity": "Early catch from the landing; return time posted",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.market",
              "activity": "The larger weekly market: ordinary supplies, rare goods, fish, flowers and honey. Their usual counters post this temporary selling location.",
              "source": "weekly-event",
              "eventId": "market-day"
            },
            {
              "phase": "midday",
              "placeId": "site.landing",
              "activity": "Lunch, map notes and sorting gear",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.landing",
              "activity": "Mend nets, care for the boat and plan short surveys",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.lira",
              "activity": "Supper and record a route worth revisiting",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.landing",
              "activity": "Early catch from the landing; return time posted",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.market",
              "activity": "Sell the catch and compare river news",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.landing",
              "activity": "Lunch, map notes and sorting gear",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.landing",
              "activity": "Mend nets, care for the boat and plan short surveys",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.lira",
              "activity": "Supper and record a route worth revisiting",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.landing",
              "activity": "Early catch from the landing; return time posted",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.market",
              "activity": "Sell the catch and compare river news",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.landing",
              "activity": "Lunch, map notes and sorting gear",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.landing",
              "activity": "Mend nets, care for the boat and plan short surveys",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.hall",
              "activity": "A small optional music evening at the hall: existing piano, harp or violin, lute and space to dance. Light refreshments only; finish at 20:00. If travel is delayed Evren and Seraphine miss it.",
              "source": "weekly-event",
              "eventId": "music-evening"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.lira",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.lira",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.lira",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "site.landing",
              "activity": "Leisurely riverside time after checking the boat; no fishing quota",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.lira",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.lucien",
      "name": "Lucien",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Breakfast with the archive household, then notes",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Archive enquiries and source work",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.archive-school",
              "activity": "Lunch and enthusiastic but bounded discussion",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Translation and records; field visits booked separately",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Late kettle and translation, respecting Wren’s quiet hours",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Breakfast with the archive household, then notes",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Archive enquiries and source work",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.archive-school",
              "activity": "Lunch and enthusiastic but bounded discussion",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Compare a record, an observation and a remembered story; leave room for uncertainty. Edda remains at the library desk.",
              "source": "weekly-event",
              "eventId": "source-debate"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Late kettle and translation, respecting Wren’s quiet hours",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Breakfast with the archive household, then notes",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Archive enquiries and source work",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.archive-school",
              "activity": "Lunch and enthusiastic but bounded discussion",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Translation and records; field visits booked separately",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Late kettle and translation, respecting Wren’s quiet hours",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Breakfast with the archive household, then notes",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.craft-yard",
              "activity": "Examine a carved stone and distinguish tool marks from writing. Archive enquiries have Edda’s usual library desk.",
              "source": "weekly-event",
              "eventId": "tool-marks"
            },
            {
              "phase": "midday",
              "placeId": "site.archive-school",
              "activity": "Lunch and enthusiastic but bounded discussion",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Discuss a safe ward diagram and a disputed source; no live spell test among the books.",
              "source": "weekly-event",
              "eventId": "ward-study"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Late kettle and translation, respecting Wren’s quiet hours",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.archive-household",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.archive-household",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.archive-household",
              "activity": "Read something with no scholarly purpose",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.maelle",
      "name": "Maelle",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.shrine",
              "activity": "Open shrine, water and candles",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.shrine",
              "activity": "Welcome visitors and listen without rushing",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.shrine",
              "activity": "Lunch and a quiet pause",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.shrine",
              "activity": "Appointments, practical care and shrine upkeep",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.maelle",
              "activity": "Private reading and a game; public duties finished",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.shrine",
              "activity": "Open shrine, water and candles",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.shrine",
              "activity": "Welcome visitors and listen without rushing",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.shrine",
              "activity": "Lunch and a quiet pause",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.shrine",
              "activity": "Appointments, practical care and shrine upkeep",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.maelle",
              "activity": "Private reading and a game; public duties finished",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.shrine",
              "activity": "Open shrine, water and candles",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.shrine",
              "activity": "Welcome visitors and listen without rushing",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.shrine",
              "activity": "Lunch and a quiet pause",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Optional weekly practice for the eight initial companions, not an automatic excursion. Scheduled service collections close for this window; Ysra remains available at the clinic.",
              "source": "weekly-event",
              "eventId": "controlled-practice"
            },
            {
              "phase": "evening",
              "placeId": "address.maelle",
              "activity": "Private reading and a game; public duties finished",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.shrine",
              "activity": "Open shrine, water and candles",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.shrine",
              "activity": "Welcome visitors and listen without rushing",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.shrine",
              "activity": "Lunch and a quiet pause",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.inn",
              "activity": "A protected afternoon board game; no grief counselling or work meeting unless they explicitly choose it.",
              "source": "weekly-event",
              "eventId": "ordinary-games"
            },
            {
              "phase": "evening",
              "placeId": "address.maelle",
              "activity": "Private reading and a game; public duties finished",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.maelle",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.maelle",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.maelle",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.maelle",
              "activity": "Rest and recreational reading; shrine remains open for quiet visits",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.maelle",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.maris",
      "name": "Maris",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.apiary",
              "activity": "Check water and hive entrances in the cool",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.apiary",
              "activity": "Hive care when weather permits; honey collection window",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.apiary",
              "activity": "Lunch, flower notes and journal",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.apiary",
              "activity": "A short seated flowering-and-pasture discussion; Odel returns for his late animal check and Khaeli rests afterward.",
              "source": "weekly-event",
              "eventId": "habitat-notes"
            },
            {
              "phase": "evening",
              "placeId": "address.maris",
              "activity": "Brief apiary check at dusk, then supper and reading",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.apiary",
              "activity": "Check water and hive entrances in the cool",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.market",
              "activity": "The larger weekly market: ordinary supplies, rare goods, fish, flowers and honey. Their usual counters post this temporary selling location.",
              "source": "weekly-event",
              "eventId": "market-day"
            },
            {
              "phase": "midday",
              "placeId": "site.apiary",
              "activity": "Lunch, flower notes and journal",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.apiary",
              "activity": "Pack orders and tend forage patches",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.maris",
              "activity": "Brief apiary check at dusk, then supper and reading",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.apiary",
              "activity": "Check water and hive entrances in the cool",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.apiary",
              "activity": "Hive care when weather permits; honey collection window",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.apiary",
              "activity": "Lunch, flower notes and journal",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.apiary",
              "activity": "Pack orders and tend forage patches",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.maris",
              "activity": "Brief apiary check at dusk, then supper and reading",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.apiary",
              "activity": "Check water and hive entrances in the cool",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.apiary",
              "activity": "Hive care when weather permits; honey collection window",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.apiary",
              "activity": "Lunch, flower notes and journal",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.bakery",
              "activity": "Test a tiny honey batch during Roska’s 14:00–16:00 collection window, then share tea without inventing extra orders.",
              "source": "weekly-event",
              "eventId": "honey-and-bread"
            },
            {
              "phase": "evening",
              "placeId": "address.maris",
              "activity": "Brief apiary check at dusk, then supper and reading",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.apiary",
              "activity": "Check hive water and entrances; no honey sales",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.maris",
              "activity": "Breakfast, reading and time away from orders",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.maris",
              "activity": "Private lunch",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.maris",
              "activity": "Read after essential hive checks; no orders",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.maris",
              "activity": "Brief dusk welfare check, then supper and reading",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.pip",
      "name": "Merrit",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.mushroom-beds",
              "activity": "Clean tools and inspect cultures",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.mushroom-beds",
              "activity": "Harvest, sell produce and prepare delivery boxes",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.mushroom-beds",
              "activity": "Lunch and label specimens accurately",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.mushroom-beds",
              "activity": "Controlled trials and cultivation records",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.pip",
              "activity": "Games, supper and occasional meals without mushrooms",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.mushroom-beds",
              "activity": "Clean tools and inspect cultures",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.mushroom-beds",
              "activity": "Harvest, sell produce and prepare delivery boxes",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.mushroom-beds",
              "activity": "Lunch and label specimens accurately",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.clinic",
              "activity": "Compare a labelled cultivation trial and agree credit and next steps. Apothecary order collection stays available.",
              "source": "weekly-event",
              "eventId": "cultivation-trial"
            },
            {
              "phase": "evening",
              "placeId": "address.pip",
              "activity": "Games, supper and occasional meals without mushrooms",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.mushroom-beds",
              "activity": "Clean tools and inspect cultures",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.mushroom-beds",
              "activity": "Harvest, sell produce and prepare delivery boxes",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.mushroom-beds",
              "activity": "Lunch and label specimens accurately",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.farm",
              "activity": "Check a small mushroom-compost trial against an ordinary bed, record the result and share credit.",
              "source": "weekly-event",
              "eventId": "soil-trial"
            },
            {
              "phase": "evening",
              "placeId": "address.pip",
              "activity": "Games, supper and occasional meals without mushrooms",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.mushroom-beds",
              "activity": "Clean tools and inspect cultures",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.mushroom-beds",
              "activity": "Harvest, sell produce and prepare delivery boxes",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.mushroom-beds",
              "activity": "Lunch and label specimens accurately",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.inn",
              "activity": "A protected afternoon board game; no grief counselling or work meeting unless they explicitly choose it.",
              "source": "weekly-event",
              "eventId": "ordinary-games"
            },
            {
              "phase": "evening",
              "placeId": "address.pip",
              "activity": "Games, supper and occasional meals without mushrooms",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.mushroom-beds",
              "activity": "Brief culture health and moisture checks, no produce sales",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.pip",
              "activity": "Breakfast and a morning away from experiments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.pip",
              "activity": "A deliberately mushroom-free lunch",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.pip",
              "activity": "A game or time with a friend",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.pip",
              "activity": "Supper and rest",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.elowen",
      "name": "Morwen",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.cemetery",
              "activity": "Quiet rounds and check paths",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.cemetery",
              "activity": "Gardening, remembrance visits and practical help",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.cemetery",
              "activity": "Lunch, then tea with visitors who want company",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.cemetery",
              "activity": "Choose seasonal memorial flowers and discuss the people behind the arrangements.",
              "source": "weekly-event",
              "eventId": "flowers-and-remembrance"
            },
            {
              "phase": "evening",
              "placeId": "address.elowen",
              "activity": "Supper and an ordinary cheerful book",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.cemetery",
              "activity": "Quiet rounds and check paths",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.cemetery",
              "activity": "Gardening, remembrance visits and practical help",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.cemetery",
              "activity": "Lunch, then tea with visitors who want company",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.cemetery",
              "activity": "Care for memorials and seasonal planting",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.elowen",
              "activity": "Supper and an ordinary cheerful book",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.cemetery",
              "activity": "Quiet rounds and check paths",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.cemetery",
              "activity": "Gardening, remembrance visits and practical help",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.cemetery",
              "activity": "Lunch, then tea with visitors who want company",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.cemetery",
              "activity": "Care for memorials and seasonal planting",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.elowen",
              "activity": "Supper and an ordinary cheerful book",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.cemetery",
              "activity": "Quiet rounds and check paths",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.cemetery",
              "activity": "Gardening, remembrance visits and practical help",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.cemetery",
              "activity": "Lunch, then tea with visitors who want company",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.inn",
              "activity": "A protected afternoon board game; no grief counselling or work meeting unless they explicitly choose it.",
              "source": "weekly-event",
              "eventId": "ordinary-games"
            },
            {
              "phase": "evening",
              "placeId": "address.elowen",
              "activity": "Supper and an ordinary cheerful book",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.elowen",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.elowen",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.elowen",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.elowen",
              "activity": "Protected personal time after a short cemetery check",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.elowen",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.nessa",
      "name": "Nessa",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.landing",
              "activity": "Early fishing on familiar waters",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.landing",
              "activity": "Sell the catch and secure the boat",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.landing",
              "activity": "Compare river conditions over lunch; identify hazards without turning it into a long formal meeting.",
              "source": "weekly-event",
              "eventId": "river-safety"
            },
            {
              "phase": "afternoon",
              "placeId": "address.nessa",
              "activity": "Preserve fish and repair household things",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.nessa",
              "activity": "Weather notes and a quiet cup",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.landing",
              "activity": "Early fishing on familiar waters",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.market",
              "activity": "The larger weekly market: ordinary supplies, rare goods, fish, flowers and honey. Their usual counters post this temporary selling location.",
              "source": "weekly-event",
              "eventId": "market-day"
            },
            {
              "phase": "midday",
              "placeId": "site.landing",
              "activity": "Lunch and net repairs",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "address.nessa",
              "activity": "Preserve fish and repair household things",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.nessa",
              "activity": "Weather notes and a quiet cup",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.landing",
              "activity": "Early fishing on familiar waters",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.landing",
              "activity": "Sell the catch and secure the boat",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.landing",
              "activity": "Lunch and net repairs",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "address.nessa",
              "activity": "Preserve fish and repair household things",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.nessa",
              "activity": "Weather notes and a quiet cup",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.landing",
              "activity": "Early fishing on familiar waters",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.landing",
              "activity": "Sell the catch and secure the boat",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.landing",
              "activity": "Lunch and net repairs",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "address.nessa",
              "activity": "Preserve fish and repair household things",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.nessa",
              "activity": "Weather notes and a quiet cup",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.nessa",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.nessa",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.nessa",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.nessa",
              "activity": "Household mending for herself; no routine catch to deliver",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.nessa",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.nils",
      "name": "Nils",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.nils",
              "activity": "Breakfast and clear yesterday’s clutter",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.tinkerer",
              "activity": "Start oldest repair; predictable customer intake",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.tinkerer",
              "activity": "Lunch and finish a practical repair before experiments",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.forge",
              "activity": "A bounded repair exchange: handles, fittings and finishing one overdue device. Shops post this location; collections resume next morning.",
              "source": "weekly-event",
              "eventId": "repair-exchange"
            },
            {
              "phase": "evening",
              "placeId": "address.nils",
              "activity": "Small clockwork project, then clear the floor",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.nils",
              "activity": "Breakfast and clear yesterday’s clutter",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.tinkerer",
              "activity": "Start oldest repair; predictable customer intake",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.tinkerer",
              "activity": "Lunch and finish a practical repair before experiments",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.tinkerer",
              "activity": "Test devices and write understandable instructions",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.nils",
              "activity": "Small clockwork project, then clear the floor",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.nils",
              "activity": "Breakfast and clear yesterday’s clutter",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.tinkerer",
              "activity": "Start oldest repair; predictable customer intake",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.tinkerer",
              "activity": "Lunch and finish a practical repair before experiments",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Optional weekly practice for the eight initial companions, not an automatic excursion. Scheduled service collections close for this window; Ysra remains available at the clinic.",
              "source": "weekly-event",
              "eventId": "controlled-practice"
            },
            {
              "phase": "evening",
              "placeId": "address.nils",
              "activity": "Small clockwork project, then clear the floor",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.nils",
              "activity": "Breakfast and clear yesterday’s clutter",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.tinkerer",
              "activity": "Start oldest repair; predictable customer intake",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.tinkerer",
              "activity": "Lunch and finish a practical repair before experiments",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.tinkerer",
              "activity": "Test devices and write understandable instructions",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.nils",
              "activity": "Small clockwork project, then clear the floor",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.nils",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.nils",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.nils",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.nils",
              "activity": "Personal tinkering with no customer queue",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.nils",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.odel",
      "name": "Odel",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.farm",
              "activity": "Milking and animal care with Halric",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.farm",
              "activity": "Dairy work, pasture checks and produce collection",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.farm",
              "activity": "Lunch and cheese turning",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.apiary",
              "activity": "A short seated flowering-and-pasture discussion; Odel returns for his late animal check and Khaeli rests afterward.",
              "source": "weekly-event",
              "eventId": "habitat-notes"
            },
            {
              "phase": "evening",
              "placeId": "address.farmhouse",
              "activity": "Supper with Halric, carving or a quietly competitive game",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.farm",
              "activity": "Milking and animal care with Halric",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.farm",
              "activity": "Dairy work, pasture checks and produce collection",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.farm",
              "activity": "Lunch and cheese turning",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.inn",
              "activity": "A short tasting of the next cheese batch before supper preparation; Odel returns for animal care.",
              "source": "weekly-event",
              "eventId": "dairy-tasting"
            },
            {
              "phase": "evening",
              "placeId": "address.farmhouse",
              "activity": "Supper with Halric, carving or a quietly competitive game",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.farm",
              "activity": "Milking and animal care with Halric",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.forest-work",
              "activity": "A short accessible grove meeting about coppice and grazing boundaries. Odel completes morning milking first; no active charcoal burn during this visit.",
              "source": "weekly-event",
              "eventId": "forest-agreement"
            },
            {
              "phase": "midday",
              "placeId": "site.farm",
              "activity": "Lunch and cheese turning",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.farm",
              "activity": "Pasture care, dairy records and second animal check",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.farmhouse",
              "activity": "Supper with Halric, carving or a quietly competitive game",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.farm",
              "activity": "Milking and animal care with Halric",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.farm",
              "activity": "Dairy work, pasture checks and produce collection",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.farm",
              "activity": "Lunch and cheese turning",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.farm",
              "activity": "Pasture care, dairy records and second animal check",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.farmhouse",
              "activity": "Supper with Halric, carving or a quietly competitive game",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.farm",
              "activity": "Essential milking and animal care; no produce counter",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "site.farm",
              "activity": "Secure milk and check animal welfare, then rest",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.farmhouse",
              "activity": "Lunch with Halric",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "site.farm",
              "activity": "Essential animal check and cheese care, with pasture sketching between",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.farmhouse",
              "activity": "Share supper and a small game; Halric cooks after Odel’s final animal check.",
              "source": "weekly-event",
              "eventId": "family-supper"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.orin",
      "name": "Orin",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.market",
              "activity": "Receive ordinary stock and arrange stall",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.market",
              "activity": "Reliable everyday supplies and trade",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.market",
              "activity": "Lunch followed by a short collection window",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.market",
              "activity": "Serve customers, then balance accounts before closing",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.orin",
              "activity": "Supper; stop calculating the value of every gift",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.market",
              "activity": "Receive ordinary stock and arrange stall",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.market",
              "activity": "The larger weekly market: ordinary supplies, rare goods, fish, flowers and honey. Their usual counters post this temporary selling location.",
              "source": "weekly-event",
              "eventId": "market-day"
            },
            {
              "phase": "midday",
              "placeId": "site.market",
              "activity": "Lunch followed by a short collection window",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.market",
              "activity": "Serve customers, then balance accounts before closing",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.orin",
              "activity": "Supper; stop calculating the value of every gift",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.market",
              "activity": "Receive ordinary stock and arrange stall",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.market",
              "activity": "Reliable everyday supplies and trade",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.market",
              "activity": "Lunch followed by a short collection window",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.market",
              "activity": "Serve customers, then balance accounts before closing",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.orin",
              "activity": "Supper; stop calculating the value of every gift",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.market",
              "activity": "Receive ordinary stock and arrange stall",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.market",
              "activity": "Reliable everyday supplies and trade",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.market",
              "activity": "Lunch followed by a short collection window",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.market",
              "activity": "Serve customers, then balance accounts before closing",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.orin",
              "activity": "Supper; stop calculating the value of every gift",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.orin",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.orin",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.orin",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.orin",
              "activity": "An afternoon with no business callers",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.orin",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.riven",
      "name": "Riven",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.riven",
              "activity": "Late breakfast and tune the lute",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.green",
              "activity": "Practice and work on an unfinished song",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch and listen without turning everything into material",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.green",
              "activity": "Rehearse or take a listening walk",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "A short informal set on Days 1 and 3; home early on Days 2 and 5",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.riven",
              "activity": "Late breakfast and tune the lute",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.green",
              "activity": "Practice and work on an unfinished song",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch and listen without turning everything into material",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.green",
              "activity": "Rehearse or take a listening walk",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.riven",
              "activity": "An evening at home with no public performance.",
              "source": "exception"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.riven",
              "activity": "Late breakfast and tune the lute",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.green",
              "activity": "Practice and work on an unfinished song",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch and listen without turning everything into material",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Exchange an unfinished story in private; Riven does not perform it without permission.",
              "source": "weekly-event",
              "eventId": "books-without-performance"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "A short informal set on Days 1 and 3; home early on Days 2 and 5",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.riven",
              "activity": "Late breakfast and tune the lute",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.green",
              "activity": "Practice and work on an unfinished song",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.inn",
              "activity": "Lunch and listen without turning everything into material",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.green",
              "activity": "Rehearse or take a listening walk",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.hall",
              "activity": "A small optional music evening at the hall: existing piano, harp or violin, lute and space to dance. Light refreshments only; finish at 20:00. If travel is delayed Evren and Seraphine miss it.",
              "source": "weekly-event",
              "eventId": "music-evening"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.riven",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.riven",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.riven",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.riven",
              "activity": "An intentionally ordinary day: laundry, a postcard and no performance",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.riven",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.mira",
      "name": "Roska",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.bakery",
              "activity": "Pre-dawn baking from 04:30; eat breakfast between batches",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.bakery",
              "activity": "Open bread counter and fill ordinary orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "address.mira",
              "activity": "Protected midday rest; counter closed",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.mill",
              "activity": "Compare flour blends and reserve grain. Roska has no afternoon collections today and keeps her midday rest.",
              "source": "weekly-event",
              "eventId": "grain-and-bread"
            },
            {
              "phase": "evening",
              "placeId": "address.mira",
              "activity": "Bitter tea and supper; recipes only by choice; bed by 21:00",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.bakery",
              "activity": "Pre-dawn baking from 04:30; eat breakfast between batches",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.bakery",
              "activity": "Open bread counter and fill ordinary orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "address.mira",
              "activity": "Protected midday rest; counter closed",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.bakery",
              "activity": "Limited prepaid collections from 14:00–16:00, then close",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.mira",
              "activity": "Bitter tea and supper; recipes only by choice; bed by 21:00",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.bakery",
              "activity": "Pre-dawn baking from 04:30; eat breakfast between batches",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.bakery",
              "activity": "Open bread counter and fill ordinary orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "address.mira",
              "activity": "Protected midday rest; counter closed",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.bakery",
              "activity": "Limited prepaid collections from 14:00–16:00, then close",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.mira",
              "activity": "Bitter tea and supper; recipes only by choice; bed by 21:00",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.bakery",
              "activity": "Pre-dawn baking from 04:30; eat breakfast between batches",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.bakery",
              "activity": "Open bread counter and fill ordinary orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "address.mira",
              "activity": "Protected midday rest; counter closed",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.bakery",
              "activity": "Test a tiny honey batch during Roska’s 14:00–16:00 collection window, then share tea without inventing extra orders.",
              "source": "weekly-event",
              "eventId": "honey-and-bread"
            },
            {
              "phase": "evening",
              "placeId": "address.mira",
              "activity": "Bitter tea and supper; recipes only by choice; bed by 21:00",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.mira",
              "activity": "Sleep past her usual baking start; no pre-dawn batch",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.mira",
              "activity": "Bitter tea and breakfast from yesterday’s bread",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.mira",
              "activity": "An unhurried lunch and rest",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.mira",
              "activity": "Read or try a recipe only for pleasure; bakery shut",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.mira",
              "activity": "Quiet supper and an early night if she wants",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.selka",
      "name": "Sabine",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.selka",
              "activity": "Breakfast and choose fabrics",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.tailor",
              "activity": "Fittings, measurements and repair intake",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.tailor",
              "activity": "Lunch away from stitching, then prepare orders",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.tailor",
              "activity": "Discuss a cloth-and-leather commission and test a bold colour combination. Leatherworker counter closed for this booked visit.",
              "source": "weekly-event",
              "eventId": "colour-and-construction"
            },
            {
              "phase": "evening",
              "placeId": "address.selka",
              "activity": "Personal clothes or patchwork, never an automatic second shift",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.selka",
              "activity": "Breakfast and choose fabrics",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.tailor",
              "activity": "Fittings, measurements and repair intake",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.tailor",
              "activity": "Lunch away from stitching, then prepare orders",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.tailor",
              "activity": "Focused sewing; close with an afternoon walk",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.selka",
              "activity": "Personal clothes or patchwork, never an automatic second shift",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.selka",
              "activity": "Breakfast and choose fabrics",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.tailor",
              "activity": "Fittings, measurements and repair intake",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.tailor",
              "activity": "Lunch away from stitching, then prepare orders",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.tailor",
              "activity": "Focused sewing; close with an afternoon walk",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.selka",
              "activity": "Personal clothes or patchwork, never an automatic second shift",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.selka",
              "activity": "Breakfast and choose fabrics",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.tailor",
              "activity": "Fittings, measurements and repair intake",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.tailor",
              "activity": "Lunch away from stitching, then prepare orders",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.tailor",
              "activity": "Focused sewing; close with an afternoon walk",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.hall",
              "activity": "A small optional music evening at the hall: existing piano, harp or violin, lute and space to dance. Light refreshments only; finish at 20:00. If travel is delayed Evren and Seraphine miss it.",
              "source": "weekly-event",
              "eventId": "music-evening"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.selka",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.selka",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.selka",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.selka",
              "activity": "A bold outfit sketch or a day without a needle",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.selka",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.seraphine",
      "name": "Seraphine",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.seraphine",
              "activity": "Breakfast and unpack only after tea",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.market",
              "activity": "Rare-goods stall and provenance conversations",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.market",
              "activity": "Lunch and arrange collections",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.market",
              "activity": "Trade, display cloth and arrange future travel",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.seraphine",
              "activity": "Tea and private correspondence; a real homecoming ritual",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.seraphine",
              "activity": "Breakfast and unpack only after tea",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.market",
              "activity": "The larger weekly market: ordinary supplies, rare goods, fish, flowers and honey. Their usual counters post this temporary selling location.",
              "source": "weekly-event",
              "eventId": "market-day"
            },
            {
              "phase": "midday",
              "placeId": "site.market",
              "activity": "Lunch and arrange collections",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.market",
              "activity": "Trade, display cloth and arrange future travel",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.seraphine",
              "activity": "Tea and private correspondence; a real homecoming ritual",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.stables",
              "activity": "Load and depart together after Fen checks the animal. Their Day 3 morning, midday and afternoon are off-village; return before evening only if the route permits.",
              "source": "weekly-event",
              "eventId": "long-route-outbound"
            },
            {
              "phase": "morning",
              "placeId": null,
              "activity": "Away on the long delivery and buying route. Not available in the village; return is conditional on safe travel.",
              "source": "exception"
            },
            {
              "phase": "midday",
              "placeId": null,
              "activity": "Away on the long delivery and buying route. Not available in the village; return is conditional on safe travel.",
              "source": "exception"
            },
            {
              "phase": "afternoon",
              "placeId": null,
              "activity": "Away on the long delivery and buying route. Not available in the village; return is conditional on safe travel.",
              "source": "exception"
            },
            {
              "phase": "evening",
              "placeId": "address.seraphine",
              "activity": "Tea and private correspondence; a real homecoming ritual",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.seraphine",
              "activity": "Breakfast and unpack only after tea",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.market",
              "activity": "Rare-goods stall and provenance conversations",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.market",
              "activity": "Lunch and arrange collections",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.market",
              "activity": "Trade, display cloth and arrange future travel",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.hall",
              "activity": "A small optional music evening at the hall: existing piano, harp or violin, lute and space to dance. Light refreshments only; finish at 20:00. If travel is delayed Evren and Seraphine miss it.",
              "source": "weekly-event",
              "eventId": "music-evening"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.seraphine",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.seraphine",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.seraphine",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.seraphine",
              "activity": "Unpack personal keepsakes, with no market performance",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.seraphine",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.tamsin",
      "name": "Tamsin",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.tamsin",
              "activity": "Breakfast above the shop and prepare bench",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.leatherworker",
              "activity": "Fittings, repairs and intake",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.leatherworker",
              "activity": "Lunch and review fit notes",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.tailor",
              "activity": "Discuss a cloth-and-leather commission and test a bold colour combination. Leatherworker counter closed for this booked visit.",
              "source": "weekly-event",
              "eventId": "colour-and-construction"
            },
            {
              "phase": "evening",
              "placeId": "address.tamsin",
              "activity": "Sketch a festival shoe or share a meal after closing",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.tamsin",
              "activity": "Breakfast above the shop and prepare bench",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.leatherworker",
              "activity": "Fittings, repairs and intake",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.leatherworker",
              "activity": "Lunch and review fit notes",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.stables",
              "activity": "A short harness fitting and route-gear feedback session; Fen retains animal care and Evren his collection window.",
              "source": "weekly-event",
              "eventId": "harness-feedback"
            },
            {
              "phase": "evening",
              "placeId": "address.tamsin",
              "activity": "Sketch a festival shoe or share a meal after closing",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.tamsin",
              "activity": "Breakfast above the shop and prepare bench",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.leatherworker",
              "activity": "Fittings, repairs and intake",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.leatherworker",
              "activity": "Lunch and review fit notes",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.leatherworker",
              "activity": "Bench work, safe buckles and sole repairs",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.tamsin",
              "activity": "Sketch a festival shoe or share a meal after closing",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.tamsin",
              "activity": "Breakfast above the shop and prepare bench",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.leatherworker",
              "activity": "Fittings, repairs and intake",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.leatherworker",
              "activity": "Lunch and review fit notes",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.leatherworker",
              "activity": "Bench work, safe buckles and sole repairs",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.hall",
              "activity": "A small optional music evening at the hall: existing piano, harp or violin, lute and space to dance. Light refreshments only; finish at 20:00. If travel is delayed Evren and Seraphine miss it.",
              "source": "weekly-event",
              "eventId": "music-evening"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.tamsin",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.tamsin",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.tamsin",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.tamsin",
              "activity": "Rest, colour experiments and wearing comfortable shoes",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.tamsin",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.thorne",
      "name": "Thorne",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.forest-work",
              "activity": "Dawn boundary walk and track notes",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.forest-work",
              "activity": "Foraging and practical work near the known grove meeting point",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.forest-work",
              "activity": "Lunch and check equipment",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Accessible return window, archery and practical lessons",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.thorne",
              "activity": "Early supper and quiet company only by invitation",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.forest-work",
              "activity": "Dawn boundary walk and track notes",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.forest-work",
              "activity": "Foraging and practical work near the known grove meeting point",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.forest-work",
              "activity": "Lunch and check equipment",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Accessible return window, archery and practical lessons",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.thorne",
              "activity": "Early supper and quiet company only by invitation",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.forest-work",
              "activity": "Dawn boundary walk and track notes",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.forest-work",
              "activity": "Foraging and practical work near the known grove meeting point",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.forest-work",
              "activity": "Lunch and check equipment",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Optional weekly practice for the eight initial companions, not an automatic excursion. Scheduled service collections close for this window; Ysra remains available at the clinic.",
              "source": "weekly-event",
              "eventId": "controlled-practice"
            },
            {
              "phase": "evening",
              "placeId": "address.thorne",
              "activity": "Early supper and quiet company only by invitation",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.forest-work",
              "activity": "Dawn boundary walk and track notes",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.forest-work",
              "activity": "Foraging and practical work near the known grove meeting point",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.forest-work",
              "activity": "Lunch and check equipment",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Accessible return window, archery and practical lessons",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.thorne",
              "activity": "Early supper and quiet company only by invitation",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.thorne",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.thorne",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.thorne",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.thorne",
              "activity": "Rest after a short familiar boundary check",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.thorne",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.torren",
      "name": "Torren",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.forest-work",
              "activity": "Early woodlot and equipment inspection",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.forest-work",
              "activity": "Managed cutting, coppice and scheduled charcoal work",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Bring timber or fuel only after leaving the burn safe",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.forest-work",
              "activity": "Woodlot records, replanting and safe closure of work",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.carpenters-household",
              "activity": "Wash, cook with Dain and embroider a simple border",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.forest-work",
              "activity": "Early woodlot and equipment inspection",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.forest-work",
              "activity": "Managed cutting, coppice and scheduled charcoal work",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Bring timber or fuel only after leaving the burn safe",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.forest-work",
              "activity": "Woodlot records, replanting and safe closure of work",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.carpenters-household",
              "activity": "Wash, cook with Dain and embroider a simple border",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.forest-work",
              "activity": "Early woodlot and equipment inspection",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.forest-work",
              "activity": "A short accessible grove meeting about coppice and grazing boundaries. Odel completes morning milking first; no active charcoal burn during this visit.",
              "source": "weekly-event",
              "eventId": "forest-agreement"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Bring timber or fuel only after leaving the burn safe",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.forest-work",
              "activity": "Woodlot records, replanting and safe closure of work",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.carpenters-household",
              "activity": "Wash, cook with Dain and embroider a simple border",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.forest-work",
              "activity": "Early woodlot and equipment inspection",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.forest-work",
              "activity": "Managed cutting, coppice and scheduled charcoal work",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Bring timber or fuel only after leaving the burn safe",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.forest-work",
              "activity": "Woodlot records, replanting and safe closure of work",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.carpenters-household",
              "activity": "Wash, cook with Dain and embroider a simple border",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.carpenters-household",
              "activity": "Breakfast; no burn started that would require a Hearthday work shift",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.carpenters-household",
              "activity": "Household chores and a geometric embroidery border",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.carpenters-household",
              "activity": "Private lunch",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.carpenters-household",
              "activity": "Careful cooking and household time; any unavoidable live burn takes safety priority",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.carpenters-household",
              "activity": "Cook an unhurried household supper together, with no customer appointments.",
              "source": "weekly-event",
              "eventId": "home-cooking"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.tovin",
      "name": "Tovin",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.brewery",
              "activity": "Check fermentations and start planned brew",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.brewery",
              "activity": "Brewing, stock and collection orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.brewery",
              "activity": "Lunch and record the batch honestly",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.brewery",
              "activity": "Clean equipment, prepare deliveries and close counter",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "Short social visit on ordinary workdays; home afterward for quiet tea",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.brewery",
              "activity": "Check fermentations and start planned brew",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.brewery",
              "activity": "Brewing, stock and collection orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.brewery",
              "activity": "Lunch and record the batch honestly",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.brewery",
              "activity": "Clean equipment, prepare deliveries and close counter",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "Short social visit on ordinary workdays; home afterward for quiet tea",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.brewery",
              "activity": "Check fermentations and start planned brew",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.brewery",
              "activity": "Brewing, stock and collection orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.brewery",
              "activity": "Lunch and compare grain choices for a small trial brew. Mill collections pause for the posted lunch break.",
              "source": "weekly-event",
              "eventId": "brew-and-grain"
            },
            {
              "phase": "afternoon",
              "placeId": "site.brewery",
              "activity": "Clean equipment, prepare deliveries and close counter",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "Short social visit on ordinary workdays; home afterward for quiet tea",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.brewery",
              "activity": "Check fermentations and start planned brew",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.brewery",
              "activity": "Brewing, stock and collection orders",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.brewery",
              "activity": "Lunch and record the batch honestly",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.brewery",
              "activity": "Clean equipment, prepare deliveries and close counter",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.inn",
              "activity": "Short social visit on ordinary workdays; home afterward for quiet tea",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.brewery",
              "activity": "Essential fermentation and safety checks; no collections or sales",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.tovin",
              "activity": "Breakfast and quiet time",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.tovin",
              "activity": "An unhurried lunch",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.tovin",
              "activity": "Rest after any necessary fermentation check",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.tovin",
              "activity": "Private supper and quiet tea; inn closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.vela",
      "name": "Vela",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.craft-yard",
              "activity": "Prepare stone and tools in the cool",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.craft-yard",
              "activity": "Stonework and a predictable consultation hour",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Shared lunch and review restoration details",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.craft-yard",
              "activity": "Measured restoration or drawings; inspections booked from here",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.vela",
              "activity": "Draw by the hearth and enjoy slow conversation",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.craft-yard",
              "activity": "Prepare stone and tools in the cool",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.craft-yard",
              "activity": "Stonework and a predictable consultation hour",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Shared lunch and review restoration details",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.craft-yard",
              "activity": "Measured restoration or drawings; inspections booked from here",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.vela",
              "activity": "Draw by the hearth and enjoy slow conversation",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.craft-yard",
              "activity": "Prepare stone and tools in the cool",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.craft-yard",
              "activity": "Review one real repair, access and materials. Hall listening hours move to the yard today; ordinary craft enquiries still fit around it.",
              "source": "weekly-event",
              "eventId": "structural-review"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Shared lunch and review restoration details",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.watch-training",
              "activity": "Optional weekly practice for the eight initial companions, not an automatic excursion. Scheduled service collections close for this window; Ysra remains available at the clinic.",
              "source": "weekly-event",
              "eventId": "controlled-practice"
            },
            {
              "phase": "evening",
              "placeId": "address.vela",
              "activity": "Draw by the hearth and enjoy slow conversation",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "site.craft-yard",
              "activity": "Prepare stone and tools in the cool",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.craft-yard",
              "activity": "Examine a carved stone and distinguish tool marks from writing. Archive enquiries have Edda’s usual library desk.",
              "source": "weekly-event",
              "eventId": "tool-marks"
            },
            {
              "phase": "midday",
              "placeId": "site.craft-yard",
              "activity": "Shared lunch and review restoration details",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.craft-yard",
              "activity": "Measured restoration or drawings; inspections booked from here",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.vela",
              "activity": "Draw by the hearth and enjoy slow conversation",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.vela",
              "activity": "Sleep, breakfast and a slow start; no work opening",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.vela",
              "activity": "Private household time or a hobby; no sales, collections or appointments",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.vela",
              "activity": "Lunch from provisions bought before Hearthday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.vela",
              "activity": "A soft blanket, personal drawing and no stone orders",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.vela",
              "activity": "Private supper, reading or quiet company; workplaces remain closed",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.nyx",
      "name": "Vesper",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.nyx",
              "activity": "Sleep later after observation; unhurried breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "address.nyx",
              "activity": "Late morning notes and consultations by appointment",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.market",
              "activity": "Ordinary errands, lunch and an unexpected pastry",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "address.nyx",
              "activity": "Compare observations and rest before evening work",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.stargazing",
              "activity": "Observe at the ridge; return home about 22:00",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.nyx",
              "activity": "Sleep later after observation; unhurried breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "address.nyx",
              "activity": "Late morning notes and consultations by appointment",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.market",
              "activity": "Ordinary errands, lunch and an unexpected pastry",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Compare a record, an observation and a remembered story; leave room for uncertainty. Edda remains at the library desk.",
              "source": "weekly-event",
              "eventId": "source-debate"
            },
            {
              "phase": "evening",
              "placeId": "site.stargazing",
              "activity": "Observe at the ridge; return home about 22:00",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.nyx",
              "activity": "Sleep later after observation; unhurried breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "address.nyx",
              "activity": "Late morning notes and consultations by appointment",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.market",
              "activity": "Ordinary errands, lunch and an unexpected pastry",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "address.nyx",
              "activity": "Compare observations and rest before evening work",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.stargazing",
              "activity": "Observe at the ridge; return home about 22:00",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.nyx",
              "activity": "Sleep later after observation; unhurried breakfast",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "address.nyx",
              "activity": "Late morning notes and consultations by appointment",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.market",
              "activity": "Ordinary errands, lunch and an unexpected pastry",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "address.nyx",
              "activity": "Compare observations and rest before evening work",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "site.stargazing",
              "activity": "Observe at the ridge; return home about 22:00",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.nyx",
              "activity": "Sleep later after observation",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.nyx",
              "activity": "Unhurried breakfast; no consultations",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.nyx",
              "activity": "Lunch from supplies bought on Bloomday",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.nyx",
              "activity": "Rest and ordinary surprises, without predictions on demand",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.nyx",
              "activity": "Quiet evening; stargazing only for pleasure and if safe",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.wren",
      "name": "Wren",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Breakfast with Elian and walk together",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Morning lessons on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.archive-school",
              "activity": "Lunch and agreed reading supervision with Edda on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Projects and play with Elian; visits only with an agreed adult",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Family supper, paper creatures and reading; bed at 20:00",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Breakfast with Elian and walk together",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Morning lessons on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.archive-school",
              "activity": "Lunch and agreed reading supervision with Edda on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Projects and play with Elian; visits only with an agreed adult",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Family supper, paper creatures and reading; bed at 20:00",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Breakfast with Elian and walk together",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Morning lessons on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.archive-school",
              "activity": "Lunch and agreed reading supervision with Edda on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.green",
              "activity": "An afternoon of running games and drawing landmarks together; Elian remains responsible for supervision.",
              "source": "weekly-event",
              "eventId": "green-outing"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Family supper, paper creatures and reading; bed at 20:00",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Breakfast with Elian and walk together",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.archive-school",
              "activity": "Morning lessons on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.archive-school",
              "activity": "Lunch and agreed reading supervision with Edda on Days 1–4",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.archive-school",
              "activity": "Projects and play with Elian; visits only with an agreed adult",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Family supper, paper creatures and reading; bed at 20:00",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.archive-household",
              "activity": "Breakfast with Elian without a school bell",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.archive-household",
              "activity": "Paper models and mapmaking with Elian",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "site.green",
              "activity": "Family picnic with Elian, who remains responsible for supervision",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "site.green",
              "activity": "Running games and paper creatures with Elian",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.archive-household",
              "activity": "Family supper and reading; bed at 20:00",
              "source": "hearthday"
            }
          ]
        }
      ]
    },
    {
      "residentId": "villager.ysra",
      "name": "Ysra",
      "days": [
        {
          "day": 1,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.clinic-household",
              "activity": "Breakfast and review the clinic list",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.clinic",
              "activity": "Appointments and walk-in assessment",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.clinic",
              "activity": "Lunch and stock handover with Ivara",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.clinic",
              "activity": "Booked house calls; a notice gives return time and contact arrangements",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.clinic-household",
              "activity": "Off-duty supper, reading or a short river walk",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 2,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.clinic-household",
              "activity": "Breakfast and review the clinic list",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.clinic",
              "activity": "Appointments and walk-in assessment",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.clinic",
              "activity": "Lunch and stock handover with Ivara",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.clinic",
              "activity": "Booked house calls; a notice gives return time and contact arrangements",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.clinic-household",
              "activity": "Off-duty supper, reading or a short river walk",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 3,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.clinic-household",
              "activity": "Breakfast and review the clinic list",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.clinic",
              "activity": "Appointments and walk-in assessment",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.clinic",
              "activity": "Lunch and stock handover with Ivara",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.clinic",
              "activity": "Remain at the clinic for urgent needs while Ivara and Maelle attend practice; house calls booked on other afternoons.",
              "source": "exception"
            },
            {
              "phase": "evening",
              "placeId": "address.clinic-household",
              "activity": "Off-duty supper, reading or a short river walk",
              "source": "baseline"
            }
          ]
        },
        {
          "day": 4,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.clinic-household",
              "activity": "Breakfast and review the clinic list",
              "source": "baseline"
            },
            {
              "phase": "morning",
              "placeId": "site.clinic",
              "activity": "Appointments and walk-in assessment",
              "source": "baseline"
            },
            {
              "phase": "midday",
              "placeId": "site.clinic",
              "activity": "Lunch and stock handover with Ivara",
              "source": "baseline"
            },
            {
              "phase": "afternoon",
              "placeId": "site.clinic",
              "activity": "Booked house calls; a notice gives return time and contact arrangements",
              "source": "baseline"
            },
            {
              "phase": "evening",
              "placeId": "address.clinic-household",
              "activity": "Ysra and Ivara host Hesta for supper and a deliberately terrible card trick. Inn supper is closed today; Agnes handles rooms and cold drinks only, advertised in advance.",
              "source": "weekly-event",
              "eventId": "meal-not-made-by-hesta"
            }
          ]
        },
        {
          "day": 5,
          "slots": [
            {
              "phase": "dawn",
              "placeId": "address.clinic-household",
              "activity": "Breakfast; clear urgent-contact arrangement",
              "source": "hearthday"
            },
            {
              "phase": "morning",
              "placeId": "address.clinic-household",
              "activity": "Off duty, contactable for urgent medical needs; no routine clinic session",
              "source": "hearthday"
            },
            {
              "phase": "midday",
              "placeId": "address.clinic-household",
              "activity": "Lunch and rest",
              "source": "hearthday"
            },
            {
              "phase": "afternoon",
              "placeId": "address.clinic-household",
              "activity": "Read or take a short walk; urgent care overrides plans",
              "source": "hearthday"
            },
            {
              "phase": "evening",
              "placeId": "address.clinic-household",
              "activity": "Private supper and a deliberately terrible card trick",
              "source": "hearthday"
            }
          ]
        }
      ]
    }
  ]
}
