How far can an AI climb?
Watch AI play. Inspect the run. Help it climb. Ascension is open tooling for game-playing agents, starting with Slay the Spire 2. Replay a pinned, deterministic gateway contract here and re-run it with cargo. Later repositories include dated, bounded Windows/Linux campaign and replay records through harness, MCP, gateway, and mod, plus Runtime-v4 source/component paths and bounded native co-op admission diagnostics. The dated records do not establish native settlement, native multiplayer gameplay, recovery, or release publication. Model-played Victory and broader compatibility remain unverified.
Independent project; not affiliated with Mega Crit or Valve.
The line that decides
An AI holds a lease that went stale. Without a fence, its next request would reach the game host. With this contract, the gateway denies it before any transport call happens. A person can read the exact line that decided.
control_plane.rs::stale_epoch_and_wrong_instance_are_denied_before_transport · sts2-gateway@e7bce21
The ascent
The runtime path, top tier first as printed and read from the bottom up. The repository descriptions and test stamps below are the historical 2026-09-02 foundation snapshot; they are not current capability ceilings. See later bounded runtime evidence. The two endpoints are not repositories.
-
tier 5 · endpoint
model / provider
A pluggable model-provider interface exists in the harness; the pinned proof calls no provider. Model cost for this proof: none.
-
tier 4 · repository
Experiment coordinator for AI runs: episodes, a pluggable model-provider interface, replay of recorded records, and artifact lineage.
-
tier 3 · repository
Thin MCP tool adapter that maps approved calls to the authenticated gateway API without bypassing it.
-
tier 2 · repository
In-memory control plane for game-host instances: lifecycle, one lease per instance with epoch fencing, and fixed routes.
-
tier 1 · repository
Game-process adapter: a bounded main-thread work queue, versioned ABI check, and HTTP request admission limits.
-
tier 0 · authority
game host
The game process keeps authority. The browser proof never launches or connects to it; later bounded host evidence is recorded separately.
Beside the ascent, not runtime tiers
-
domain
Host-independent Rust domain core: typed game-state values, pure validation, and policy rules with no I/O.
-
metadata
Shared metadata contracts (identity, versions, error envelopes) in language-neutral schemas with golden test vectors.
Pick your path
Four ways in. Each one answers its own first objection with the same proof, translated for that reader.
The browser proof touches no game; inspect its exact boundary and the separate host evidence.
- Objection
- “Is this a cheat/bot for the game?” — This proof uses no game files or live host. The organization also develops opt-in host adapters; the host remains authoritative.
- First win
- See the denial line and the stamp that says
unverifiedfor live play. - Proof frame
- Stale lease fenced before transport.
- Do this
- Run the proof
- Next step
- Read evidence.html.
- Contribute
- Report a confusing label via the evidence issue form.
One boundary (the gateway lease fence) and one bounded first task (add a fence case fixture) — no need to understand all six repos.
- Objection
- “Where do I even start across six repos?”
- First win
cargo runprints the identical trace in under a minute.- Proof frame
- Same trace, with the exact test names and source lines.
- Do this
- Run the recipe with cargo
- Next step
- Open the fence-case starter issue.
- Contribute
- Submit a new fixture or contract observation via the proof-recipe form.
An MCP tool call maps to exactly one gateway request path, and malformed frames never reach the gateway.
- Objection
- “Is this just a wrapper that lets the model do anything?”
- First win
- Reproduce the fixture locally without any credentials.
- Proof frame
- MCP seam trace (
seam.rs) + gateway fence. - Do this
- Read architecture.html, then run the recipe.
- Next step
- Sketch an adapter example against the tool schema.
- Contribute
- Adapter example or schema observation via issue form.
Authority stays with the host; the gateway fences stale epochs, wrong instances, and oversize bodies before transport, and fails closed on faults.
- Objection
- “What happens when something breaks or a token leaks?”
- First win
- Verify the claim-to-test mapping yourself.
- Proof frame
- Fail-closed cases (
readiness_and_crash_fail_closed,shutdown_reports_stop_failure_and_closes_admission). - Do this
- Read evidence.html + SECURITY.
- Next step
- File a security note privately.
- Contribute
- Security note or failure-handling observation.
Historical foundation tests, current evidence, and remaining goals
confirmed Confirmed evidence
- Gateway: lease and epoch fencing (
StaleEpoch,WrongInstance,WrongCaller,WrongSession,WrongLease,Missing,Expired), fixed routes, body and response byte limits, fail-closed on process, readiness, and transport faults. In memory, with injected fakes. - MCP adapter: one tool call maps to exactly one gateway request; malformed JSON, invalid params, and unsupported capabilities are rejected before the gateway.
- Game mod: bounded main-thread queue, versioned ABI descriptor validation, transport-free HTTP admission guard.
- Harness: retry with idempotency, record and replay, artifact lineage, bounded shutdown — against deterministic fakes.
- Core and protocol: pure validation with no mutation; golden vectors reproducible.
- The six foundation Rust workspaces had policy and local test checks at the pinned commits. Current repositories include documented non-Rust integration and tooling.
source-derived Dated owner records
- Current owner records cover a visible Astra-controlled Windows campaign and fresh replay to Defeat (333 settled actions), a Linux campaign that reached Defeat after one controller restart (431 settled actions), and a separate fresh Linux replay that began at Setup and completed all 431 actions without continuation. They also cover forced native Victory observation, read-only coordinator synchronization, Runtime-v4 source/component paths, and a bounded native co-op admission diagnostic whose disconnect and recovery observation failed. See the dated evidence update for scope and limits.
proposed Proposed only and unverified Remaining scope
- Model-played campaign Victory, all characters, seeds, and branches, and the four-model live race described at aiascension.tech remain unverified or proposed.
- Production assurance for listener authentication, process lifecycle, native multiplayer gameplay and recovery, and game connections; source implementation and bounded runtime evidence are not that assurance.
- Isolation under real concurrency; host compatibility; any release.
- Complete current-package host coverage, full rule and branch coverage, clean-install/update/rollback, Workshop publication, and release support.
- Observability evidence tying real gameplay telemetry to both configured backends, replay scoring, and training outcomes.
- Traction of any kind: unknown, not zero.
Every claim above is mapped to a file, test, or command on the evidence page.