Café Fausse knowledge map

Not the restaurant. MVP = official SRS freeze.

Presentation — talk cuts (locked Saturday VIDEO)

Working talk tracks for Saturday 2026-09-05 ~13:00 America/New_York (19:00 Europe/Berlin). Café Fausse Knowledge only. Not official Quantic dashboard text. Not the restaurant.

Locked cut (owner notes 2026-09-05 / #97): one ~10 minute VIDEO. Not “pick Variant A or B or C.”

Casting: Meghna Part 2 UX · Claude Part 3 Architecture (Variant B) · Hiren Part 4 Coding (Variant C).

ClockPartWhoSource on this page
0:00–0:30Team + ID verificationSharedFirst 30s of the shared open below · still Welcome / Team+ID
0:30–3:30Website demo https://cafe.artof.link/ — Home, Gallery, Menu, ReservationsMeghnaMeghna demo; must-film on Must-film shots
3:30–6:30Architecture + Diagram (Variant B)Claude Part 3Camera: natural script · natural VO · Compare: technical · Variant B section below
6:30–9:30Coding rationale (Variant C)Hiren Part 4Camera: natural script · natural VO · Compare: technical · Variant C section below
9:30–10:00Shared closeSharedCamera: natural script · natural VO · Compare: technical · Shared close section below

Voice-over TBD. Variant A below stays a draft / rehearsal pack. It is not the locked Saturday cut. Zoom dry-run on the video script is PROTOTYPE (Variant A).

Spoken timing for the standalone drafts still lives here; the 8/12-slide outline stays the Friday slide deck. Scenario menu A–F and clips live on the video script. Every freeze ID is on Coverage. Friday room notes: Friday plan, Brief. Meghna pack: materials. Parts 3–5 rehearsal pack: Parts 3–5 materials (silent PROTOTYPE + technical PROTOTYPE TTS + PROTOTYPE TTS natural — not teammate VO · not Quantic submit). Prefer natural for camera. Talk spine: Part 2 UX/business · Part 3 architecture why/how · Part 4 coding why/how · Part 5 honesty. Architect deploy table: Local vs AWS (also on Stack). Architect visuals: HLD + Meghna FE/BE · Part 4 coding overview. FR/NFR map: handoff mapping — not spoken on camera.

Grade floor: official SRS only — FR-1..FR-18, NFR-1..NFR-9. Do not invent FR-19 / NFR-10. Freeze prices, address, hours, owners, awards, and reviews stay as written.

Honesty (do not skip, 2026-09-06 update): NFR-1 is met — A36 Brave broadband cold Home 466 ms (#123 / PR #124). NFR-2 is met — reservation submit 233 ms (#125 / PR #126). That is not a four-browser claim. NFR-7 stays Partial. Journey J1–J8 PASS (cts-ai, DB up). J9 PASS is Vite-only. Future #22 / #34–#38 are parked, not grade gaps. Prefer https://cafe.artof.link/ as the staging environment for the MSAIE project (temporary — not production forever; tracker #57 is off-camera). Do not invent FR-19.

Demo this session (2026-09-05 Europe/Berlin): Knowledge HTTPS https://knowledge.cafe.artof.link/ GET 200. Prefer live share https://cafe.artof.link/ GET 200 (SPA + /operator + /api/health). Knowledge GET: root 200 (~0.5s); /operator 200 (~0.6s); /api/operator 200 (~0.5s); /api/health 200 {"ok":true} (~0.6s). TLS CN/SAN cafe.artof.link, Let’s Encrypt, notAfter=2026-12-04. Lightsail staging (#57) — weekend recording window, not permanent. Fast this session; still staging. Clips stay fallback. Interim backup: https://<STAGING_IP_DASHED>.sslip.io/. Old https://shaky-deer-drive.loca.lt/, https://happy-glasses-film.loca.lt/, and https://real-goats-shop.loca.lt/ are stale. Do not claim writes from the health GET.

Operator view (recording helper — not FR-19): read-only /operator shows customers + reservations so you can see the DB after a booking. Not an admin console (no CRUD / cancel). Prefer https://cafe.artof.link/operator — Knowledge GET 200 (~0.6s). Interim backup: https://<STAGING_IP_DASHED>.sslip.io/operator. Landed on main via PR #58 / issue 54.

Shared open (~1:00)

Use this minute on every cut.

ClockSay / show
0:00–0:20Café Fausse. Quantic MSAIE. Two teams: Knowledge (knowledge.cafe.artof.link) and App (in-repo).
0:20–0:40Stack as assigned: React + JSX, Flask, PostgreSQL. Grade floor = FR-1..FR-18 / NFR-1..NFR-9 only.
0:40–1:00Knowledge map is live HTTPS. Demo = prefer https://cafe.artof.link/ GET 200 this session (Lightsail staging #57 — not production forever), or the committed clips.

Then, for the locked Saturday VIDEO, jump to Meghna’s live demo — not to a standalone Variant A/B/C. The standalone drafts below stay as talking-point sources (B and C = 3-minute segments).


Variant A — Layers → FR/NFR (~10 min)

~1 minute open, then map three runtime layers to freeze IDs. Open Coverage if you want the table on screen.

ClockBeatSay / showFreeze IDs
0:00–1:00OpenShared open above.—
1:00–3:30Presentation / UXFive SRS pages + theme. Home name, contact, hours, nav (FR-1..FR-4). Menu categories from freeze (FR-5). About history and founders (FR-10, FR-11). Gallery images, lightbox, awards, reviews (FR-12..FR-14). Theme + Flex/Grid (NFR-3, NFR-4, NFR-8). Clip 01 if you need a look.FR-1..FR-5, FR-10..FR-14, NFR-3, NFR-4, NFR-8
3:30–6:30Forms + APIReservation form fields (FR-6). Slot check (FR-7). Random table 1–30 (FR-8). Success or full-book (FR-9). Flask insert / confirm (FR-18). Newsletter validate + store (FR-15, FR-16). Clip 02 for a happy book. Missing DB → honest no (NFR-6). Unique slot+table (NFR-5).FR-6..FR-9, FR-15..FR-18, NFR-5, NFR-6
6:30–8:30DataPostgreSQL Customers and Reservations (FR-17). Cap of 30 tables. Unique (time_slot, table_number). Fail-closed tests: missing DB, timeout, 31st table. A write is only a write if Postgres accepts it. After a booking, open read-only /operator (https://cafe.artof.link/operator) to show the DB effect — not an admin console, not FR-19 (PR #58 / #54).FR-17, NFR-5, NFR-6
8:30–10:00CloseThree layers → freeze IDs (diagram below). Then the shared close. Say the honesty lines out loud.NFR-1 / NFR-2 met (466 ms / 233 ms); NFR-7 Partial
flowchart TB
 subgraph UX["Presentation / UX"]
 PAGES["Home Menu About Gallery + theme"]
 end
 subgraph API["Forms + API"]
 FORMS["Reservations + newsletter → Flask"]
 end
 subgraph DATA["Data"]
 PG["PostgreSQL Customers + Reservations"]
 end
 PAGES --> IDS1["FR-1..5 · FR-10..14 · NFR-3 / 4 / 8"]
 FORMS --> IDS2["FR-6..9 · FR-15..18 · NFR-5 / 6"]
 PG --> IDS3["FR-17 · NFR-5 / 6"]

Variant B — Architecture + diagrams (~10 min)

Same open. Walk the dual-env picture, then map boxes to IDs. Prefer local HLD + MSAIE staging HLD + Meghna FE↔BE (notes). Older AWS staging SVG / as-is SVG stay as history / probe archive. To-be SVG still the Future cut. Same story in words on Stack. Locked 3-min cut: camera natural script · natural VO · compare technical script · technical VO · silent PROTOTYPE + technical / natural PROTOTYPE TTS on Parts 3–5 materials. Architect deploy table: Local vs AWS. Prefer live diagrams for the real recording. On camera: cafe.artof.link = MSAIE staging (not “weekend Lightsail”).

ClockBeatSay / show
0:00–1:00OpenShared open. Two hostnames are not one shop.
1:00–4:00HLD dual-envPrefer local HLD + MSAIE staging HLD. Knowledge is GitHub Pages. Prefer https://cafe.artof.link/ (MSAIE staging — on-box Postgres, not a shared RDS). Off-camera: Route53 A → Lightsail, Caddy + LE. The *.artof.link ELB wildcard is not Café Fausse. Temporary staging — not production forever. Longer-term hosting stays #22. History still: AWS staging SVG.
4:00–7:00Boxes → FR/NFRWalk Coverage. React pages = FR-1..FR-5, FR-10..FR-14. Flask APIs = FR-6..FR-9, FR-15..FR-18. Postgres tables = FR-17. Integrity / fail-closed = NFR-5, NFR-6. Theme / nav / viewports = NFR-3, NFR-4, NFR-8.
7:00–9:00SensorsGitHub Actions: freeze file + PDF SHA256 must exist. test_freeze.py locks menu copy. test_fail_closed.py locks missing-DB / full slot. Author does not merge. That is the outer harness, not a new FR.
9:00–10:00CloseAs-is vs Future. #22 and #34–#38 stay parked. Then the shared close.
flowchart TB
 subgraph K["Café Fausse Knowledge — live this session"]
 MD["knowledge/*.md"] --> BUILD["GitHub Actions → GitHub Pages"]
 BUILD --> KH["knowledge.cafe.artof.link"]
 end
 subgraph L["Café Fausse App — in-repo on main"]
 RE["React + JSX / Vite"] --> FL["Flask"]
 FL --> DB["PostgreSQL"]
 end
 subgraph N["Staging share this session — not production forever"]
 CAFE["cafe.artof.link"] --> LS["Lightsail #57 GET 200 · kept until owner decision"]
 end
 KH -.-> OK["HTTPS GET 200 · HTTP 301 to HTTPS"]
 RE -.-> FRUX["FR-1..5 · FR-10..14 · NFR-3/4/8"]
 FL -.-> FRAPI["FR-6..9 · FR-15..18 · NFR-5/6"]
 DB -.-> FRDB["FR-17 · NFR-5"]

Variant C — Coding rationale (~10 min)

Same open. Why these implementations — not a code walk of every file. Coding map: Part 4 coding overview (SVG) — freeze for static pages; booking GET /api/slots + POST /api/reservations; newsletter POST /api/newsletter store-only. Locked 3-min cut: camera natural script · natural VO · compare technical script · technical VO · silent PROTOTYPE + technical / natural PROTOTYPE TTS on Parts 3–5 materials.

ClockBeatWhy this, not thatFreeze IDs
0:00–1:00OpenShared open. “We implemented the freeze; we did not invent a second menu.”—
1:00–4:00Freeze file + CIMenu, address, hours, awards, reviews live in shared/freeze.json. Pages and GET /api/menu display that file. test_freeze.py fails if copy drifts. Do not “improve” prices. Optional demo picks below are existing SRS categories only.FR-2, FR-5, FR-10, FR-11, FR-14
4:00–7:00Table + fail-closedFR-8 asks for a random table from 30. ORDER BY random() plus table_number BETWEEN 1 AND 30. NFR-5 is the unique index reservations_slot_table on (time_slot, table_number) — a slot cannot get the same table twice. Full slot → FR-9 error, no guessed table. test_fail_closed.py covers missing DB, unreachable DB, timeout, 31st table. Email is validate_email → strip + lower before store (not a new FR; Future #37 is verbatim-case, parked).FR-8, FR-9, FR-15, NFR-5, NFR-6
7:00–9:00Timezone + modules + toolingHours are Washington, DC. Slots use America/New_York from the freeze (slots.py, PR #12) so a browser in another zone does not invent Sunday hours. Packages under backend/cafe_fausse/ and page components under frontend/src/pages/ are the NFR-9 cut. Tooling log: docs/ai-tooling.md — Cursor + GitHub Actions + pytest; student app repos were not copied.FR-2, FR-7, NFR-9
9:00–10:00CloseShared close diagram. Same honesty line.—

Shared close

One picture. Use it at 8:30–10:00 (cut A) or 9:00–10:00 (cuts B and C).

Locked 30–60s cut: camera natural script · natural VO · compare technical script · technical VO · silent PROTOTYPE + technical / natural PROTOTYPE TTS on Parts 3–5 materials.

What we shipped (plain language): restaurant MVP on main (code + CI). Knowledge map live HTTPS. Evidence on Coverage — including NFR-7 Partial and parked Futures.

flowchart LR
 SRS["Official SRS\nFR-1..18 · NFR-1..9"] --> MAIN["main\nReact + Flask + Postgres\ncode + CI"]
 MAIN --> COV["Knowledge coverage\nevidence classes"]
 COV --> DEMO["Demo surface\ncafe.artof.link after GET 200\nor clips"]

Say out loud before you stop:


Optional freeze-menu demo picks

Point at existing SRS categories on the Menu page or in clip 01. Do not change shared/freeze.json. Do not say a different price.

Category (SRS / FR-5)One freeze item to point at
StartersBruschetta
Main CoursesGrilled Salmon
DessertsTiramisu
BeveragesEspresso

If time is tight, one starter + one main is enough. Read the price from the page, not from memory.

What not to say on camera

Sister pages