Skip to content

feat: add canonical station layouts - #350

Merged
duncanleo merged 20 commits into
mainfrom
codex/station-layout-research-inventory
Jul 19, 2026
Merged

feat: add canonical station layouts#350
duncanleo merged 20 commits into
mainfrom
codex/station-layout-research-inventory

Conversation

@duncanleo

Copy link
Copy Markdown
Member

Summary

  • add 546 canonical station exits across 160 stations
  • add required lastUpdated provenance dates to station layout records
  • add current platform labels, line/service mappings, and standardized MRT door counts
  • cover all current MRT and LRT stations with 442 platform faces
  • add 153 platform-pair transfer paths across every current interchange
  • classify Bukit Panjang, Newton, and Tampines as out-of-station interchanges
  • retain the station-layout plan while removing temporary research scripts and staging artifacts

Why

Station records previously lacked complete passenger-facing layout data. This fills the canonical target layout directly in data/station so downstream consumers can render exits, boarding platforms, service directions, door counts, and interchange connectivity without relying on temporary research artifacts.

Data boundaries

  • MRT door counts use rolling-stock standards by line.
  • LRT door counts remain absent because one- and two-car formations coexist.
  • Transfer distances and traversal times remain null unless a defensible endpoint-to-endpoint measurement is available.
  • Door-relative escalator and lift anchors remain empty where official/operator public data does not support a reliable network-wide mapping.
  • Future station and future service changes are not modeled as current layout data.

Validation

  • npm run data:validate
  • npm run check
  • npm test — 30 files and 314 tests passed
  • coverage audit: no active station missing platforms, no empty platform service mappings, and no missing cross-line platform pair at current interchanges

@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 191 files, which is 91 over the limit of 100.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 5a64c698-58fd-45eb-bc7f-5075db46c868

📥 Commits

Reviewing files that changed from the base of the PR and between ff1a07d and 8f339c4.

📒 Files selected for processing (191)
  • .changeset/closed-exits-update.md
  • data/station/ADM.json
  • data/station/ALJ.json
  • data/station/AMK.json
  • data/station/BAK.json
  • data/station/BBS.json
  • data/station/BBT.json
  • data/station/BCL.json
  • data/station/BDK.json
  • data/station/BDL.json
  • data/station/BDM.json
  • data/station/BDN.json
  • data/station/BDR.json
  • data/station/BFT.json
  • data/station/BGB.json
  • data/station/BGK.json
  • data/station/BGS.json
  • data/station/BKP.json
  • data/station/BKT.json
  • data/station/BLY.json
  • data/station/BNK.json
  • data/station/BNL.json
  • data/station/BNV.json
  • data/station/BRH.json
  • data/station/BSH.json
  • data/station/BSR.json
  • data/station/BTN.json
  • data/station/BTW.json
  • data/station/CBR.json
  • data/station/CCK.json
  • data/station/CDT.json
  • data/station/CGA.json
  • data/station/CGL.json
  • data/station/CLE.json
  • data/station/CNG.json
  • data/station/COM.json
  • data/station/COV.json
  • data/station/CPV.json
  • data/station/CRE.json
  • data/station/CRQ.json
  • data/station/CSW.json
  • data/station/CTH.json
  • data/station/CTM.json
  • data/station/CTN.json
  • data/station/DAM.json
  • data/station/DBG.json
  • data/station/DKT.json
  • data/station/DTN.json
  • data/station/DVR.json
  • data/station/EPN.json
  • data/station/EUN.json
  • data/station/FCN.json
  • data/station/FJR.json
  • data/station/FMW.json
  • data/station/FNV.json
  • data/station/FRP.json
  • data/station/FRR.json
  • data/station/GCL.json
  • data/station/GLB.json
  • data/station/GRB.json
  • data/station/GRW.json
  • data/station/HBF.json
  • data/station/HGN.json
  • data/station/HLV.json
  • data/station/HME.json
  • data/station/HPV.json
  • data/station/HVL.json
  • data/station/HVW.json
  • data/station/JKN.json
  • data/station/JLB.json
  • data/station/JLP.json
  • data/station/JUR.json
  • data/station/KAL.json
  • data/station/KAP.json
  • data/station/KDL.json
  • data/station/KEM.json
  • data/station/KGK.json
  • data/station/KKB.json
  • data/station/KPG.json
  • data/station/KPL.json
  • data/station/KRG.json
  • data/station/KRJ.json
  • data/station/KTB.json
  • data/station/KTH.json
  • data/station/KTP.json
  • data/station/KVN.json
  • data/station/LBD.json
  • data/station/LKS.json
  • data/station/LRC.json
  • data/station/LTI.json
  • data/station/LTR.json
  • data/station/LVR.json
  • data/station/LYR.json
  • data/station/MAX.json
  • data/station/MBT.json
  • data/station/MFL.json
  • data/station/MPR.json
  • data/station/MPS.json
  • data/station/MRB.json
  • data/station/MRD.json
  • data/station/MRM.json
  • data/station/MSL.json
  • data/station/MSP.json
  • data/station/MTC.json
  • data/station/MTR.json
  • data/station/NBG.json
  • data/station/NCH.json
  • data/station/NEW.json
  • data/station/NOV.json
  • data/station/NPR.json
  • data/station/OAS.json
  • data/station/OBV.json
  • data/station/ONH.json
  • data/station/ORC.json
  • data/station/OTP.json
  • data/station/PER.json
  • data/station/PGC.json
  • data/station/PGL.json
  • data/station/PGP.json
  • data/station/PMN.json
  • data/station/PND.json
  • data/station/PNR.json
  • data/station/PNX.json
  • data/station/PPJ.json
  • data/station/PSR.json
  • data/station/PTP.json
  • data/station/PTR.json
  • data/station/PYL.json
  • data/station/QUE.json
  • data/station/RCR.json
  • data/station/RDH.json
  • data/station/RFP.json
  • data/station/RIV.json
  • data/station/RMB.json
  • data/station/RNG.json
  • data/station/RNJ.json
  • data/station/SAV.json
  • data/station/SBW.json
  • data/station/SDM.json
  • data/station/SER.json
  • data/station/SGL.json
  • data/station/SGR.json
  • data/station/SHV.json
  • data/station/SHW.json
  • data/station/SIM.json
  • data/station/SKG.json
  • data/station/SMD.json
  • data/station/SMG.json
  • data/station/SMK.json
  • data/station/SNJ.json
  • data/station/SOM.json
  • data/station/SPL.json
  • data/station/STK.json
  • data/station/STV.json
  • data/station/TAM.json
  • data/station/TAP.json
  • data/station/TCR.json
  • data/station/TIB.json
  • data/station/TKG.json
  • data/station/TKK.json
  • data/station/TKL.json
  • data/station/TKT.json
  • data/station/TKW.json
  • data/station/TLA.json
  • data/station/TLB.json
  • data/station/TLK.json
  • data/station/TNG.json
  • data/station/TNM.json
  • data/station/TPE.json
  • data/station/TPG.json
  • data/station/TPW.json
  • data/station/TRH.json
  • data/station/TSG.json
  • data/station/TWR.json
  • data/station/UBI.json
  • data/station/UPC.json
  • data/station/UTS.json
  • data/station/WDL.json
  • data/station/WDN.json
  • data/station/WDS.json
  • data/station/WLH.json
  • data/station/XPO.json
  • data/station/YCK.json
  • data/station/YIS.json
  • data/station/YWT.json
  • docs/plans/active/station-layout-data.md
  • packages/core/src/schema/Station.test.ts
  • packages/core/src/schema/Station.ts
  • packages/fs/src/index.test.ts
  • packages/fs/src/validate.ts
  • scripts/generate-fixtures.mjs

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Review on demand using usage pricing
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/station-layout-research-inventory

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@duncanleo
duncanleo marked this pull request as ready for review July 18, 2026 03:09
chatgpt-codex-connector[bot]

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as outdated.

chatgpt-codex-connector[bot]

This comment was marked as outdated.

@duncanleo
duncanleo merged commit d497288 into main Jul 19, 2026
4 checks passed
@duncanleo
duncanleo deleted the codex/station-layout-research-inventory branch July 19, 2026 02:48
duncanleo added a commit that referenced this pull request Jul 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant