ธีม
Session notes — claude-2026-11-01
One person's notes, never rewritten by anyone else. docs/state/HANDOFF.md §35–§37 hold what is NOT done, and STATE.md holds what is true now (the deployed sha's only home is its ✅ DEPLOYED line). This file records WHY each thing was done, and how it was checked.
▶ HANDOFF — ถาวร people shipped; Discord at the year switch is DECIDED, not built
Start the next session with HANDOFF §37 (Discord at the year switch). The owner's decisions are quoted there. Ask ONE question before building: does someone removed MID-YEAR get อดีตSAMO (proposed default: no)? Build on samo-dev, prove against a stub guild, then ASK before production (memory: ask before prod while users are active).
What the owner asked, in order:
- A section for people who stay every year (อาจารย์, เจ้าหน้าที่คณะ, the owner after retiring): custom group names, any email, ฝ่าย + permissions like ทีม SAMO; อาจารย์ see their บ้าน; non-kkumail cannot use Passport except admins. Then: no expiry, may hold master; อาจารย์ see FULL information.
- "scan for bugs and do it" — shipped 0272 to production.
- เริ่มจากว่าง said "กดเพิ่มฝ่าย" with no เพิ่มฝ่าย on screen — fixed (
8917872). - เกี่ยวกับเรา year buttons read the bare year (
0c7bca5). - Why do preview/localhost #years show Passport Q3 and วาระสโม 69 — is test separated from production? Yes; see below.
- Why is "SAMOWEB FOUNDER MD50" on เกี่ยวกับเรา — 0273, and deleted on the owner's word ("delete it, but remain the past developer because i create it myself").
- Reset samo-dev's year and remove Passport's production fallback ("do it both").
- Discord with yearly + ถาวร people → decisions in HANDOFF §37.
- A staff research proposal about the portal: what would have to be built. It is unpublished work, so the analysis is in the PRIVATE agent memory
research-proposal-portal-needs, never in this public repo.
What was built, and how it was checked
| Piece | Evidence |
|---|---|
0272 ถาวร groups + my_advisor_house + team_sign_in_status | production: team0272 26/26, team0271 36/36, team0270 36/36, year0248 23/23, team0224 19/19 |
| 0273 ถาวร list in live sync, own channel | tools/browser/team-standing.mjs §5b red 2/2 on the old code, green after, green with EITHER half (publication / re-read) switched off; publication read back on production |
| Passport has no fallback database | no-hardcoded-project.test.js red on the old app.js (names both values); deploy.sh check tested on three fake builds (missing → stop, same → go, different → stop) and printed both halves build against production on the real deploy |
| samo-dev ปี SAMO 2571 → 2569 | dev only, data only: terms as on production, the two 2026-10-18 test archives (2569, 2570) deleted, วาระ SAMO'69 bridged to 2569; tools/browser/year-page.mjs all passed twice. A snapshot was saved in that session's scratchpad (may be gone). The owner's own 2572 test draft ("หัวหน้าเอิง") was left alone |
Is the test site separated from production? Yes. Every served test build calls samo-dev only (grepped the preview's core-*.js and Passport routes-*.js). samo-dev shows production's NAMES because it holds a copy of production's data (TEAM-WORKFLOW D1). Proof it is a copy, not a live read: 974 scans on dev (newest 27 ส.ค.) against 1,364 on production (newest 29 ต.ค.).
Later the same day: gap-hunting passes (owner: "keep checking … until you find none gap")
| Found | Done |
|---|---|
samo-dev had NO live sync for team_nodes / team_members (0048): the 2026-08-27 rebuild never carried the supabase_realtime publication | re-added on dev; tools/dev-refresh.mjs step 6 now copies the membership and refuses a copy whose list differs. ⚠️ that step has not run end to end (a rebuild wipes samo-dev); its two SQL statements were run on both projects |
A production typo in one person's kkumail (@kku,ail.com), fixed earlier in this session on the owner's report, was recorded nowhere | fixed on production in public.people and mirrored to the matching team_members row by the guarded mirror; recorded here (no name — repo is public) |
tools/browser/year-page.mjs STARTED ปี SAMO 2572 on samo-dev (12:24 Thai): its stub swapped window.fetch back after a fixed 1.5 s | repaired by hand; the year writers are now blocked at the network layer for the whole run; mutation-tested. Write-up docs/mistakes/tooling-proofs.md |
| That switch + undo nulled samo-dev's 10 Passport ฝ่าย → ทีม SAMO links | re-linked on dev; the production gap is HANDOFF §35e (VERIFIED, owed a decision) |
| team0271 red 26/36 on production: its "root" subject became the owner's ถาวร "Past developer"; its Discord subject was absent on dev (case 67 passed vacuously) | subjects chosen by property + planted; 36/36 on both. team0272 26 · team0270 36 · year0248 23 · team0224 19 · year0242 23 · passport0247 25 — all green on both projects |
| 2026-11-02: a buyer with a username account forgot the password; Antigravity had looked them up with 12 read-only SELECTs, leaving several people's emails, phones and orders in its scratch folder | its log checked — reads only, nothing to undo in the database; that session folder deleted. No recovery path exists for username accounts → HANDOFF §38. After the owner confirmed identity: one-time password set on production, sign-in tested and signed out; steps in skills/reset-a-username-password.md |
Deliberately NOT verified
- The อาจารย์ view on /me has never been opened in a browser: no อาจารย์ has an
advisors.emailon either database (HANDOFF §36d). - Which tab created "SAMOWEB FOUNDER MD50" is a HYPOTHESIS from the API log (it cannot tell tabs apart); the missing live sync is VERIFIED.
- Two browser runs failed and then passed on rerun: one straight after
npm run buildran beside the dev server, one straight after 0273 reached samo-dev's publication. Neither recurred in 6 runs; the cause is not proven. (A third,year-page.mjson 2026-11-02, WAS explained: a slow load outran its fixed-time stub — see the gap-pass table above. Slowness is the common thread; still a HYPOTHESIS for the first two.) - §37's Discord gaps are read from the code, never run through a real switch.
Owed by people, not code
- Owner: pin the hidden roots อาจารย์ and เจ้าหน้าที่คณะแพทย์ as ถาวร (§36c). Until then a year prepared from EMPTY deletes them on 1 มี.ค.
- ระบบบ้าน admins: fill
advisors.email(empty for all 125, §36d). - Owner decisions (STATE.md 0b): §35e — how Passport's ฝ่าย links survive a year switch, before 1 มี.ค. 2570; §38 — a self-service way back for username accounts that forget their password.