Café Fausse knowledge map

Not the restaurant. MVP = official SRS freeze.

Friday score-5 plan

Working reference for Friday 2026-09-04 19:00 Europe/Berlin (updated Saturday 2026-09-05). Not official Quantic dashboard text. Not the restaurant.

Grade of 5 = official SRS only: FR-1..FR-18 and NFR-1..NFR-9. PDF in docs/official/ is source of truth. Do not invent FR-19 / NFR-10.

Friday’s job is tech access plus lock the video and scenarios. It is not a night to implement Future extras.

Live share this session (prefer): https://cafe.artof.link/ — GET 200 (SPA HTML). https://cafe.artof.link/api/health — GET 200 {"ok":true}. Knowledge GET: root 200 (~0.5s); /operator 200 (~0.6s); /api/operator 200 (~0.5s); /api/health 200 {"ok":true} (~0.6s). This agent GET: root 200 (~0.04s); /operator 200 (~0.03s); /api/operator 200 (~0.04s); /api/health 200 {"ok":true} (~0.04s). TLS CN/SAN cafe.artof.link, Let’s Encrypt, notAfter=2026-12-04. HTTP 308 to HTTPS. DNS A <STAGING_IP>. Lightsail staging (us-east-1, #57) — not a permanent hosting claim. Staging stays up until the owner explicitly requests tear-down. Monday 2026-09-08 16:00 Europe/Berlin is evaluate-only (not automatic tear-down). Whether Quantic graders need the host up for video evaluation remains Unknown until the owner shares correspondence. Longer-term hosting stays Future #22. Do not over-claim production forever. Fast this session; still staging. Clips stay the fallback. Interim backup (same host, not the primary paste): https://<STAGING_IP_DASHED>.sslip.io/. Old https://shaky-deer-drive.loca.lt/ is stale (Knowledge GET 503; this agent timed out, curl 28). Old https://happy-glasses-film.loca.lt/ and https://real-goats-shop.loca.lt/ stay stale. Read-only /operator is on the share (PR #58 / #54) — not FR-19.

Drafts that belong with this page: 10-minute video script, slide outline, Saturday talk cuts. Meeting notes stay on the Brief.

Ready vs Unknown (plain language)

Already true (code / CI / this-session probe)Still Unknown — do not claim met
Restaurant MVP on main (PRs #9 + #12): React + JSX, Flask, PostgreSQLNFR-1 (3s broadband page load) — local Vite home 56 ms is a note, not “met”
Every freeze ID mapped on CoverageNFR-2 (2s form submit) — local GET /api/site 32 ms is not a submit stopwatch
Knowledge host HTTPS GET 200 (2026-09-05 Europe/Berlin): knowledge.cafe.artof.linkNFR-7 four-browser claim — Chrome / Safari Unknown. Partial only: Edge all routes + Firefox home (Vite-only)
HTTP knowledge.cafe.artof.link → 301 to HTTPS (this session)Longer-term cafe.artof.link hosting — Future #22. #57 staging does not close #22. Do not claim production forever
Journey J1–J8 PASS (cts-ai, DB up) + J9 / NFR-3 / NFR-8 PASS (Vite-only; Edge probe-nfr/ 375×812 home, 768×1024 menu, 1280×800 reservations) — Coverage / #40 / #44Reservations / cafe-pg writes on the share — not claimed (no write probe this session). Old https://shaky-deer-drive.loca.lt/, https://happy-glasses-film.loca.lt/, and https://real-goats-shop.loca.lt/ are stale. Vite :5173 from this Knowledge VM Unknown
Prefer live share https://cafe.artof.link/ GET 200 (SPA HTML) + /operator + /api/health GET 200 {"ok":true}Lightsail staging (#57) — weekend recording window, not permanent. Knowledge GET: root 200 (~0.5s); /operator 200 (~0.6s); /api/operator 200 (~0.5s); /api/health 200 {"ok":true} (~0.6s). Fast this session; still staging. Interim backup: https://<STAGING_IP_DASHED>.sslip.io/
Silent clips on the brief (look, fallback if staging drops)Do not claim Flask+Postgres or production-forever hosting from the Vite-only J9 / NFR-7 probe

Coverage records the Journey / NFR numbers. This page does not claim NFR-1 / NFR-2 met, and does not claim a full NFR-7 four-browser matrix. J9 PASS is Vite-only.

P0 — must for Friday / score-5 story

Plain language: show the assignment, not extras. Prove what is live. Stay honest where we have no probe.

  1. Freeze only. Talk FR-1..FR-18 / NFR-1..NFR-9. Freeze data (prices, address, hours, owners, awards, reviews) is not “improved.”
  2. Primary live surface — Knowledge. Open https://knowledge.cafe.artof.link/ (HTTPS). This knowledge map is the public surface. Probe this session (2026-09-05): GET 200.
  3. App live share (prefer). https://cafe.artof.link/ GET 200 (SPA HTML). Health https://cafe.artof.link/api/health GET 200 {"ok":true}. Knowledge GET: root 200 (~0.5s); /operator 200 (~0.6s); /api/operator 200 (~0.5s); /api/health 200 {"ok":true} (~0.6s). Lightsail staging (#57) — not permanent. Written on the Brief. 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 over-claim production forever.
  4. P0 live-proof path
    • Issue #40 / #44 — recorded on Coverage: J1–J8 PASS (cts-ai, DB up); J9 / NFR-3 / NFR-8 PASS (Vite-only Edge screenshots + theme.css); NFR-1 / NFR-2 timings noted, not claimed met; NFR-7 partial (Edge all routes with screenshots + Firefox home; Chrome not installed; Safari Unknown).
      • Prefer: https://cafe.artof.link/ GET 200 (SPA + /operator + /api/health). Lightsail staging (#57). Fallback: committed clips. 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.
    • Demo data / happy book / full slot (FR-9) only after a this-session write probe. After the App handoff, cafe-pg was reported unreachable; do not claim reservations on the share without that probe.
  5. Lock video + scenarios. Use the script and scenario menu A–F. Share Knowledge + https://cafe.artof.link/ (GET 200 this session; Lightsail staging #57 — not production forever). Clips stay fallback. Interim backup https://<STAGING_IP_DASHED>.sslip.io/. Old tunnels stale.
  6. Honesty line. J1–J8 PASS is local cts-ai UX while the DB was up. J9 / NFR-3 / NFR-8 PASS is Vite-only (Edge probe-nfr/ screenshots + theme.css) — not Flask+Postgres. NFR-7 is partial (Edge + Firefox home; Chrome not installed; Safari Unknown). NFR-1 / NFR-2 stay not-claimed-met. Do not say the SRS broadband budgets are met. Do not claim cafe-pg writes from the health GET. Do not claim production-forever hosting.

P1 — Friday polish (same grade floor)

Do these only after P0 access works. They do not add requirement IDs.

P2 — not Friday, not grade gaps

These issues are Future / hardening. Missing them is not a missing grade item. Do not treat them as FR-19+.

IssueWhat it is
#22Longer-term public restaurant hosting on cafe.artof.link. #57 Lightsail staging does not close this. Do not claim production forever.
#34Reservation lifecycle (PENDING → ASSIGNED → RELEASED)
#35Cancel / checkout / admin release APIs
#36Menu as persistent tables + staff CRUD
#37Verbatim case-sensitive email as an FS rule
#38Automatic concurrency retry beyond the unique index
#46 / PR #47AWS cafe_fausse_db column map — merged; Future reuse notes, not a new FR freeze. Live GET aws-schema-map.html 200
#57Lightsail staging kept until owner decision. Monday 2026-09-08 16:00 Europe/Berlin evaluate-only (not auto tear-down). Whether graders need the host for video evaluation remains Unknown until the owner shares correspondence.

Park them on Future. Grade floor stays the official PDF. Teammate RDS dump vs local schema (readable without cts-ai): AWS `cafe_fausse_db` map / #46. Do not apply that DDL to MVP.

Live vs local vs Future

Three different things. Do not mix the labels.

flowchart TB
  subgraph LIVE["Live this session — Café Fausse Knowledge"]
    MD["knowledge/*.md"] --> BUILD["GitHub Actions → GitHub Pages"]
    BUILD --> KH["https://knowledge.cafe.artof.link"]
    KH --> OK["HTTPS GET 200 · HTTP 301 to HTTPS"]
  end
  subgraph APP["Café Fausse App — prefer cafe.artof.link this session, staging"]
    VITE["Vite :5173"] --> FLASK["Flask :5000"]
    FLASK --> PG["cafe-pg PostgreSQL"]
    SHARE["cafe.artof.link GET 200 · Lightsail cafe-fausse-staging · Caddy · on-box PG"] -.-> BOX["Flask SPA + Postgres on the instance"]
    BAK["STAGING_IP_DASHED.sslip.io interim backup"] -.-> BOX
  end
  subgraph FUT["Future — not grade work"]
    HOST["#22 longer-term hosting · not production forever"]
    FS["Issues #34–#38"] --> PARK["Future / hardening · not FR-19"]
  end

Same picture in words: Honesty. Stack diagrams: Stack.

Friday room checklist

  1. Knowledge HTTPS tab open. App tab (prefer): https://cafe.artof.link/ (GET 200 this session; Lightsail staging #57). Backup tab: https://<STAGING_IP_DASHED>.sslip.io/. Clips ready as fallback. Not the stale shaky-deer-drive, happy-glasses-film, or real-goats-shop URLs.
  2. Script + scenario A–F locked. Slides = 8-slide cut unless the room wants the long outline.
  3. Say J1–J8 PASS (cts-ai, DB up) and J9 / NFR-3 / NFR-8 PASS (Vite-only Edge screenshots + theme.css) from Coverage / #40 / #44. Say NFR-7 is partial (Edge + Firefox home; Chrome not installed; Safari Unknown). Say not-claimed-met for NFR-1 / NFR-2. Share Knowledge + https://cafe.artof.link/. Clips stay fallback. Do not claim cafe-pg writes from the health GET. Do not claim production forever.
  4. Say Future #22 / #34–#38 are parked, not missing SRS rows. #57 is weekend staging.
  5. Author does not merge their own PR. MRC COMMENT is the role-approve signal; then cursor[bot] may merge after this-run green checks and Bugbot resolve-or-decline.