diff --git a/comuline-krl-data/analysis.md b/comuline-krl-data/analysis.md index 7f11208..86e5f0b 100644 --- a/comuline-krl-data/analysis.md +++ b/comuline-krl-data/analysis.md @@ -18,19 +18,31 @@ - API live; 113 stations served. Row counts sampled: MRI 1,045 · DP 730 · CLT 683 · JAKK 367 · BOO 341 · TNG 84 · BEK 0 (station present, no schedule rows). - **Freshness:** the newest `updated_at` values are bulk 2024-11-13 and partial re-sync 2025-03-30; nothing newer. Repo activity stops the same month (`api` last push 2025-03-30). Conclusion: the daily cron is not currently running; the data is a frozen snapshot (~18 months old as of this audit). -- **Scope of that staleness — comuline's replicated copy only:** the official upstream API (`api-partner.krl.co.id`) was **not** freshness-assessed (no credentialed access, by design). A frozen replica does not imply a broken upstream. Timeline note: the hardcoded token remained valid until 2025-08-02, so token expiry does not explain the ~2025-03-30 sync stop; comuline's own sync mechanism stopping does (inferred cause — external scheduler/manual runs; no cron trigger exists in the repo's worker config or workflows). +- **Scope of that staleness — comuline's replicated copy only, and it is an *operational* stop:** the official upstream API was **not** freshness-assessed (no credentialed access, by design), and repo evidence (below) shows the upstream kept evolving while comuline stopped following. A frozen replica does not imply a broken upstream. - **No realtime tracking:** no position/GPS data in the bundle or API. The product is schedule lookup with locally saved stations. +## Why the sync stopped — repo evidence (verified 2026-10-12) + +- **Last successful sync = 2025-03-30 ~14:49 UTC** (newest `updated_at` passes) — ~20 minutes after the day's last merge (PR #11 merged 14:29 UTC). Nothing since; operations just stopped. +- **There is no automation in the repo at all.** No cron triggers in worker config (checked `wrangler.toml` pre-v4 and the current `wrangler.jsonc`), no scheduled GitHub workflow (only PR-build + push-deploy), and no `scheduled()` handler in the worker entry (`export default app` — a Cloudflare Cron Trigger could not even fire). The README's "daily cron at 00:00" therefore lived *outside* the codebase — manual/CLI runs or a machine-local crontab (inferred). No reproducible scheduling infrastructure was ever shipped. +- **The official side kept moving; comuline needed repeated adaptation:** + - endpoint path `…/krlweb/v1` → `…/krl-webs/v1` (absorbed by PR #11, merged 2025-03-30); + - endpoint `/schedule` → `/schedules` (PR #16, opened 2026-01-26, **still open/unmerged**); + - tokens rotate ~yearly: main's hardcoded token expired 2025-08-02; the newer token shown in PR #16 was minted 2025-08-06 (exp 2026-08-06), obtained "from the official web app network request" per that PR's README change. +- **Maintainer dormant on this project, active on GitHub generally:** unmerged since early 2025 — PR #14 (MRT support, 2025-04-01), PR #16 (2026-01-26), issues #15 (TransJakarta request, 2025-11-12), #17 (Jatake station, 2026-02-01); web repo: issue #16 + PR #17 open since Apr 2025. The author's public GitHub events show activity as recent as this week — just not on comuline. +- **Verdict:** the stale side is **comuline — its data copy *and* its abandoned operations**; the official KRL side is alive and has drifted (path renames, token rotation). As shipped, comuline's sync would fail today on both counts (expired token; outdated paths). Confidence: established for repo facts/timestamps; "cron ran externally" inferred; upstream's exact current state not assessed (no credentialed calls). + ## Boundaries respected (deliberate limits) - Upstream `api-partner.krl.co.id` was probed once **without credentials** (returned 404) to characterize the auth wall. -- No calls were made using the token published in the public repo. The token is not reproduced in this vault. +- No calls were made using the tokens published in the public repo/PRs (values not reproduced in this vault — including the newer one in PR #16). - No attempts to bypass auth, rate limits, or access controls. ## Confidence -- **Established:** pipeline structure and architecture (public source + live API); coverage counts; staleness timestamps; absence of live tracking; upstream URL and auth wall. -- **Inferred:** why the sync stopped (project dormancy vs token expiry vs upstream change — not observable from outside); whether the upstream data model changed since. +- **Established:** pipeline structure and architecture (public source + live API); coverage counts; staleness timestamps; absence of live tracking; upstream URL and auth wall; the stop timeline and absence of in-repo automation (repo history). +- **Inferred:** the sync ran manually/externally — machine-local cron or CLI habit; operational abandonment is the freeze cause. +- **Not assessed:** current upstream state and exact API shape today (no credentialed access). ## Artifacts diff --git a/comuline-krl-data/index.md b/comuline-krl-data/index.md index fe29489..ab33dae 100644 --- a/comuline-krl-data/index.md +++ b/comuline-krl-data/index.md @@ -23,7 +23,7 @@ updated: 2026-10-12 - **Architecture:** daily cron → Cloudflare Workers (Hono + Bun) → Neon Postgres (Drizzle ORM) + Upstash Redis read cache → public REST API with OpenAPI spec → Vite/React web app (plus native apps) consuming it via a typed `openapi-fetch` client. - **Coverage (from live API):** 113 stations — 95 daop-1 (Jabodetabek), 17 daop-6 (Yogyakarta area), 1 daop-2 (Purwakarta); 111 typed KRL + 2 LOCAL (Cikampek, Purwakarta). Sample row counts: MRI = 1,045 departures; DP = 730; CLT = 683; JAKK = 367; TNG = 84; BEK = 0. - **No live tracking:** schedules and departures only — no GPS/position data anywhere (bundle + API verified). "Real-time" in their copy means "current schedule lookup", not live trains. -- **Data frozen:** schedule rows show last updates 2024-11-13 (bulk) + 2025-03-30 (partial passes); nothing newer. Repo activity stops 2025-03-30 (api) / 2025-04-03 (web). +- **Data frozen — an ops stop, not a breakage:** last successful sync ~2025-03-30 (rows show 2024-11-13 bulk + 2025-03-30 passes — both matching the last merge day). No automatic sync exists in the repo at all (the README's "daily cron" lived outside the codebase; no cron triggers/workflows/scheduled handler anywhere). The official KRL side stayed alive and drifted (endpoint renames, token rotation) — adaptation fixes sit **unmerged** (PR #16, Jan 2026). Details: [[comuline-krl-data/analysis|Analysis]]. ## Files diff --git a/comuline-krl-data/next-steps.md b/comuline-krl-data/next-steps.md index 9d94ea5..1266f18 100644 --- a/comuline-krl-data/next-steps.md +++ b/comuline-krl-data/next-steps.md @@ -2,7 +2,7 @@ ## Open questions -- Why did comuline's sync stop (~2025-03-30)? Project dormancy, token expiry, or upstream change — not observable from outside. (Author is reachable via the links in [[comuline-krl-data/sources|Sources]].) +- ~~Why did comuline's sync stop?~~ **Mostly resolved (see [[comuline-krl-data/analysis|Analysis]] timeline):** operations stopped ~2025-03-30 — no in-repo automation existed to fail (external/manual runs ended), and upstream drift since (endpoint renames, yearly token rotation) went unmerged. Residual: whether the author revives it (contactable via [[comuline-krl-data/sources|Sources]]). - Current shape of the upstream partner API's data model (`krl-station`, `schedule`) — unverified; no credentialed call was made. - **Live KRL tracking sources:** community trackers claim ~30 s updates (trackmycommuter, krljakarta.com, botkita). Where do their positions come from? A dedicated audit would be its own subtopic (KRL realtime — likely a different upstream than schedules). - MRT Jakarta / LRT Jabodebek data sources (`jakartamrt.co.id` API was referenced by one community project) — candidates for umbrella subtopics. diff --git a/comuline-krl-data/sources.md b/comuline-krl-data/sources.md index 1e0045e..e993e8b 100644 --- a/comuline-krl-data/sources.md +++ b/comuline-krl-data/sources.md @@ -9,6 +9,8 @@ - ★ Source repos: `github.com/comuline/web` (Vite/React; openapi-fetch + swr-openapi; i18n default `id`), `github.com/comuline/api` (Hono + Bun; Drizzle + Neon Postgres + Upstash Redis; sync scripts under `src/sync/`), plus `android` (Kotlin) and `ios` (Swift). - ★ Author: Abiel Zulio M — `github.com/abielzulio`; prior project `abielzulio/jadwal-krl`. - ★ Repo activity: `api` last push 2025-03-30 (116★), `web` 2025-04-03 (95★), `android` 2025-08-22, `ios` 2024-09-02. None archived; all dormant on the data side. +- ★ Repo timeline (merged vs open): PR #11 "base url to env" merged 2025-03-30 (last merge day; also PR #12/#13 wrangler+migrations). **Open/unmerged since:** PR #14 "feat: mrt schedule support" (2025-04-01), PR #16 "Handle KAI token config and route normalization" (2026-01-26 — env token, `/schedule` → `/schedules`, station-name normalization), issue #15 "Transjakarta API Support" (2025-11-12), issue #17 "Added of Jatake Station" (2026-02-01). Web repo: issue #16 + PR #17 open since Apr 2025. +- ★ Author activity: `abielzulio` is active on GitHub as of Oct 2026 (public events) — but not on comuline. Contributors (`ln2r`, `ahmadnathanfirdaus`) still submit fixes that go unmerged. ## Upstream (official KAI Commuter)