Café Fausse knowledge map

Not the restaurant. MVP = official SRS freeze.

Parts 3–5 — deliverable handoff mapping

Not spoken on camera.

Purpose: Keep freeze / FR / NFR / probe IDs accurate for the deliverable pack while spoken scripts stay natural demo language. Rule: Do not read this file on camera. Spoken lines live only in the natural script / VO Timed lines (and the Part 4 / Part 5 twins). Technical scripts stay for post-mortem compare. Label: PROTOTYPE · talk #97 · packed 2026-09-06 Europe/Berlin Index: Parts 3–5 materials · Coverage · Talk cuts · Quantic handoff · Developer system map


Speaking rule (reminder)

On camera (spoken)Off camera (this file — not spoken on camera)
Plain product languageFR- / NFR- IDs
“weekend staging”, timings in msIssue #57, #124, #126, Future #22 / #34–#38
“freeze file”, “CI checks”test_freeze.py, test_fail_closed.py, PDF SHA256, job names
“read-only helper”“not FR-19”

Part 3 — Architecture (Variant B)

Spoken pack: natural script · natural VO. Technical compare: script · VO.

BeatSpoken intentFreeze / evidence IDs
Takeover / hostnamesKnowledge = Pages; App = weekend Lightsail share; not one shop; not foreverHosting honesty #57; Knowledge ≠ App
HLD stagingRoute53 A → Lightsail cafe-fausse-staging → Caddy + LE → Flask + SPA → on-box Postgres (MSAIE staging); not a shared RDS; *.artof.link ELB wildcard ≠ Café Fausse; longer-term hosting parkedStaging #57; Future #22 parked
As-is pictureMarkdown → Pages; main = React + Flask + Postgres; cafe.artof.link GET 200 weekend window / owner tear-downStaging #57
Coverage boxesFront-end pages → public site UX; API → booking + newsletter; DB → customers + reservations + unique slot/table; grade floor = official SRS only; /operator = read-only helperReact: FR-1..5, FR-10..14, NFR-3, NFR-4, NFR-8. Flask: FR-6..9, FR-15..18, NFR-5, NFR-6. Data: FR-17, NFR-5 unique (time_slot, table_number). Grade floor: FR-1..18 / NFR-1..9. No FR-19
Sensors / CIActions require freeze file + PDF fingerprint; tests lock freeze copy + fail-closed (missing DB, 31st table); author does not mergeCI harness only — not grade rows; test_freeze.py; test_fail_closed.py; PDF SHA256
Explicit non-claimsSpeed + browser honesty deferred to Shared closeNFR-7 Partial (close); Future #34–#38 parked

Part 4 — Coding rationale (Variant C)

Spoken pack: natural script · natural VO. Technical compare: script · VO.

BeatSpoken intentFreeze / evidence IDs
Freeze + CIMenu, address, hours, awards, reviews in one freeze file; pages + menu API display it; tests fail on drift; do not “improve” pricesshared/freeze.json; locks FR-2, FR-5, FR-10, FR-11, FR-14; test_freeze.py
Table + fail-closedRandom table 1–30; unique slot+table; full slot → honest error (no 31st table); fail closed if DB missing / unreachable / timeout; email validate + strip + lower before store; verbatim-case Future parkedFR-8 (ORDER BY random(), 1–30); NFR-5 index reservations_slot_table; FR-9 full-slot error; NFR-6 write only if Postgres accepts; FR-15 email normalize note; Future #37 parked; test_fail_closed.py
Timezone / modules / toolingHours = Washington, DC; slots use America/New_York so remote browser cannot invent Sunday hours; clear backend packages + page folders; tooling log Cursor / Actions / pytest; no student-app copyFR-2, FR-7; NFR-9 cut (backend/cafe_fausse/, frontend/src/pages/); slots.py / PR #12; docs/ai-tooling.md
ParkedFutures not grade gapsFuture #22, #34–#38

Part 5 — Shared close

Spoken pack: natural script · natural VO. Technical compare: script · VO.

ClaimSpoken line (plain)Evidence IDs
Page-load speedMet on phone broadband probe — cold Home 466 msNFR-1 met · probe A36 Brave broadband · issue #124
Reservation submitMet — submit 233 msNFR-2 met · issue #126
Browser supportStill Partial — not claiming all four browsersNFR-7 Partial
Stagingcafe.artof.link weekend Lightsail share — not foreverStaging #57
OperatorRead-only helper — not an admin console / not a graded admin featureNo FR-19
FuturesParked — not missing grade rowsFuture #22, #34–#38
Shipped floorOfficial SRS on main (React + Flask + Postgres + CI); Knowledge live HTTPS; evidence on CoverageFR-1..18, NFR-1..9
Journeys (optional breath)Core journeys pass with DB up; prefer live share after healthy GET, or clipsJ1–J8 (DB up); J9 Vite-only

Do not use the old “NFR-1 / NFR-2 Unknown / not claimed met” wording anywhere in this pack.


Cross-part honesty checklist (deliverable)


End handoff mapping · not spoken on camera · keep IDs here · keep spoken lines natural.