After a Railway ban or account loss, restore the entire IGLA fleet from this
repo. Three trigger paths, all documented in
docs/DISASTER_RECOVERY.md:
- Web button (above) — published from
railway-template.json. Provisions all 6 control-plane services (1 MCP + 3 champion seeds + dwagent + Neon backup-to-R2 sidecar). - GitHub Actions —
Actions → DR Deploy from template → account_alias=accN, confirm=PHI. Workflow:deploy-from-template.yml. - CLI —
tri-railway service deploy …for each service indisaster-recovery/fleet-snapshot.json(refreshed hourly byfleet-snapshot.yml). - MCP chat — say “восстанови флот на acc3, подтверждаю PHI” to any client connected to the
trios-railway-mcpserver. Tools:railway_dr_snapshot,railway_dr_restore(issue #17).
Fleet shape, audit ledger, and champion BPB rows survive any single-account ban
— see the survives-table in docs/DISASTER_RECOVERY.md.
Anchor: phi^2 + phi^-2 = 3.
Manage Railway services for the IGLA project (e4fe33bb-3b09-4842-9782-7d2dea1abc9b)
- online audit, with the source of truth in
.trinity/experience/and Neon.
Anchor: phi^2 + phi^-2 = 3
Companion to:
gHashTag/trios-trainer-igla— trainergHashTag/trios-mcp— MCP wrappergHashTag/trios#143— eternal IGLA RACE dashboard
v0.0.1 — bootstrap. Rings landed:
| Ring | What | Issue |
|---|---|---|
RW-00 |
Identity types + R7 RailwayHash |
#2 |
RW-01 |
GraphQL transport (skeleton) | #3 |
AU-00 |
Neon DDL migrations | #6 |
AU-01 |
Drift detector D1..D7 (in-memory) | #7 |
EX-00 |
.trinity/experience writer |
#10 |
BR-CLI |
tri-railway subcommand router |
#11 |
Remaining: #4..#5 (typed read/write GraphQL), #8..#9 (audit ledger writer + Gate-2 verdict), #12..#17 (integration + cron + MCP).
cargo build --release
# binary: ./target/release/tri-railway# Print version
tri-railway version
# Print idempotent Neon DDL (issue #6)
tri-railway audit migrate-sql | psql "$NEON_DATABASE_URL"
# Append one L7 experience line
tri-railway experience append \
--issue '#1' --phi-step EXPERIENCE \
--task 'bootstrap repo' --status OK \
--soul-name DustyDeployer --agent GENERAL| Rule | How trios-railway honours it |
|---|---|
| R1 Rust-only | One workspace, three crates, one binary; no Python, no .sh. |
| R5 Honesty | Audit verdict exit codes 0 / 1 / 2 reflect Gate-2, drift, NOT YET. |
| R7 Triplet | Every mutation seals RAIL=<verb> @ project=<8c> service=<8c> sha=<8c> ts=<rfc3339> via hash::RailwayHash::seal. |
| R9 Embargo | Mutation surface (issue #5) is gated behind igla check <sha>. |
L1 No .sh |
Self-checked in CI. |
| L2 Closes # | Every commit references an issue (Closes #N). |
| L3 Clippy 0 | CI runs cargo clippy -- -D warnings. |
| L4 Tests | cargo test --all enforced in CI. |
| L7 Experience | EX-00 is append-only; the writer never truncates. |
| L8 Push first | This README, the workspace, and the CI are pushed in the same commit that closes #1. |
| L20 Sessions → tools | Every operator step is a tri-railway … subcommand. |
| L21 Context immutability | The experience writer never seeks; it only opens in append mode. |
operator / agent
│
▼
tri-railway <verb>
│
├── trios-railway-core GraphQL transport + identity types
├── trios-railway-audit drift detector + Neon DDL
└── trios-railway-experience .trinity/experience writer
│
▼
Railway GraphQL ←────────── Neon (igla schema, audit tables)
tri-railway audit migrate-sql emits the DDL for these tables in the
existing public schema next to the IGLA RACE ledger:
railway_projectsrailway_servicesrailway_audit_runsrailway_audit_eventsv_railway_drift_open(latest run, open events only)
cargo fmt
cargo clippy --all-targets --all-features -- -D warnings
cargo test --allApache-2.0