ambek .planning

This commit is contained in:
araharah-executor
2026-10-23 22:37:55 +08:00
parent e512104d5e
commit 275879a18b
54 changed files with 9921 additions and 0 deletions
@@ -0,0 +1,58 @@
# Phase 4: Destination Search + KL Gazetteer - Discussion Log
> **Audit trail only.** Do not use as input to planning, research, or execution agents.
> Decisions captured in CONTEXT.md — this log preserves the analysis.
**Date:** 2026-10-23
**Phase:** 04-destination-search-kl-gazetteer
**Mode:** default (interactive)
## Areas Discussed
### Search interaction surface
| Question | Options presented | Selection |
|---|---|---|
| Where does the user type? | /cari command / free-text / in-webview / command+shared module | /cari command |
| Shortlist presentation | best+inline alternates / list-then-choose / single result | Best + inline alternates |
| Backend architecture | gazetteer-first pluggable / KL-scale WASM now / full pivot | Gazetteer-first pluggable |
### Photon/VPS detour (user education round)
User asked what Photon is, why static hosts (Cloudflare Pages/GitHub Pages) can't run it, and proposed SQLite/sql.js and Rust-WASM (tantivy) alternatives — including a full "Malaysia-only Photon-lite" sketch (Geofabrik pbf → SQLite/FTS5 → sql.js in browser on GitHub Pages, forkable). Explained: static hosts execute nothing; the Worker is mandatory for the webhook regardless; full-MY index exceeds Worker memory caps; client-side engine means huge mobile downloads; chat-side /cari needs server-side answers. The forkable endgame is preserved as SearchSource backend #2. **Notable: user's pushback killed the default VPS-now plan** — search is $0 in-Worker; VPS defers to Phase 5 (Valhalla).
### License (user-surfaced area)
| Question | Options presented | Selection |
|---|---|---|
| License for forkability | MIT / Apache-2.0 / GPL-3.0 / later | **GPL-3.0** |
### Gazetteer + Malay normalizer
| Question | Options presented | Selection |
|---|---|---|
| Sourcing | hand-curated / OSM pipeline / curated + Overpass top-up | Curated + Overpass top-up |
| Canonical format | JSON in repo / SQLite now (user asked "how heavy?": ~1.5MB WASM + cold-start of pure cost at this scale) | JSON in repo |
| Normalizer | rules+folding+fuzzy residual / fuzzy only / research decides | Rules + folding + fuzzy residual (after a worked-example explanation of why short-word fuzzy fails: jln→jalan is high-distance, tmn≈Tun collisions, vowel-drop conventions, glued words, Stesen/Station synonym class) |
| Aliases | in entries / separate table | Aliases in entries |
### Venue card + deep-link hand-off
| Question | Options presented | Selection |
|---|---|---|
| startapp payload | plain id / full payload / signed | Plain gazetteer id |
| Venue card | sendVenue + buttons / styled message | sendVenue + buttons |
| ONBD-03 scope | minimal PWA hooks / full PWA | Minimal PWA hooks |
### Acceptance corpus + thresholds
| Question | Options presented | Selection |
|---|---|---|
| Corpus shape | pinned golden set / log-derived | Pinned golden set (~60–100, incl. negatives) |
| Bake-off close | 90% top-3 + honest negatives / 80% top-1 / judgment | 90% top-3 + honest negatives; escalation order fixed (table edits → backend #2 → Photon) |
## Corrections Made
None reversed; two user questions reshaped defaults materially (VPS deferral; license capture). Third-round education (fuzzy-vs-rules) ended in the recommended option being chosen with informed consent.
## Auto-Resolved
Not applicable.
## External Research
Deferred to planning's research step per roadmap (gazetteer sourcing, Overpass shapes, corpus composition details).