Created
July 10, 2026 17:14
-
-
Save redreceipt/d2062bfad8ff1c627273b64a88ee75e3 to your computer and use it in GitHub Desktop.
PR 3518 ICS tenant-routing runtime proof
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!doctype html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> | |
| <title>PR 3518 runtime proof</title> | |
| <style> | |
| :root { | |
| color-scheme: dark; | |
| --bg: #071019; | |
| --panel: #0d1823; | |
| --panel-2: #111f2c; | |
| --line: #243747; | |
| --muted: #91a5b7; | |
| --text: #eef6fc; | |
| --red: #ff6b78; | |
| --red-bg: #32171d; | |
| --green: #55d98b; | |
| --green-bg: #113124; | |
| --blue: #75b9ff; | |
| --amber: #ffc66d; | |
| } | |
| * { | |
| box-sizing: border-box; | |
| } | |
| body { | |
| margin: 0; | |
| background: | |
| radial-gradient(circle at 12% 0%, #12304a 0, transparent 32rem), | |
| linear-gradient(180deg, #071019 0%, #08131d 100%); | |
| color: var(--text); | |
| font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; | |
| } | |
| main { | |
| width: 1360px; | |
| margin: 0 auto; | |
| padding: 54px 58px 60px; | |
| } | |
| .eyebrow { | |
| color: var(--blue); | |
| font-size: 15px; | |
| font-weight: 750; | |
| letter-spacing: 0.12em; | |
| text-transform: uppercase; | |
| } | |
| h1 { | |
| max-width: 980px; | |
| margin: 13px 0 12px; | |
| font-size: 46px; | |
| line-height: 1.08; | |
| letter-spacing: -0.035em; | |
| } | |
| .subtitle { | |
| margin: 0; | |
| color: var(--muted); | |
| font-size: 20px; | |
| line-height: 1.45; | |
| } | |
| .meta { | |
| display: flex; | |
| gap: 10px; | |
| margin-top: 25px; | |
| } | |
| .pill { | |
| border: 1px solid var(--line); | |
| border-radius: 999px; | |
| background: #0b1721; | |
| color: #b8c9d7; | |
| padding: 8px 13px; | |
| font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; | |
| font-size: 13px; | |
| } | |
| .grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 22px; | |
| margin-top: 34px; | |
| } | |
| .panel { | |
| overflow: hidden; | |
| border: 1px solid var(--line); | |
| border-radius: 18px; | |
| background: linear-gradient(180deg, var(--panel-2), var(--panel)); | |
| box-shadow: 0 18px 48px rgb(0 0 0 / 24%); | |
| } | |
| .panel-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 21px 22px; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .panel-title { | |
| margin: 0; | |
| font-size: 22px; | |
| letter-spacing: -0.02em; | |
| } | |
| .state { | |
| border-radius: 999px; | |
| padding: 7px 10px; | |
| font-size: 12px; | |
| font-weight: 800; | |
| letter-spacing: 0.08em; | |
| text-transform: uppercase; | |
| } | |
| .before .state { | |
| background: var(--red-bg); | |
| color: var(--red); | |
| } | |
| .after .state { | |
| background: var(--green-bg); | |
| color: var(--green); | |
| } | |
| .panel-body { | |
| padding: 22px; | |
| } | |
| .label { | |
| margin: 0 0 7px; | |
| color: var(--muted); | |
| font-size: 12px; | |
| font-weight: 800; | |
| letter-spacing: 0.09em; | |
| text-transform: uppercase; | |
| } | |
| .event-title { | |
| margin: 0 0 17px; | |
| font-size: 18px; | |
| font-weight: 720; | |
| line-height: 1.35; | |
| } | |
| code, | |
| pre { | |
| font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; | |
| } | |
| .url { | |
| overflow-wrap: anywhere; | |
| border-radius: 10px; | |
| background: #07111a; | |
| color: #b9d9f5; | |
| padding: 12px 13px; | |
| font-size: 12px; | |
| line-height: 1.55; | |
| } | |
| .arrow { | |
| margin: 16px 0; | |
| color: #567086; | |
| font-size: 21px; | |
| text-align: center; | |
| } | |
| .result { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 16px; | |
| border: 1px solid var(--line); | |
| border-radius: 12px; | |
| background: #0a151f; | |
| padding: 15px 16px; | |
| } | |
| .result + .result { | |
| margin-top: 11px; | |
| } | |
| .request { | |
| color: #c3d1dd; | |
| font-size: 13px; | |
| line-height: 1.4; | |
| } | |
| .status { | |
| flex: none; | |
| border-radius: 8px; | |
| padding: 8px 10px; | |
| font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; | |
| font-size: 13px; | |
| font-weight: 850; | |
| } | |
| .status.bad { | |
| background: var(--red-bg); | |
| color: var(--red); | |
| } | |
| .status.good { | |
| background: var(--green-bg); | |
| color: var(--green); | |
| } | |
| .isolation { | |
| margin-top: 16px; | |
| border-left: 3px solid var(--amber); | |
| border-radius: 0 9px 9px 0; | |
| background: #251f15; | |
| color: #e7d6b8; | |
| padding: 12px 14px; | |
| font-size: 13px; | |
| line-height: 1.55; | |
| } | |
| .ics { | |
| margin: 15px 0 0; | |
| border-radius: 11px; | |
| background: #07111a; | |
| color: #c7d7e3; | |
| padding: 14px; | |
| font-size: 12px; | |
| line-height: 1.55; | |
| white-space: pre-wrap; | |
| } | |
| .conclusion { | |
| display: grid; | |
| grid-template-columns: 40px 1fr; | |
| gap: 15px; | |
| align-items: start; | |
| margin-top: 24px; | |
| border: 1px solid #23583c; | |
| border-radius: 16px; | |
| background: linear-gradient(180deg, #102b20, #0d241b); | |
| padding: 20px 22px; | |
| } | |
| .check { | |
| display: grid; | |
| place-items: center; | |
| width: 40px; | |
| height: 40px; | |
| border-radius: 50%; | |
| background: #174f32; | |
| color: var(--green); | |
| font-size: 24px; | |
| font-weight: 900; | |
| } | |
| .conclusion h2 { | |
| margin: 1px 0 6px; | |
| font-size: 19px; | |
| } | |
| .conclusion p { | |
| margin: 0; | |
| color: #b9d0c2; | |
| font-size: 15px; | |
| line-height: 1.55; | |
| } | |
| footer { | |
| margin-top: 18px; | |
| color: #6f8497; | |
| font-size: 12px; | |
| text-align: right; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <main> | |
| <div class="eyebrow">APO-10370 · PR 3518 · Runtime proof</div> | |
| <h1>ICS URLs now carry the tenant into the public calendar route</h1> | |
| <p class="subtitle"> | |
| A current production Bayside Event isolates the host-routing failure; the rebased review app proves the self-describing URL and public route behavior. | |
| </p> | |
| <div class="meta"> | |
| <span class="pill">candidate 0c64af1c</span> | |
| <span class="pill">review app /version confirmed</span> | |
| <span class="pill">2026-07-10</span> | |
| </div> | |
| <section class="grid"> | |
| <article class="panel before"> | |
| <header class="panel-header"> | |
| <h2 class="panel-title">Production Event path</h2> | |
| <span class="state">Before</span> | |
| </header> | |
| <div class="panel-body"> | |
| <p class="label">Current Bayside event resolves in GraphQL</p> | |
| <p class="event-title">Growth Track: May – Aug 2026 | Lakewood Ranch</p> | |
| <div class="url"> | |
| https://bayside-community-church.production.apollos.app/events/ics/<br />Event:15371bce-ced1-4df4-a689-d3b1ae951d52 | |
| </div> | |
| <div class="arrow">↓</div> | |
| <div class="result"> | |
| <div class="request">GET generated URL<br /><strong>no tenant header</strong></div> | |
| <span class="status bad">404</span> | |
| </div> | |
| <div class="result"> | |
| <div class="request">GET same URL<br /><code>x-church: bayside_community_church</code></div> | |
| <span class="status good">200 calendar</span> | |
| </div> | |
| <div class="isolation"> | |
| The event exists. Supplying only the tenant changes the same request from 404 to valid ICS, isolating tenancy resolution as the failure point. | |
| </div> | |
| </div> | |
| </article> | |
| <article class="panel after"> | |
| <header class="panel-header"> | |
| <h2 class="panel-title">PR 3518 review app</h2> | |
| <span class="state">After</span> | |
| </header> | |
| <div class="panel-body"> | |
| <p class="label">GraphQL now emits a self-describing ICS URL</p> | |
| <p class="event-title">Story Time · EventBlockFeature</p> | |
| <div class="url"> | |
| …/features/event-block-ics/<br />EventBlockFeature:32828e5a-9dab-4a52-add5-28cd2369484c<br /><strong>?church=apollos_demo</strong> | |
| </div> | |
| <div class="arrow">↓</div> | |
| <div class="result"> | |
| <div class="request">GET review-app route<br /><strong>query removed</strong></div> | |
| <span class="status bad">404</span> | |
| </div> | |
| <div class="result"> | |
| <div class="request">GET same review-app route<br /><code>?church=apollos_demo</code></div> | |
| <span class="status good">200 calendar</span> | |
| </div> | |
| <pre class="ics">BEGIN:VEVENT | |
| DTSTART;VALUE=DATE:20260530 | |
| DTEND;VALUE=DATE:20260531 | |
| SUMMARY:Story Time | |
| LOCATION:Downtown Library | |
| END:VEVENT</pre> | |
| </div> | |
| </article> | |
| </section> | |
| <section class="conclusion"> | |
| <div class="check">✓</div> | |
| <div> | |
| <h2>The tenant reaches context creation before the data lookup</h2> | |
| <p> | |
| The public ICS route no longer depends on <code>UNIVERSAL_LINK_HOST → church_route</code> matching. Event and EventBlock routes use the same guarded handoff, while an existing <code>x-church</code> header keeps precedence. | |
| </p> | |
| </div> | |
| </section> | |
| <footer>Captured from production and pr-3518-cluster.review.apollos.app</footer> | |
| </main> | |
| </body> | |
| </html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
