← Occestra
celebrate pack

A retirement lunch for my old English teacher, Marguerite Sandoval, who is leaving after thirty-one years at the same school — the plan

oce_01kyzwhepg221f2x026wfg · created 2026-08-02

pass rate 40%OQS v1.0.0
manifest hash
0xa53079269e92fc6b2118d16d187f747175272b38c663d92ec648b7a781b7dad4
signed by · EIP-712
0x0d63f9EeB86813230B72017444cea16Cd4A453F2

The work

A retirement lunch for my old English teacher, Marguerite Sandoval, who is leaving after thirty-one years at the same school — the plan

plan · json

pass
The structured data, exactly as delivered
{
  "date": "2026-08-14",
  "summary": "Unhurried and riverside. Long table, good light, nobody watching the clock. She spent three decades in a room with no windows, so somewhere with a view matters more than somewhere impressive.\n\nA retirement lunch for my old English teacher, Marguerite Sandoval, who is leaving after thirty-one years at the same school — Porto, 2026-08-14, 14 people.\n4 real candidate venues are shortlisted below, each with the source we found it in. None of them is booked.\nForecast: clear, 17–27°C, 12% chance of rain.",
  "claims": [
    {
      "text": "Miradouro do Largo de Aviz — address not listed in OpenStreetMap. A candidate for \"Unhurried and riverside. Long table, good light, nobody watching the clock. She spent three decades in a room with no windows, so somewhere with a view matters more than somewhere impressive.\". NOT booked, NOT confirmed: call them yourself.",
      "grounded": true,
      "source": {
        "source": "openstreetmap",
        "retrievedAt": "2026-08-02T00:03:50.986Z",
        "url": "https://www.openstreetmap.org/node/1670330650"
      }
    },
    {
      "text": "Miradouro do Terreiro da Sé — address not listed in OpenStreetMap. A candidate for \"Unhurried and riverside. Long table, good light, nobody watching the clock. She spent three decades in a room with no windows, so somewhere with a view matters more than somewhere impressive.\". NOT booked, NOT confirmed: call them yourself.",
      "grounded": true,
      "source": {
        "source": "openstreetmap",
        "retrievedAt": "2026-08-02T00:03:50.986Z",
        "url": "https://www.openstreetmap.org/node/2205918557"
      }
    },
    {
      "text": "Miradouro da Muralha Fernandina — address not listed in OpenStreetMap. A candidate for \"Unhurried and riverside. Long table, good light, nobody watching the clock. She spent three decades in a room with no windows, so somewhere with a view matters more than somewhere impressive.\". NOT booked, NOT confirmed: call them yourself.",
      "grounded": true,
      "source": {
        "source": "openstreetmap",
        "retrievedAt": "2026-08-02T00:03:50.986Z",
        "url": "https://www.openstreetmap.org/node/2319986838"
      }
    },
    {
      "text": "Miradouro Ponte Luiz I — address not listed in OpenStreetMap. A candidate for \"Unhurried and riverside. Long table, good light, nobody watching the clock. She spent three decades in a room with no windows, so somewhere with a view matters more than somewhere impressive.\". NOT booked, NOT confirmed: call them yourself.",
      "grounded": true,
      "source": {
        "source": "openstreetmap",
        "retrievedAt": "2026-08-02T00:03:50.986Z",
        "url": "https://www.openstreetmap.org/node/2319986841"
      }
    },
    {
      "text": "Forecast for 2026-08-14 near Miradouro do Largo de Aviz: clear, 17–27°C, 12% chance of rain.",
      "grounded": true,
      "source": {
        "source": "open-meteo",
        "retrievedAt": "2026-08-02T00:03:51.110Z",
        "url": "https://api.open-meteo.com/v1/forecast?latitude=41.1383118&longitude=-8.6086587&daily=temperature_2m_max,temperature_2m_min,precipitation_probability_max,weather_code&timezone=auto&start_date=2026-08-14&end_date=2026-08-14"
      }
    }
  ],
  "uncertainties": [
    "No venue here is booked. Every one is a candidate you still have to call."
  ],
  "prepChecklist": [
    "Call the venue",
    "Confirm the headcount",
    "Confirm dietary needs"
  ]
}

Running order

schedule · json

fail
The structured data, exactly as delivered
{
  "occasion": "A retirement lunch for my old English teacher, Marguerite Sandoval, who is leaving after thirty-one years at the same school",
  "date": "2026-08-14",
  "city": "Porto",
  "headcount": 14,
  "timezone": "Europe/Lisbon",
  "notes": [
    "All times are local to Porto (Europe/Lisbon). The ISO timestamps are the exact instants; the \"local\" fields are what a guest will read on a clock.",
    "Starts at 12:30 because this is a lunch. Pulled earlier so everything is finished by 15:30, as the brief requires. Held to 12:30 at the earliest, because the brief says nobody can be there before then."
  ],
  "constraints": {
    "earliestStartLocal": "12:30",
    "latestEndLocal": "15:30",
    "statedIn": [
      "Must include: Seat Marguerite facing the water; Leave a gap between courses long enough for people to change seats; One short prepared toast; from a former student; Somewhere quiet enough to hold a conversation across a long table; Start no earlier than 12:30; four guests arrive from Braga at 12:05; Finish by 15:30; two guests have a 16:10 train"
    ]
  },
  "items": [
    {
      "title": "Arrival",
      "start": "2026-08-14T11:30:00.000Z",
      "end": "2026-08-14T12:15:00.000Z",
      "startLocal": "12:30",
      "endLocal": "13:15",
      "venue": {
        "name": "Miradouro do Largo de Aviz",
        "lat": 41.1383118,
        "lng": -8.6086587
      }
    },
    {
      "title": "The main event",
      "start": "2026-08-14T12:20:00.000Z",
      "end": "2026-08-14T14:20:00.000Z",
      "startLocal": "13:20",
      "endLocal": "15:20",
      "venue": {
        "name": "Miradouro do Largo de Aviz",
        "lat": 41.1383118,
        "lng": -8.6086587
      }
    },
    {
      "title": "Goodbyes",
      "start": "2026-08-14T14:25:00.000Z",
      "end": "2026-08-14T14:55:00.000Z",
      "startLocal": "15:25",
      "endLocal": "15:55",
      "venue": {
        "name": "Miradouro do Largo de Aviz",
        "lat": 41.1383118,
        "lng": -8.6086587
      }
    }
  ]
}

Budget

budget · json

pass
The structured data, exactly as delivered
{
  "currency": "USD",
  "total": 420,
  "perHead": 30,
  "lineItems": [
    {
      "label": "Food",
      "amount": 226.8
    },
    {
      "label": "Drinks",
      "amount": 94.5
    },
    {
      "label": "Everything else",
      "amount": 56.7
    },
    {
      "label": "Contingency reserve (10%)",
      "amount": 42
    }
  ],
  "notes": [
    "Amounts are in USD, because that is the currency the budget was given in.",
    "Porto prices in EUR. Venues will quote you in EUR, and no exchange rate is applied here — we do not have a sourced one, and will not invent one. Convert at the rate you actually get.",
    "The 10% reserve is held back deliberately. It is not spare money; it is the money for the thing that goes wrong.",
    "Excludes tips and service charges unless a line item says otherwise."
  ]
}

If it goes wrong

contingency · md

fail

If it goes wrong

· The weather looks workable (12% chance of rain, 17–27°C). Keep an indoor table held until the morning of; do not cancel it early. · The venue cannot take you. Nothing here is booked. Call in this order: 1. Miradouro do Largo de Aviz 2. Miradouro do Terreiro da Sé 3. Miradouro da Muralha Fernandina 4. Miradouro Ponte Luiz I. If the first three are gone, move the time before you move the place. · People do not show. You are planning for 14. Confirm heads 48 hours out; most venues will let you drop a couple of covers that late, and none of them will let you add six. · The constraints you gave us. Owner-established context: Marguerite Sandoval taught English literature for thirty-one years, the last nineteen at the same school, and retires at the end of this month. Eight of the fourteen guests are former students, now between twenty-six and forty-four; the rest are colleagues and her sister. She reads constantly, walks everywhere, and is quietly mortified by attention. She spent three decades teaching in a room with no windows, so a view of the water matters far more to her than anywhere impressive. Half the table have not seen each other in ten years. The point of the afternoon is that they get to talk, not that she gets celebrated at.; Dietary requirements: One guest is coeliac and needs a genuine gluten-free option, not a main course with things removed. Two vegetarians. No other restrictions.; Accessibility requirements: One guest walks with a stick and cannot manage stairs or a steep cobbled approach. Step-free entry from the street and a WC on the same level are required, not preferred. Seating for her near the end of the table so she is not climbing past people.; Must include: Seat Marguerite facing the water; Leave a gap between courses long enough for people to change seats; One short prepared toast; from a former student; Somewhere quiet enough to hold a conversation across a long table; Start no earlier than 12:30; four guests arrive from Braga at 12:05; Finish by 15:30; two guests have a 16:10 train; Must avoid: Any speech from Marguerite; she asked twice; Microphones or amplification of any kind; A staged group photograph at the table; Surprises of any sort; including being handed anything in front of people; Anywhere with stairs at the entrance; Tone requested: Warm and plain, never effusive. She would find anything sentimental embarrassing.. Say this to the kitchen when you book, not when you arrive. · The venue is not booked yet.

A retirement lunch for my old English teacher, Marguerite Sandoval, who is leaving after thirty-one years at the same school — guest guide

guest_guide · html

fail
The page source, exactly as delivered
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>A retirement lunch for my old English teacher, Marguerite Sandoval, who is leaving after thirty-one years at the same school</title>
<style>
  :root { --ground:#FBF6EC; --ink:#F4A259; --accent:#C44536; }
  *{box-sizing:border-box}
  body{margin:0;background:var(--ground);color:var(--ink);font-family:ui-sans-serif,system-ui,sans-serif;line-height:1.55;padding:6vh 6vw}
  main{max-width:36rem;margin:0 auto}
  h1{font-family:ui-serif,Georgia,serif;font-weight:400;font-size:clamp(2rem,6vw,3rem);line-height:1.1;margin:0 0 .4rem}
  .sub{color:var(--accent);font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;margin:0 0 2rem}
  table{width:100%;border-collapse:collapse;margin:0 0 2rem}
  td{padding:.85rem 0;border-top:1px solid rgba(0,0,0,.1);vertical-align:top}
  td.t{width:7.5rem;font-variant-numeric:tabular-nums;color:var(--accent);white-space:nowrap}
  .what{font-weight:600}
  .where{font-size:.9rem;opacity:.75}
  .travel{font-size:.8rem;opacity:.6;margin-top:.25rem}
  h2{font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:2rem 0 .6rem}
  p,li{font-size:.95rem}
  a{color:var(--accent)}
  footer{margin-top:3rem;font-size:.8rem;opacity:.55}
  .note{margin:1.25rem 0 2rem;padding:.85rem 1rem;border-left:3px solid #C44536;background:rgba(0,0,0,.03);font-size:.92rem;line-height:1.55}
</style>
</head>
<body>
<main>
  <h1>A retirement lunch for my old English teacher, Marguerite Sandoval, who is leaving after thirty-one years at the same school</h1>
  <p class="sub">2026-08-14 &middot; Porto &middot; all times local (Europe/Lisbon)</p>

  <!--
    UP FRONT, not buried in the FAQ.
    The guide used to lay out a venue with coordinates and a map pin like settled fact, and
    only admit twelve inches lower that nothing was actually booked. A reader who stops
    before the FAQ walks away believing there is a reservation. Occestra never claims a
    booking it did not make — so the page says so before it says anything else.
  -->
  <p class="note"><strong>Nothing here is booked.</strong> These are real, researched
  candidates — not reservations. The host confirms the venue; until then, treat every
  place and time on this page as a proposal.</p>

  <table>
      <tr>
        <td class="t">12:30–13:15</td>
        <td><div class="what">Arrival</div><div class="where">Miradouro do Largo de Aviz &middot; <a href="https://www.openstreetmap.org/?mlat=41.1383118&mlon=-8.6086587#map=18/41.1383118/-8.6086587">map</a></div></td>
      </tr>
      <tr>
        <td class="t">13:20–15:20</td>
        <td><div class="what">The main event</div><div class="where">Miradouro do Largo de Aviz &middot; <a href="https://www.openstreetmap.org/?mlat=41.1383118&mlon=-8.6086587#map=18/41.1383118/-8.6086587">map</a></div></td>
      </tr>
      <tr>
        <td class="t">15:25–15:55</td>
        <td><div class="what">Goodbyes</div><div class="where">Miradouro do Largo de Aviz &middot; <a href="https://www.openstreetmap.org/?mlat=41.1383118&mlon=-8.6086587#map=18/41.1383118/-8.6086587">map</a></div></td>
      </tr>
  </table>

  <h2>Weather</h2>
  <p>clear, 17–27°C, 12% chance of rain</p>

  <h2>What to wear</h2>
  <p>Unhurried and riverside. Long table, good light, nobody watching the clock. She spent three decades in a room with no windows, so somewhere with a view matters more than somewhere impressive.. Dress for the room, not for the photo.</p>

  <h2>Good to know</h2>
  <ul><li>Dietary: One guest is coeliac and needs a genuine gluten-free option, not a main course with things removed. Two vegetarians. No other restrictions.</li><li>Access: One guest walks with a stick and cannot manage stairs or a steep cobbled approach. Step-free entry from the street and a WC on the same level are required, not preferred. Seating for her near the end of the table so she is not climbing past people.</li><li>Please note: Seat Marguerite facing the water; Leave a gap between courses long enough for people to change seats; One short prepared toast; from a former student; Somewhere quiet enough to hold a conversation across a long table; Start no earlier than 12:30; four guests arrive from Braga at 12:05; Finish by 15:30; two guests have a 16:10 train</li><li>Please avoid: Any speech from Marguerite; she asked twice; Microphones or amplification of any kind; A staged group photograph at the table; Surprises of any sort; including being handed anything in front of people; Anywhere with stairs at the entrance</li></ul>

  <h2>Questions</h2>
  <ul>
    <li><strong>Am I late?</strong> Arrive at the first time above. The schedule has slack, but not much.</li>
    <li><strong>Is it booked?</strong> The host is confirming venues — nothing on this page is a reservation.</li>
  </ul>

  <footer>Made by Occestra. Times and travel are estimates, not routed journeys.</footer>
</main>
</body>
</html>

The Tribunal's report

Every artifact above was graded against the published Occestra Quality Standard — the full report ships with the pack, pass or fail. Read the standard.

planpassfull report
source coveragedate validityuncertainty disclosure
  • CONTRAST_LOWA plan has no text surface; contrast does not apply.
  • DATE_INVALIDPlan date is real and matches the brief.
  • DIM_ASPECT_MISMATCHNot an image.
  • FILE_TOO_LARGENot an image.
  • PALETTE_DRIFTNot an image.
  • POLICY_VIOLATIONFinal copy is clean.
  • SCHEMA_INVALIDArtifact and payload satisfy their schemas.
  • SOURCE_MISSINGEvery grounded claim carries its source and retrieval time.

The critic's notes

  • · All four venue candidates are listed as 'Miradouro' (viewpoints/public squares) rather than restaurants or private dining venues — none of them is a bookable lunch venue with a long table, kitchen, or service staff. The plan does not flag this mismatch, which leaves the requester with four leads that are almost certainly unsuitable for a seated lunch for 14.
  • · Accessibility claims (step-free entry, WC on same level) are not verified for any candidate venue — the plan correctly says nothing is booked, but it also does not flag that accessibility compliance is unconfirmed and must be checked before shortlisting is meaningful.
  • · The prep checklist is generic ('Call the venue', 'Confirm the headcount', 'Confirm dietary needs') and does not reflect the specific hard constraints in the brief: step-free access, gluten-free kitchen capability, quiet enough for conversation across a long table, riverside view, private or semi-private long table for 14.
  • · The weather forecast is sourced and timestamped correctly, but the coordinates used (41.1383118, -8.6086587) are tied to one specific OSM node (Miradouro do Largo de Aviz) — the plan does not note that this forecast applies to that location specifically, not to all four candidates.
schedulefailfull report
  • SCHEDULE_CONSTRAINTThe running order breaks a timing bound the client stated.
  • CONTRAST_LOWA schedule has no text surface; contrast does not apply.
  • DIM_ASPECT_MISMATCHNot an image.
  • FILE_TOO_LARGENot an image.
  • PALETTE_DRIFTNot an image.
  • POLICY_VIOLATIONFinal copy is clean.
  • SCHEMA_INVALIDArtifact and payload satisfy their schemas.
  • SOURCE_MISSINGEvery venue the schedule names is backed by a retrieved source.

The critic's notes

  • · SCHEDULE_CONSTRAINT: The running order breaks a timing bound the client stated.

Disclosed gapsCRITIQUE_UNAVAILABLE — The model critic could not be reached, so these artifacts were checked deterministically but not judged on taste.

budgetpassfull report
budget consistencyuncertainty disclosure
  • BUDGET_SUM_MISMATCHLine items sum to the stated total (420.00).
  • CONTRAST_LOWA budget has no text surface; contrast does not apply.
  • DIM_ASPECT_MISMATCHNot an image.
  • FILE_TOO_LARGENot an image.
  • PALETTE_DRIFTNot an image.
  • POLICY_VIOLATIONFinal copy is clean.
  • SCHEMA_INVALIDArtifact and payload satisfy their schemas.

The critic's notes

  • · Line items sum to 420.0 (226.8 + 94.5 + 56.7 + 42 = 420.0) — arithmetic is correct. Per-head figure of 30 × 14 = 420, consistent. No arithmetic defect found.
  • · Currency note is transparent: USD total given, EUR conversion explicitly deferred to the user. This is handled correctly.
  • · Minor craft note: 'Everything else' is a vague catch-all label. A repair could split it into 'Décor / florals' and 'Coordination / printing' for clarity, but this does not breach a correctness axis.
  • · Contingency is included inside the total (42 is part of the 420), which is standard but worth confirming with the organiser — the note does flag it is 'held back deliberately', so disclosure is adequate.
contingencyfailfull report
contingencyuncertainty disclosure
  • CONTRAST_LOWA contingency has no text surface; contrast does not apply.
  • DIM_ASPECT_MISMATCHNot an image.
  • FILE_TOO_LARGENot an image.
  • PALETTE_DRIFTNot an image.
  • POLICY_VIOLATIONFinal copy is clean.
  • SCHEMA_INVALIDArtifact and payload satisfy their schemas.

The critic's notes

  • · The fallback venue list names four 'Miradouros' — these are viewpoints/public terraces, not restaurants. They cannot hold a private lunch for 14 with dietary accommodations, step-free WCs, and a kitchen. The fallback list is therefore unusable as written.
  • · The instruction 'move the time before you move the place' is unexplained and potentially harmful: the Braga guests arrive at 12:05 and two guests must leave by 15:30 for a 16:10 train, leaving a fixed window. Moving the time is not a free variable and the plan does not acknowledge this.
  • · No fallback addresses the accessibility constraint specifically: if the primary venue fails, the plan gives no guidance on verifying step-free entry and same-level WC at any of the four named alternatives.
  • · No fallback addresses the coeliac guest if the replacement venue cannot provide a genuine gluten-free option — a real and specific risk that goes unmentioned.
  • · The 'The constraints you gave us' bullet is a raw data dump of the original brief pasted verbatim into the contingency document. It is not a contingency item. It adds no fallback logic and will confuse anyone reading this under pressure.
  • · No fallback for the toast: if the named student cannot attend, there is no instruction on who delivers it or whether it is skipped.
  • · No fallback for the weather beyond 'keep an indoor table held' — the plan does not say where that indoor table is, who holds it, or how to confirm it on the morning.
guest_guidefailfull report
source coveragedate validityuncertainty disclosure
  • CONTRAST_LOWBody text does not clear the 4.5:1 legibility floor.
  • TEXT_OVERFLOW_RISKCopy is long enough to overflow its layout slot.
  • DIM_ASPECT_MISMATCHNot an image.
  • FILE_TOO_LARGENot an image.
  • PALETTE_DRIFTNot an image.
  • POLICY_VIOLATIONFinal copy is clean.
  • SCHEMA_INVALIDArtifact and payload satisfy their schemas.

The critic's notes

  • · Weather claim ('clear, 17–27°C, 12% chance of rain') is presented as a specific forecast with no source and no retrieval timestamp. A forecast for 2026-08-14 cannot have been retrieved at brief creation time (2026-08-02) with this precision; it reads as invented data rather than a sourced estimate.
  • · The schedule shows 'Goodbyes' running 15:25–15:55, which overshoots the brief's hard finish of 15:30 and conflicts with the two guests who have a 16:10 train. The end time of 15:55 is inconsistent with the stated constraint.
  • · The 'What to wear' section pastes the vibe description verbatim from the brief ('She spent three decades in a room with no windows…') as guest-facing copy. This is internal planning language, not guidance a guest can act on, and it is tonally odd in a guest guide.
  • · The 'Good to know' section dumps raw brief constraints (do-list and don't-list) verbatim as bullet points. These are organiser instructions, not guest-facing information. Guests do not need to be told 'Seat Marguerite facing the water' or 'Anywhere with stairs at the entrance' — these are venue-selection criteria already resolved (or not) by the host.
  • · The OpenStreetMap coordinates (41.1383118, -8.6086587) point to a specific location in Porto, but no source or verification is cited for whether 'Miradouro do Largo de Aviz' at those coordinates is step-free, has a riverside view, or can seat 14. The venue is presented with a map pin as though confirmed.
  • · CONTRAST_LOW: Body text does not clear the 4.5:1 legibility floor.
  • · TEXT_OVERFLOW_RISK: Copy is long enough to overflow its layout slot.
Pack-level gaps disclosed
  • planner:degradedthe planning model did not return usable JSON (after 2 repairs: Expected ',' or ']' after array element in JSON at position 2026 (line 55 column 6)); this plan uses a generic shape rather than one designed for your occasion
  • CRITIQUE_UNAVAILABLEThe model critic could not be reached, so these artifacts were checked deterministically but not judged on taste.

Made by Occestra — every moment, made monumental. Anything here can be independently verified; the seal above is on X Layer mainnet.