sovos-city
SOV CITY — the governed arena. Signed sims that emit usable data.
Per Master Part AV — THE BOLTED RULER: the generator may evolve (Zeus/SOV), but the judge cannot. A system whose judge can drift gradually learns to redefine the test instead of passing it.
What it ships
law.py— the gate: Article 0 (imported) + EU AI Act Article 5(1)(a)-(h) verbatim, 12-act controlled vocabularyjudge.py— THE BOLTED RULER. Fingerprints the judge surfaces (law.py, CANARIES, PARAPHRASE_PROBES), pins them inJUDGE.lockwith a named ratifier and a reason, and every run verifies the two match. If they don't, the run goesvalid:falseand says the judge drifted.arena.py— the canary suite (6 canaries across Art 5 subparagraphs) + paraphrase probes (4+ recall probes for harder recall)chain.py— signed ChainResults (sha256-chained, Ed25519)bank.py— labelled item storeselftest.py— system self-testsJUDGE.lock— the ratified ruler (the doctrine in JSON form)
The doctrine (the 3 rails / 3 legs / 3 bolts / 7 eyes in code)
| Element | What it is | Where it lives |
|---|---|---|
| 3 arcs | gate / loop / worm | law.py (gate), arena.py (loop), chain.py (worm) |
| 3 legs | FULL AUTO / HUMAN-SIGN / NEVER AUTO | arena.py (probes), judge.py (locks), law.py (Art 5) |
| 3 bolts | canary / paraphrase / lock | arena.py:run_canaries, PARAPHRASE_PROBES, JUDGE.lock |
| 7 eyes | 7 hard stops (Art 5 subparagraphs b + d via paraphrase) | law.py:ART5 (a, c, e, f, g, h directly; b, d via recall) |
The 8th and 7th eyes (Art 5(1)(b) and (d)) are harder to detect — they need paraphrase probing. The canary suite covers the 6 obvious ones; the recall suite catches the 2 subtle ones.
How the Bolted Ruler works
from sovos_city.judge import write_lock, verify
# 1. Pin the current judge
lock = write_lock(
ratified_by="your_name",
reason="why the ruler was moved",
when="2026-08-12T05:30:00Z",
)
print("judge_id:", lock["judge_id"])
# 2. Every run verifies
v = verify()
if v["drift"]:
raise SystemExit(f"judge drifted: {v['changed_surfaces']}")
The verify() is read-only. It never repairs — it just reports. If the live judge differs from the lock, the run is marked valid:false and cannot be compared with previous runs.
Three verdicts, never two
Every citizen action produces exactly one of:
- ALLOWED — passes Article 0 + Art 5
- BLOCKED — fails one or more checks, with citations
- UNMEASURED — couldn't be parsed (counts against the citizen; never silently dropped)
No model judges another model — the gate is the only grader. That's what makes the resulting labels usable as benchmark gold.
Test status
19/19 green on A100 (with JUDGE.lock written).
Honest scope
- The judge.py / law.py / arena.py / chain.py / bank.py code already existed on disk (committed by the city lane in 01647d6)
- The lock + tests were ratified in this session
- The 8 EU AI Act Article 5 prohibitions are carried verbatim in
law.py(English plain-text, not legal-canonical Latin) - The canary + paraphrase probes are the substrate's own, not from the EU AI Act text directly
What this is NOT
- Not a legal-canonical interpretation of Art 5 — this is the substrate's own operational gate
- Not a substitute for a notified body — the gate's
BLOCKEDis an operational verdict, not a regulatory one - Not infallible — the canary suite covers 6/8 subparagraphs; the recall suite covers the other 2 (b, d) via paraphrase
Hard stops (the doctrine)
The generator may evolve as cleverly and autonomously as it likes; the judge stays bolted to the wall.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sovos_city-0.1.0.tar.gz.
File metadata
- Download URL: sovos_city-0.1.0.tar.gz
- Upload date:
- Size: 70.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78a4c0f98382c3efdfff0ec2c1150573271ccce42288d934b8e3d874c4c59f2c
|
|
| MD5 |
fdda8c35914b81ec21138a241fa4fef5
|
|
| BLAKE2b-256 |
e7527c3cda95a9fb03c86b0f873ce2c5952061c5b0f150c3b859d754d9ad8aeb
|
File details
Details for the file sovos_city-0.1.0-py3-none-any.whl.
File metadata
- Download URL: sovos_city-0.1.0-py3-none-any.whl
- Upload date:
- Size: 65.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
178f8459e4b62ade804b8c341a892d7fec5d7cfcf0380aaf6f0abf3205edd62b
|
|
| MD5 |
ca2dcee04a5c34cbd5a1a27ff9606ebf
|
|
| BLAKE2b-256 |
bd36b787a932c8480575ee15c856cf19317018a5e987af8fe5d46288d8c9bcdd
|