← Occestra
celebrate pack

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

oce_01kz1h86j4hb52kfmxb2sk · created 2026-08-02

pass rate 100%OQS v1.0.0
manifest hash
0xd525106a68b1f16993cbe9294c6269144395fb40a2f83cf36a337837f8b74090
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 school — the plan

plan · json

pass
The structured data, exactly as delivered
{
  "date": "2027-06-19",
  "summary": "Give Marguerite a long, unhurried lunch where the conversation is the event — food and wine that earn their place, a table that invites lingering, and the tributes woven into the meal rather than bolted on at the end.\n\nA retirement lunch for my old English teacher, Marguerite Sandoval, who is leaving after thirty-one years at the school — Marseille, 2027-06-19, 22 people.\n4 real candidate venues are shortlisted below, each with the source we found it in. None of them is booked.\nThe date is beyond any real forecast horizon, so this plan does not claim to know the weather.",
  "claims": [
    {
      "text": "Ashourya — 26 Cours Julien, Marseille, 13006. A candidate for \"restaurant with a private dining room or separate long\". NOT booked, NOT confirmed: call them yourself.",
      "grounded": true,
      "source": {
        "source": "openstreetmap",
        "retrievedAt": "2026-08-02T15:25:02.330Z",
        "url": "https://www.openstreetmap.org/node/747035354"
      }
    },
    {
      "text": "Coquille — address not listed in OpenStreetMap. A candidate for \"restaurant with a private dining room or separate long\". NOT booked, NOT confirmed: call them yourself.",
      "grounded": true,
      "source": {
        "source": "openstreetmap",
        "retrievedAt": "2026-08-02T15:25:02.330Z",
        "url": "https://www.openstreetmap.org/node/364622149"
      }
    },
    {
      "text": "L'entrecôte — 14 Avenue de la Corse. A candidate for \"restaurant with a private dining room or separate long\". NOT booked, NOT confirmed: call them yourself.",
      "grounded": true,
      "source": {
        "source": "openstreetmap",
        "retrievedAt": "2026-08-02T15:25:02.330Z",
        "url": "https://www.openstreetmap.org/node/449112905"
      }
    },
    {
      "text": "Le Planète — address not listed in OpenStreetMap. A candidate for \"restaurant with a private dining room or separate long\". NOT booked, NOT confirmed: call them yourself.",
      "grounded": true,
      "source": {
        "source": "openstreetmap",
        "retrievedAt": "2026-08-02T15:25:02.330Z",
        "url": "https://www.openstreetmap.org/node/535284094"
      }
    }
  ],
  "uncertainties": [
    "No venue here is booked. Every one is a candidate you still have to call.",
    "The weather for this date cannot be known yet."
  ],
  "prepChecklist": [
    "Confirm headcount of 22 and lock the date — contact at least four candidate restaurants this week, as June weekends fill fast in Marseille",
    "When booking, declare: table for 22, private or semi-private space, two vegetarian covers, service start no earlier than 12:30, table held until 16:30",
    "Negotiate a set menu in writing — confirm the vegetarian main is a full dish, not a reduced version of the meat plate",
    "Collect written tributes, favourite quotes, or short readings from former pupils — assign one person to gather these and format them for the table",
    "Design and print place cards and a simple one-page menu card; include Marguerite's years of service and a chosen epigraph",
    "Organise the group gift — if a bookshop voucher, source from a Marseille independent bookseller and have it wrapped before the day",
    "Assign a deputy host to manage arrivals and seat guests while you liaise with the restaurant on the day",
    "Confirm final headcount with the restaurant 72 hours before and restate the vegetarian requirement in writing",
    "On the day: arrive 20 minutes before guests, check table layout, confirm kitchen timing with the manager, place cards and menus on the table before anyone sits"
  ]
}

Running order

schedule · json

pass
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 school",
  "date": "2027-06-19",
  "city": "Marseille",
  "headcount": 22,
  "timezone": "Europe/Paris",
  "notes": [
    "All times are local to Marseille (Europe/Paris). 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."
  ],
  "constraints": {
    "earliestStartLocal": "12:30",
    "latestEndLocal": "16:30",
    "statedIn": [
      "nothing before 12:30",
      "finished by 16:30"
    ]
  },
  "items": [
    {
      "title": "Arrival & aperitif — guests settle, find their seats",
      "start": "2027-06-19T10:30:00.000Z",
      "end": "2027-06-19T11:00:00.000Z",
      "startLocal": "12:30",
      "endLocal": "13:00",
      "venue": {
        "name": "Ashourya",
        "lat": 43.2952729,
        "lng": 5.3824967
      }
    },
    {
      "title": "Starter course — place cards distributed, first toasts informal",
      "start": "2027-06-19T11:05:00.000Z",
      "end": "2027-06-19T11:40:00.000Z",
      "startLocal": "13:05",
      "endLocal": "13:40",
      "venue": {
        "name": "Ashourya",
        "lat": 43.2952729,
        "lng": 5.3824967
      }
    },
    {
      "title": "Main course — long table conversation, vegetarian mains confirmed plated",
      "start": "2027-06-19T11:45:00.000Z",
      "end": "2027-06-19T12:35:00.000Z",
      "startLocal": "13:45",
      "endLocal": "14:35",
      "venue": {
        "name": "Ashourya",
        "lat": 43.2952729,
        "lng": 5.3824967
      }
    },
    {
      "title": "Cheese board & second wine — literary readings or written tributes passed around",
      "start": "2027-06-19T12:40:00.000Z",
      "end": "2027-06-19T13:10:00.000Z",
      "startLocal": "14:40",
      "endLocal": "15:10",
      "venue": {
        "name": "Ashourya",
        "lat": 43.2952729,
        "lng": 5.3824967
      }
    },
    {
      "title": "Dessert & coffee — gifts presented, no formal speeches",
      "start": "2027-06-19T13:15:00.000Z",
      "end": "2027-06-19T13:50:00.000Z",
      "startLocal": "15:15",
      "endLocal": "15:50",
      "venue": {
        "name": "Ashourya",
        "lat": 43.2952729,
        "lng": 5.3824967
      }
    },
    {
      "title": "Unhurried goodbye — guests drift off, host settles bill",
      "start": "2027-06-19T13:55:00.000Z",
      "end": "2027-06-19T14:15:00.000Z",
      "startLocal": "15:55",
      "endLocal": "16:15",
      "venue": {
        "name": "Ashourya",
        "lat": 43.2952729,
        "lng": 5.3824967
      }
    }
  ]
}

Budget

budget · json

pass
The structured data, exactly as delivered
{
  "currency": "USD",
  "total": 2600,
  "perHead": 118.18,
  "lineItems": [
    {
      "label": "Set menu per head — food and house wine included",
      "amount": 1450.8
    },
    {
      "label": "Supplementary wine and aperitifs",
      "amount": 351
    },
    {
      "label": "Gift for Marguerite — books, bookshop voucher, or framed",
      "amount": 234
    },
    {
      "label": "Printed menus, place cards, table flowers",
      "amount": 163.8
    },
    {
      "label": "Contingency and gratuity",
      "amount": 140.4
    },
    {
      "label": "Contingency reserve (10%)",
      "amount": 260
    }
  ],
  "notes": [
    "Amounts are in USD, because that is the currency the budget was given in.",
    "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

pass

If it goes wrong

· The weather. 2027-06-19 is too far out for any real forecast to exist, so this plan does not pretend to know. Check it about ten days before, and hold an indoor option until you do. · The venue cannot take you. Nothing here is booked. Call in this order: 1. Ashourya 2. Coquille 3. L'entrecôte 4. Le Planète. If the first three are gone, move the time before you move the place. · People do not show. You are planning for 22. 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. two former pupils are vegetarian; nothing before 12:30; finished by 16:30. Say this to the kitchen when you book, not when you arrive. · June 19 is a Saturday in peak Marseille tourist and local-celebration season — a private room for 22 may already be gone at short-notice restaurants; book within days, not weeks · Outdoor or terrace seating in late June can reach 32–35 °C by early afternoon; confirm the space has shade or air conditioning before committing · A set menu agreed verbally may arrive on the day with the vegetarian option swapped or missing — get the exact dish name confirmed in writing · Mistral wind can make terrace dining miserable even in sunshine; if the venue is exposed, identify an indoor fallback within the same booking · Informal tribute-passing can stall or turn awkward if no one has prepared material — the person collecting readings must have a hard deadline of 48 hours before the lunch

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

guest_guide · html

pass
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 school</title>
<style>
  :root { --ground:#F4EFE2; --ink:#3E3428; --accent:#B5623C; }
  *{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 #B5623C;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 school</h1>
  <p class="sub">2027-06-19 &middot; Marseille &middot; all times local (Europe/Paris)</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:00</td>
        <td><div class="what">Arrival &amp; aperitif — guests settle, find their seats</div><div class="where">Ashourya &middot; <a href="https://www.openstreetmap.org/?mlat=43.2952729&mlon=5.3824967#map=18/43.2952729/5.3824967">map</a></div></td>
      </tr>
      <tr>
        <td class="t">13:05–13:40</td>
        <td><div class="what">Starter course — place cards distributed, first toasts informal</div><div class="where">Ashourya &middot; <a href="https://www.openstreetmap.org/?mlat=43.2952729&mlon=5.3824967#map=18/43.2952729/5.3824967">map</a></div></td>
      </tr>
      <tr>
        <td class="t">13:45–14:35</td>
        <td><div class="what">Main course — long table conversation, vegetarian mains confirmed plated</div><div class="where">Ashourya &middot; <a href="https://www.openstreetmap.org/?mlat=43.2952729&mlon=5.3824967#map=18/43.2952729/5.3824967">map</a></div></td>
      </tr>
      <tr>
        <td class="t">14:40–15:10</td>
        <td><div class="what">Cheese board &amp; second wine — literary readings or written tributes passed around</div><div class="where">Ashourya &middot; <a href="https://www.openstreetmap.org/?mlat=43.2952729&mlon=5.3824967#map=18/43.2952729/5.3824967">map</a></div></td>
      </tr>
      <tr>
        <td class="t">15:15–15:50</td>
        <td><div class="what">Dessert &amp; coffee — gifts presented, no formal speeches</div><div class="where">Ashourya &middot; <a href="https://www.openstreetmap.org/?mlat=43.2952729&mlon=5.3824967#map=18/43.2952729/5.3824967">map</a></div></td>
      </tr>
      <tr>
        <td class="t">15:55–16:15</td>
        <td><div class="what">Unhurried goodbye — guests drift off, host settles bill</div><div class="where">Ashourya &middot; <a href="https://www.openstreetmap.org/?mlat=43.2952729&mlon=5.3824967#map=18/43.2952729/5.3824967">map</a></div></td>
      </tr>
  </table>

  <h2>Weather</h2>
  <p>The forecast does not reach this far ahead yet — we will not guess it.</p>

  <h2>What to wear</h2>
  <p>warm, literary, a long table and no speeches after the coffee. Dress for the room, not for the photo.</p>

  <h2>Good to know</h2>
  <ul><li>two former pupils are vegetarian</li><li>nothing before 12:30</li><li>finished by 16:30</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

  • · Two venues (Coquille and Le Planète) have no address listed — the OSM nodes are cited but yield no usable location data for planners; this is flagged but not a scoring failure since the artifact itself acknowledges the gap.
  • · L'entrecôte at 14 Avenue de la Corse is a steakhouse chain format — the artifact does not flag whether it can accommodate a private long table for 22, which is the stated requirement; minor omission but not a correctness failure.
  • · Budget figures, per-head costs, and any pricing claims are entirely absent — the brief requests a budget deliverable and the plan artifact contains none; no price claim is made so no source failure, but the absence is notable for completeness.
schedulepassfull report
schedule feasibilitydate validitysource coverageuncertainty disclosure
  • 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.
  • SCHEDULE_CONSTRAINTRuns 12:30–16:15, inside every timing bound the brief stated.
  • SCHEMA_INVALIDArtifact and payload satisfy their schemas.
  • SOURCE_MISSINGEvery venue the schedule names is backed by a retrieved source.

The critic's notes

  • · The schedule ends at 16:15 local, which is within the 16:30 constraint — this is fine. However, there is a 5-minute gap between each course (e.g., 13:00–13:05, 13:40–13:45) that is unlabelled; these are implicit turnaround minutes and are not a defect, but a note in the artifact would help the generator.
  • · The artifact notes 'vegetarian mains confirmed plated' but no source or booking confirmation is cited for this — it reads as settled fact. This is a mild uncertainty_disclosure concern but not a hard failure since the artifact does not claim a booking exists.
  • · source_coverage: The venue 'Ashourya' is backed by an OpenStreetMap node, but no source covers operating hours, group-booking availability for 22 covers, or pricing — all of which are sourceable claims implicitly relied upon by the schedule. However, since no explicit price or hours claim is stated in this artifact (those may live in the budget artifact), this does not fall below 70.
  • · The ISO UTC timestamps are internally consistent with Europe/Paris (UTC+2 in June 2027), which is correct for CEST.
budgetpassfull report
budget consistencyuncertainty disclosure
  • BUDGET_SUM_MISMATCHLine items sum to the stated total (2600.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

  • · Two separate contingency-flavored line items ('Contingency and gratuity' at $140.40 and 'Contingency reserve (10%)' at $260) sit side by side without distinguishing what each covers — the first appears to bundle gratuity with contingency, which obscures whether service charges are actually excluded as the notes claim.
  • · The gift line item lists three options separated by commas ('books, bookshop voucher, or framed') — the label appears to be truncated ('or framed' is incomplete), which is a copy defect.
contingencypassfull 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 venue fallback list names four restaurants (Ashourya, Coquille, L'entrecôte, Le Planète) without any indication of whether they are real, appropriate, or capable of seating 22 — a reader acting on this list has no basis for confidence in it. This is a craft weakness, not a correctness failure.
  • · The Mistral fallback ('identify an indoor fallback within the same booking') is sound but gives no action step for what to do if the venue has no indoor option — the chain stops there.
  • · The tribute-passing bullet is useful but the 'hard deadline of 48 hours before' instruction names no owner — who enforces it, and what happens if no material arrives?
guest_guidepassfull report
source coveragedate validityuncertainty disclosure
  • TEXT_OVERFLOW_RISKCopy is long enough to overflow its layout slot.
  • CONTRAST_LOWAll body text clears 4.5:1.
  • 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 OpenStreetMap coordinates (43.2952729, 5.3824967) are presented as a map link for Ashourya — if those coordinates are incorrect or fabricated for a venue that may not exist at that location, that is a sourcing concern, but without a confirmed venue booking the link is a candidate reference rather than a settled claim. Scored at floor because no sourceable claim is left entirely bare; the weather section explicitly declines to forecast, and the venue is flagged as unconfirmed throughout.
  • · The 'What to wear' section reproduces the vibe verbatim ('warm, literary, a long table and no speeches after the coffee') as dress guidance, which reads oddly as guest-facing copy — a craft note, not a correctness failure.
  • · The schedule ends at 16:15 for the final goodbye, which is within the 16:30 constraint — consistent and correct.
  • · TEXT_OVERFLOW_RISK: Copy is long enough to overflow its layout slot.
Pack-level gaps disclosed
  • weather:beyond-horizonthe occasion is 321 days out and no real forecast exists that far ahead; the plan says so rather than inventing one

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