Teammate brief — Fri 2026-09-04 19:00 Europe/Berlin
In plain English: This is the teammate handoff page — clips, what to show Friday, and what is still Future. It is not the restaurant and not a second product. Course pages stay listed on Quantic / MSAIE. Words like probe and Unknown are on the Glossary.
Probe date for live claims on this page: 2026-09-05 Europe/Berlin (this session).
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. FS v0.1 extras = Future; presentation = Coverage. quantic-grader remains an owner step.
Friday 2026-09-04 19:00 Europe/Berlin (score 5)
Live share this session (prefer): https://cafe.artof.link/ GET 200 (SPA HTML). /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) — weekend recording window, not production forever. 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.
- Primary live surface:
https://knowledge.cafe.artof.link/(HTTPS GET 200 this session). - App live share (prefer this tab):
https://cafe.artof.link/— GET 200 this session (SPA HTML, title Café Fausse). Healthhttps://cafe.artof.link/api/health— GET 200{"ok":true}. Knowledge GET: root 200 (~0.5s);/operator200 (~0.6s);/api/operator200 (~0.5s);/api/health200{"ok":true}(~0.6s). Lightsail staging (#57) — not permanent. Interim backup:https://<STAGING_IP_DASHED>.sslip.io/. Oldhttps://shaky-deer-drive.loca.lt/,https://happy-glasses-film.loca.lt/, andhttps://real-goats-shop.loca.lt/are stale. - Fallback: committed clips below (if staging drops).
- Operator view (recording helper):
https://cafe.artof.link/operator— Knowledge GET 200 (~0.6s). Read-only customers + reservations so you can see the DB after a booking. Not an admin console (no CRUD / cancel). Not FR-19. Landed onmainvia PR #58 / issue 54. Interim backup:https://<STAGING_IP_DASHED>.sslip.io/operator. - Do not treat this hostname as production forever. Longer-term hosting stays Future #22.
Operator view (recording helper — not FR-19)
What: read-only /operator. Shows customers + reservations so a recording can see the PostgreSQL effect after a booking. Not an admin console (no CRUD / cancel / checkout). Not FR-19.
Where (live share this session, prefer): https://cafe.artof.link/operator — Knowledge GET 200 this session (~0.6s). Lightsail staging (#57) — weekend recording window, not permanent. Interim backup: https://<STAGING_IP_DASHED>.sslip.io/operator.
Ship: landed on main via PR #58 / issue 54. Footer Operator link only — not in the primary SRS nav.
Friday room
Room job: tech access + lock video and scenarios. Working references (not official Quantic dashboard text):
- Friday plan — P0 / P1 / P2; live Knowledge HTTPS vs App after a this-session GET vs Future
cafe.artof.link - Video script — ~10 minute beats + scenario menu A–F; clips
clips/01-home-menu.mp4andclips/02-happy-book.mp4 - Talk cuts — Saturday recording: three ~10 min variants + shared close
- Slide outline — 12-slide outline and the 8-slide cut
Ready (do not over-claim): restaurant MVP on main; Coverage maps every freeze ID; Knowledge HTTPS GET 200 this session; prefer live share https://cafe.artof.link/ GET 200 (SPA + /operator + /api/health; Lightsail staging #57 — not production forever); two silent clips as fallback. Interim backup https://<STAGING_IP_DASHED>.sslip.io/. Longer-term hosting stays Future #22.
#40 / #44 recorded on Coverage: Journey J1–J8 PASS (cts-ai local UX, DB up, 2026-09-02). J9 / NFR-3 / NFR-8 PASS (Vite-only; Edge probe-nfr/ 375×812 home, 768×1024 menu, 1280×800 reservations + theme.css; not Flask+Postgres). NFR-1 / NFR-2 local Vite timings noted (56 ms / 32 ms) — not claimed met. NFR-7 partial (Edge all routes with screenshots + Firefox home; Chrome not installed on cts-ai; Safari Unknown).
Not grade work: Future #22 (hosting) and #34–#38. Missing them is not a missing FR/NFR. AWS schema map (#46 / PR #47, merged) is Future reuse notes, not a new FR freeze. Live GET https://knowledge.cafe.artof.link/future/aws-schema-map.html 200 this session.
Demo clips
Silent ~30s demos of the restaurant MVP (Café Fausse App). Fallback if https://cafe.artof.link/ drops. They are not a probe that every reservation write works without a this-session write probe, and they are not a permanent hosting claim. Prefer live share https://cafe.artof.link/ (GET 200 SPA + /operator + /api/health; Lightsail staging #57 — weekend recording window, not production forever). 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.
Home → Menu (~32s)
Happy reservation (~33s)
Course grade 5 — covered vs decide
- What a grade of 5 needs. Official SRS only (FR-1..FR-18, NFR-1..NFR-9). PDF in
docs/official/is SoT; working freezedocs/srs.md. Do not invent FR-19 / NFR-10. Freeze data is not to be “improved.” Extra ideas are Future, not extra credit. - Already covered. Restaurant MVP on
main(PRs #9 + #12). Knowledge live HTTPS:GET https://knowledge.cafe.artof.link/200 this session (TLS VERIFY_OK; CN/SAN match). HTTPhttp://knowledge.cafe.artof.link/→ 301 to HTTPS. Coverage maps every freeze ID. Demo clips on this brief (shareable look, not a live restaurant host). Stack HLD: AWS staging + as-is vs permanent-to-be. - Wed 2026-09-02 focus (1, 3, 4). That night: this brief + clips and/or local Vite/Flask. Saturday 2026-09-05: Knowledge + clips; prefer live share
https://cafe.artof.link/GET 200 (SPA +/operator+/api/health; Lightsail staging #57 — not production forever). Interim backuphttps://<STAGING_IP_DASHED>.sslip.io/. Longer-term hosting stays Future #22. FS v0.1 extras = Future/hardening (no new FR/NFR IDs). Presentation = Coverage. J1–J8 PASS is local cts-ai UX while DB was up; J9 PASS is Vite-only; NFR-7 is partial; NFR-1 / NFR-2 stay not-claimed-met.
Where we are
- Public GitHub repo
artofdream/aea-interactive-design. Tracker and CI are GitHub only. No GitLab. - MVP = official SRS only. PDF is SoT (
docs/official/…SRS.pdf). Working freezedocs/srs.md(FR-1..FR-18, NFR-1..NFR-9). Do not invent FR-19 / NFR-10. Freeze data (menu prices, address, hours, owners, awards, reviews) is not to be “improved.” - Restaurant MVP code is on
main(PRs #9 + timezone #12): React + JSX, Flask, PostgreSQL. Extra ideas stay in Future. - Knowledge site (this map) publishes via GitHub Actions → GitHub Pages.
Two surfaces
| Surface | Hostname | This session |
|---|---|---|
| Café Fausse Knowledge | knowledge.cafe.artof.link | HTTPS GET 200 this session (2026-09-05); HTTP 301 to HTTPS. |
| Café Fausse App | cafe.artof.link | Prefer live share: HTTPS GET 200 this session (SPA + /operator + /api/health). TLS CN/SAN cafe.artof.link, Let’s Encrypt notAfter=2026-12-04. DNS A <STAGING_IP>. Lightsail staging (#57) — weekend recording window, not production forever. Longer-term hosting stays Future #22. |
App on cts-ai (not this agent VM): Vite http://127.0.0.1:5173, Flask :5000, cafe-pg Postgres. Live share this session (prefer): https://cafe.artof.link/ GET 200 (SPA HTML); /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) — weekend recording window, not production forever. Fast this session; still staging. Interim backup: https://<STAGING_IP_DASHED>.sslip.io/. This Knowledge VM did not reach Vite on :5173. Journey J1–J8 PASS recorded 2026-09-02 while the DB was up; J9 / NFR-3 / NFR-8 PASS later on Vite-only :5173 (Edge probe-nfr/ screenshots + theme.css; not Flask+Postgres). NFR-7 partial (Edge all routes with screenshots; Firefox home; Chrome not installed; Safari Unknown). After the J1–J8 handoff, App reported cafe-pg unreachable — do not claim reservations on the share without a write probe. Old https://shaky-deer-drive.loca.lt/, https://happy-glasses-film.loca.lt/, and https://real-goats-shop.loca.lt/ are stale.
Compare: team Functional Spec v0.1 vs SRS MVP on main
Team FS v0.1 (2026-09-02) — Customer, Newsletter, Reservation, Menu flows (FS-01..FS-05). Not a new freeze. FS labels are the team’s; official IDs stay FR-1..FR-18 / NFR-1..NFR-9. Do not mint FR-19+.
Already on main / aligns with official SRS
Evidence is committed files this session (PRs #9 + #12 on main). Not a live-host probe.
- Newsletter →
customers.newsletter_signup(FR-15, FR-16):backend/cafe_fausse/newsletter.py,backend/schema.sql. - Reservations FR-6..FR-9, FR-17..FR-18: form fields, slot check, random table 1–30, full-book error, Customers + Reservations, Flask assign.
guest_countis already inschema.sql(supports FR-6; not a new ID). - NFR-5: unique index
reservations_slot_tableon(time_slot, table_number). - Menu FR-5:
shared/freeze.json+GET /api/menu— read-only display, not a staff CMS. - No payment (out of scope in both the official SRS and FS v0.1).
In FS v0.1 but not in MVP (Future / beyond assignment floor)
Park these as Future issues (already filed). Do not treat them as missing grade items. Do not invent FR-19+.
- PENDING → ASSIGNED → RELEASED lifecycle;
release_reason;released_at(#34, FS-03/04). On main, a reservation is an inserted row; no status column. - Customer cancel / restaurant checkout / admin release APIs (#35, FS-04).
- Menu categories/items as persistent tables + staff CRUD +
is_available(#36, FS-05). On main, menu is freeze JSON, not persistent items. - Concurrency retry beyond the unique index (#38, FS-03). On main: slot
FOR UPDATE+ unique(time_slot, table_number);UniqueViolationasks the client to resubmit. No automatic retry loop. - Verbatim case-sensitive email as an explicit FS product rule (#37, FS-01). On main:
email_address TEXT NOT NULL UNIQUE;validate_emaillowercases before store (backend/cafe_fausse/validate.py, committed this session). That is not verbatim case. Raw SQL that bypasses the app vs TEXTUNIQUEcase: Unknown (no live Postgres probe this session). - QCFA
run-sql.sh/ migration packaging vs our path:backend/schema.sql+backend/cafe_fausse/init_db.py. No GitHub issue filed for this packaging difference. - Longer-term hosting
cafe.artof.linkremains Future #22. Weekend Lightsail staging (#57) is the live share this session and does not close #22.
Discussion frame
- FS v0.1 = proposed Future / hardening baseline, not a replacement for the official PDF.
- Grade floor = official FR-1..FR-18 / NFR-1..NFR-9 only.
- Park FS extras as Future. Do not invent FR-19 / NFR-10.
Freeze vs Future
- In MVP: the official SRS pages and APIs (Home, Menu, Reservations, About, Gallery, newsletter, 30 tables, fail-closed DB). See Coverage.
- Not in MVP: FS v0.1 extras above; permanent
cafe.artof.linkhosting (#22 — weekend Lightsail #57 does not close it); outbound newsletter mailer (SRS is FR-15 / FR-16 store/register only); florist Path B; 14 hats; Kafka/BFF; 3DX Lab; GitLab; invented requirement IDs; claiming the system is antifragile.
GitHub loop (do not skip)
One finding → one issue → one branch → one PR against main. The author does not merge their own PR. Lesson: PR #14 / issue #13.
MRC COMMENT is the role-approve signal. For artofdream-authored PRs, cursor[bot] may merge after this-run green checks and Bugbot resolve-or-decline. Bugbot comments are a signal, not the merge. Same login cannot review-approve its own PR. Owner artofdream may review-approve only cursor[bot]-authored PRs.
Assignment collaborator quantic-grader must be added by the owner. Agents must not. Not tonight (decision 2 parked).
Friday room — remote default, then live share
Not 2: quantic-grader stays an owner step.
Live share this session (prefer): 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). Lightsail staging (#57) — weekend recording window, not production forever. 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.
Wed 2026-09-02 locked 1, 3, 4 (not 2). Those decisions still hold:
- Demo: Knowledge brief + clips; prefer
https://cafe.artof.link/GET 200 (SPA +/operator+/api/health; Lightsail staging #57 — not production forever). Interim backuphttps://<STAGING_IP_DASHED>.sslip.io/. Longer-term hosting stays Future #22. - Scope: FS v0.1 extras = Future/hardening, not new FR/NFR IDs (compare above; #34–#38). Grade floor = official FR-1..FR-18 / NFR-1..NFR-9.
- Presentation: Coverage freeze map + Journey table. J1–J8 PASS (cts-ai, DB up). J9 / NFR-3 / NFR-8 PASS (Vite-only Edge screenshots + theme.css). NFR-7 partial (Edge + Firefox home; Chrome not installed; Safari Unknown). NFR-1 / NFR-2 stay not-claimed-met. Live share URL written after GET 200 this session.
Read next
- Friday plan — score-5 P0/P1/P2; live vs local vs Future
- Video script — ~10 min beats; scenarios A–F
- Talk cuts — Saturday three-cut recording
- Slide outline — 8-slide cut
- Stack — AWS staging HLD + as-is / to-be
- Coverage — every FR/NFR
- Honesty — what we will not claim
- Future — parked FS extras; not a second freeze