docs: expand README for Forgejo visibility and cross-links
Some checks are pending
CodeView ATO CI / rust (push) Waiting to run
CodeView ATO CI / integration (push) Blocked by required conditions

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Mona Lisa 2026-06-14 20:38:01 +00:00
parent a8d40b466b
commit bb89490f5e

View file

@ -1,22 +1,57 @@
# ato
# ATO — Automatic Train Operation
Standalone **Automatic Train Operation** (no ETCS, no ATP). Lean Rust controller talking to [TrainSim](../trainsim).
Standalone **Automatic Train Operation** for railway-style speed control.
**No ETCS. No ATP.** Lean Rust, safety-oriented style.
## Layout
Companion simulation: **[TrainSim](https://git.italiatts.online/rwsholdem/trainsim)**
| Path | Role |
|------|------|
| `crates/ato-core/` | Pure control logic (zero deps, no I/O) |
| `crates/ato-app/` | HTTP client + control loop |
| `config/` | Replaceable parameters (`ato.default.json`) |
| `spec/` | Interface examples (`interface.md`, JSON samples) |
| | |
|---|---|
| **Forgejo** | https://git.italiatts.online/rwsholdem/ato |
| **Language** | Rust |
| **Role** | Reads train state, outputs traction/brake commands |
## Run (via CodeView ato-lab DinD)
## What it does
1. Load parameters from `config/ato.default.json` (replaceable file, no rebuild needed for tuning).
2. Connect to TrainSim over HTTP (`spec/interface.md`).
3. **Cruise mode:** from standstill → hold target speed on a loop track.
4. Core also supports stop-at-position / brake-curve helpers (`ato-core`).
## Repository layout
| Path | Purpose |
|------|---------|
| `crates/ato-core/` | Pure control logic — **zero dependencies**, no I/O, `#![forbid(unsafe_code)]` |
| `crates/ato-app/` | Control loop + minimal HTTP client (`http.rs`, std only) |
| `config/` | Runtime parameters (`ato.default.json`) |
| `spec/` | Shared interface contract + JSON message examples |
| `Dockerfile` | Multi-stage build, runs tests during image build |
## Interface (summary)
See [`spec/interface.md`](spec/interface.md). TrainSim implements the server; ATO is the client.
- `GET /train/state` — speed, position, track length
- `POST /train/actuate``{ "traction_pct": 0100, "brake_pct": 0100 }`
- `POST /sim/start` · `POST /sim/stop`
## Build & test
```bash
cargo test --workspace
docker build -t ato .
```
## Run with TrainSim (CodeView lab, nested Docker)
On the CodeView VPS, integration runs **inside DinD** (not on the host):
```bash
cd /root/code-view/profiles/ato-lab
chmod +x run-e2e.sh
./run-e2e.sh
```
Detailed ATO design notes — *TODO*.
---
*Detailed ATO design and SIL notes — to be expanded in a later README revision.*