← 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_01kz1gwx8zfha8j3ks2xp3 · created 2026-08-02

pass rate 60%OQS v1.0.0
manifest hash
0xb98602d2d242a368a3946fcab031ac3ef497b777f0fb64b584b130de13c2a49f
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 table among people who love language — the kind of lunch she would have assigned as a setting in a short story.\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 shaded terrace, lon\". NOT booked, NOT confirmed: call them yourself.",
      "grounded": true,
      "source": {
        "source": "openstreetmap",
        "retrievedAt": "2026-08-02T15:18:52.397Z",
        "url": "https://www.openstreetmap.org/node/747035354"
      }
    },
    {
      "text": "Coquille — address not listed in OpenStreetMap. A candidate for \"restaurant with a private dining room or shaded terrace, lon\". NOT booked, NOT confirmed: call them yourself.",
      "grounded": true,
      "source": {
        "source": "openstreetmap",
        "retrievedAt": "2026-08-02T15:18:52.397Z",
        "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 shaded terrace, lon\". NOT booked, NOT confirmed: call them yourself.",
      "grounded": true,
      "source": {
        "source": "openstreetmap",
        "retrievedAt": "2026-08-02T15:18:52.397Z",
        "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 shaded terrace, lon\". NOT booked, NOT confirmed: call them yourself.",
      "grounded": true,
      "source": {
        "source": "openstreetmap",
        "retrievedAt": "2026-08-02T15:18:52.397Z",
        "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 and collect the two vegetarians' names so the venue can seat and serve them without fuss",
    "Contact three to four candidate restaurants in the first week of May and ask specifically: private or semi-private long table for 22, set menu available Saturda",
    "Book the venue and pay any deposit required to hold the room — do not leave this past mid-May for a June date in Marseille",
    "Agree the set menu with the restaurant in writing, confirming vegetarian versions of each course at the same price",
    "Collect €/$ contributions from all 22 guests — set a hard deadline of 1 June to avoid chasing during the week before",
    "Source or commission the collective notebook: a proper hardback, blank inside, with Marguerite's name and dates on the cover",
    "Write a brief note to each guest explaining the notebook ritual — one handwritten line each, no speeches — so they arrive prepared",
    "Choose and order the group gift; allow time for delivery or assembly before the 19th",
    "Design and print simple menus for the table — one per place setting — listing courses and noting which dishes are vegetarian",
    "Confirm the final headcount with the restaurant 72 hours before and reconfirm the arrival time of 12:30"
  ]
}

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 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, aperitifs, and guests finding each other — pastis, soft drinks, and a f",
      "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": "Seated lunch: entrée, plat, fromage, dessert — unhurried courses with wine and c",
      "start": "2027-06-19T11:05:00.000Z",
      "end": "2027-06-19T13:05:00.000Z",
      "startLocal": "13:05",
      "endLocal": "15:05",
      "venue": {
        "name": "Ashourya",
        "lat": 43.2952729,
        "lng": 5.3824967
      }
    },
    {
      "title": "Coffee, tea, and a shared moment — guests leave a handwritten line in a collecti",
      "start": "2027-06-19T13:10:00.000Z",
      "end": "2027-06-19T14:10:00.000Z",
      "startLocal": "15:10",
      "endLocal": "16:10",
      "venue": {
        "name": "Ashourya",
        "lat": 43.2952729,
        "lng": 5.3824967
      }
    },
    {
      "title": "Unhurried goodbyes, final embraces, and clearing the table",
      "start": "2027-06-19T14:15:00.000Z",
      "end": "2027-06-19T14:45:00.000Z",
      "startLocal": "16:15",
      "endLocal": "16:45",
      "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 food and non-alcoholic drinks for 22",
      "amount": 1216.8
    },
    {
      "label": "Wine, pastis, and aperitif drinks",
      "amount": 514.8
    },
    {
      "label": "Venue hire or private room fee",
      "amount": 234
    },
    {
      "label": "Gift from the group — a curated set of books or a literary k",
      "amount": 234
    },
    {
      "label": "Printed menus, the collective notebook, pens, and any table",
      "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

fail

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 falls in peak early-summer season in Marseille — restaurants with private rooms for 22 fill weeks in advance; a late booking means losing the best options or being pushed to a back room with n · Midday heat on a south-facing terrace in late June can reach 32–35 °C; an outdoor or semi-outdoor venue without reliable shade or a ceiling fan will make a two-hour lunch physically uncomfortable and · A set menu negotiated verbally but not confirmed in writing is frequently misremembered by the kitchen — the vegetarian alternatives in particular may not materialise as agreed · Contribution collection from 22 people across different life stages (former pupils, current colleagues) almost always stalls; two or three non-payers can leave the organiser covering a significant sho · The 'no speeches' instruction will be ignored by at least one person unless guests are briefed in advance and the notebook ritual gives that impulse somewhere else to go

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, aperitifs, and guests finding each other — pastis, soft drinks, and a f</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–15:05</td>
        <td><div class="what">Seated lunch: entrée, plat, fromage, dessert — unhurried courses with wine and c</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:10–16:10</td>
        <td><div class="what">Coffee, tea, and a shared moment — guests leave a handwritten line in a collecti</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">16:15–16:45</td>
        <td><div class="what">Unhurried goodbyes, final embraces, and clearing the table</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

  • · L'entrecôte is listed at '14 Avenue de la Corse' but the OSM node cited (449112905) is the only source for this address — acceptable as sourced, but the address string is truncated in the claim text and may be incomplete; worth verifying before guest communications are drafted.
  • · Coquille and Le Planète have no address listed — the plan correctly notes this, but guests or the organiser cannot locate these venues without further research; the repairBrief asks the generator to flag this gap explicitly in the prepChecklist.
  • · The prepChecklist item about contacting restaurants is truncated mid-sentence ('set menu available Saturda') — this is a copy defect that should be repaired.
schedulefailfull report
schedule feasibilitydate validitysource coverageuncertainty disclosure
  • 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

  • · The final item ends at 16:45 local time, which breaches the 'finished by 16:30' constraint stated in the brief. The artifact presents this as the running order without flagging the overrun.
  • · The venue 'Ashourya' is referenced by OSM node but no opening hours, booking status, or private-hire availability for a 22-person lunch are confirmed or disclosed as unconfirmed.
  • · The artifact presents the venue and the full running order as settled fact — no item is marked as provisional, unbooked, or subject to confirmation.
  • · SCHEDULE_CONSTRAINT: The running order breaks a timing bound the client stated.
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

  • · Per-head figure of 118.18 is correct (2600 ÷ 22 = 118.18). Line items sum: 1216.80 + 514.80 + 234.00 + 234.00 + 140.40 + 260.00 = 2600.00. Arithmetic is clean.
  • · Currency is USD for an event in Marseille (France). The notes field acknowledges this explicitly ('Amounts are in USD, because that is the currency the budget was given in'), which is an honest disclosure rather than a silent mismatch. No conversion rates are implied as locked in, so this is a mild craft concern rather than a correctness failure.
  • · Two line-item labels are truncated mid-word: 'a literary k' and 'any table' — the full descriptions are cut off. This is a data-integrity issue that could cause confusion but does not affect the arithmetic.
  • · The plan does not state that venue hire, the gift, or the set menu are unbooked estimates. However, no line item claims to be confirmed or booked, and the notes do not assert anything as settled. The disclosure is thin but not affirmatively false.
  • · USD in a Marseille context introduces real exchange-rate uncertainty that is not flagged. A note that actual EUR costs will vary with the rate at time of payment would strengthen the plan.
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

  • · Several bullet points are truncated mid-sentence (e.g. 'being pushed to a back room with n', 'physically uncomfortable and', 'leave the organiser covering a significant sho') — these are not usable fallbacks, they are broken text fragments. A contingency plan must be readable to be actionable.
  • · The venue list (Ashourya, Coquille, L'entrecôte, Le Planète) is presented as a call-order fallback, which is good, but no fallback is given for the scenario where all four are unavailable — the chain terminates without a floor.
  • · 'Move the time before you move the place' is a useful heuristic but not a fallback: it does not say what time to move to, or what the constraint boundary is (nothing before 12:30, finished by 16:30 — moving the start time has a hard floor).
  • · The contribution-collection risk is identified but the truncation means no mitigation is given. The speech risk is identified and a partial mitigation is named ('notebook ritual') but that ritual is not defined anywhere in this artifact, making the reference unactionable without the other deliverables.
  • · The weather fallback ('hold an indoor option') is correct in principle but does not name what the indoor option is or how to secure it — it is advice, not a contingency.
  • · The heat/terrace risk bullet is truncated and delivers no actionable fallback at all.
  • · The written-confirmation risk bullet is truncated and delivers no actionable fallback at all.
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

  • · Several schedule entries appear truncated mid-sentence (e.g. 'aperitifs, and guests finding each other — pastis, soft drinks, and a f'; 'entrée, plat, fromage, dessert — unhurried courses with wine and c'; 'guests leave a handwritten line in a collecti') — these are rendering artefacts that leave guests with incomplete information.
  • · The 'What to wear' section pastes the raw vibe string verbatim ('warm, literary, a long table and no speeches after the coffee') rather than translating it into guest-facing dress guidance.
  • · The schedule runs to 16:45 but the brief constraint is 'finished by 16:30' — the final row (16:15–16:45) breaches the stated constraint by 15 minutes.
  • · The OpenStreetMap coordinates (43.2952729, 5.3824967) are presented without a source or retrieval timestamp, and no source is cited for the venue name 'Ashourya' or its suitability for 22 covers — however, the prominent disclaimer that nothing is booked partially mitigates the certainty risk.
  • · 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.