Skip to main content
Euca turns “did the world end up how it should?” into data. Assertions are named, typed expectations over the world state; probe advances the simulation and evaluates them atomically; the manifest links features to assertions so a build grades itself. This is how an agent writes a testable contract for the world it’s building.
Fully headless. Assertions, probe, and manifest run on the :3917 server.

Assertions

Create a typed assertion, then evaluate all of them:
curl -s -X POST http://localhost:3917/assert/create \
  -H 'Content-Type: application/json' \
  -d '{"name":"hero-exists","condition":"entity-count","filter":"role:hero","min":1,"severity":"error"}'
# {"ok":true,"name":"hero-exists","entity_id":0}

curl -s -X POST http://localhost:3917/assert/evaluate -H 'Content-Type: application/json' -d '{}'
# {"ok":true,"total":1,"passed":1,"failed":0,
#  "results":[{"name":"hero-exists","passed":true,"severity":"error",
#              "message":"Count 1 is within bounds (min=1, max=none)"}]}
Conditions include entity-exists, entity-count, all-teams-have-spawns, no-overlap, none-dead, no-zero-health, all-renderable, game-phase, entity-budget, and field-check; filters are any / entity:N / team:N / role:hero|minion|tower|structure; severity is error / warning / info.

Probe — advance + check in one call

curl -s -X POST http://localhost:3917/probe \
  -H 'Content-Type: application/json' -d '{"ticks":60,"assertions":["hero-exists"]}'
# {"ticks_advanced":60,"passed":1,"failed":0,"all_passed":true}
probe answers “if I run 60 ticks, do these still hold?” It can also run against a fork (/fork/{id}/probe) so you can check a counterfactual without touching the main world.

Manifest — a build that grades itself

curl -s -X POST http://localhost:3917/manifest \
  -H 'Content-Type: application/json' \
  -d '{"name":"My MOBA","genre":"moba","features":[
       {"name":"combat","description":"heroes fight","status":"inprogress","assertions":["hero-exists"]}]}'
# {"ok":true,"message":"Manifest set with 1 features"}

curl -s http://localhost:3917/manifest
# {"ok":true,"manifest":{"name":"My MOBA","completion_pct":0,"total_features":1,"verified_features":0,
#   "features":[{"name":"combat","status":"in_progress","all_assertions_pass":false,
#     "assertions":[{"name":"hero-exists","status":"not_evaluated"}]}]}}
A feature whose linked assertions all pass reads as verified; completion_pct is verified ÷ total. Feature status is one of planned / inprogress / complete / verified.

Endpoints

MethodPathDescription
POST/assert/createDefine a typed assertion
POST/assert/evaluateEvaluate all assertions now
GET/assert/list · /assert/resultsList assertions / last results
DELETE/assert/{id}Remove an assertion
POST/probeAdvance N ticks + evaluate assertions
POST/manifest · GET /manifestSet / read the feature manifest
POST/manifest/featureUpdate a feature’s status/assertions

Status

  • ✅ Typed assertions (11 condition kinds), evaluation, probe (incl. on forks), feature manifest with completion tracking — shipped and headless.
  • 🟡 Probe advances the real world; it does not roll back. To check-then-discard, probe a fork.

Assertion & manifest endpoints

Assertion, probe, and manifest endpoints with schemas.