Development phases¶
- Phase 0: POC pipeline + six pluggable integrations (done, this change). Beach discovery, live conditions, heuristic scoring, CLI entry point, and local backends for query synthesis, distance, agentic tool access, sighting storage, photo analysis, and observability. Zero cloud/Telegram setup required for any of it.
- Phase 1: Telegram bot. Long-polling loop, native location sharing,
AppConfig'stelegramBotTokenactually wired up,--report-sighting/--analyze-photo's CLI stand-ins replaced by real Telegram message/photo handlers. Still zero cloud spend. SeeTELEGRAM-SETUP.mdfor registering the bot and getting credentials ready ahead of this phase. - Phase 2: Go live on a cloud backend, deliberately. Opt into a cloud backend (GCP, MIP-0057) for whichever integrations you actually want (all optional, none required). First real cloud spend, entirely your choice which pieces.
- Phase 3: Deploy. A hosted webhook. The first deploy artefact is
already here and free: marola-site's
site.ymlbuilds MIP-0005's boards every 3 h and publishes the static map to GitHub Pages: no cloud account, no server, no per-visitor cost. The second is the image a hosted service will run:Dockerfile(jvm= Temurin 25 JRE + the fat jar,native= the GraalVM binary on distroless,dev= the Nix dev shell) anddocker-compose.yml(marola + an Ollama sidecar): MIP-0008,RUN-LOCALLY.md§10. - Phase 4: Harden & calibrate. Caching, per-user rate limiting, feeding accumulated
SightingStorereports back into the jellyfish/whale heuristics (ARCHITECTURE.md§8).
Do not skip Phase 1 to get to Phase 2 early; see AGENTS.md's phase-discipline rule: a Telegram
bot that can't yet share a real location or photo has nothing meaningful to feed ARCHITECTURE.md
§5's integrations in production, even though every one of them is independently testable today via
Main's CLI flags.