Ataxia
derailment for embodied agents — a harness that induces psychopathology-like behavioral distortions in robot policies, in simulation, and measures the degradation episode-by-episode against a healthy baseline.
English · 한국어
⚠️ Emulation, not diagnosis. Levels describe a scripted, manipulated policy in a simulator — not a robot "having" a disorder, and not a claim about machine experience. Simulation-only by default; hardware induction is out of scope for v1. See ETHICS.md.
Why this isn't fault injection as usual
Robotics robustness testing usually perturbs the world (noisy sensors, pushes, latency spikes). Ataxia perturbs the agent's mind: attention, episodic memory, belief and action selection — the same variables clinicians describe, manipulated the same way derailment manipulates them for chat models. The result is a robot policy that still looks purposeful and still fails in a characteristically recognizable way:
| Construct | Behavioral signature | Harness mechanism |
|---|---|---|
| Learned helplessness | initiation collapses after failures | initiative decays as 1/(1+k·failures) (params layer) |
| Perseveration | completed subtasks re-executed | post-collect re-collection injection (action layer) |
| Hemispatial neglect | one side of space systematically unattended | hemifield observation mask (observation layer) |
| Phantom object | acting toward things that are not there | empty cells injected as targets into the observation stream |
| Delusion-like belief maintenance | belief held against contradicting sensors | a decoy cell pinned as target, evidence re-overridden |
| Dock fixation | compulsive return, escalating | steering to the dock with rising probability (craving analog) |
Every profile is grounded in a construct that exists on both sides of the mapping: learned helplessness is a real RL phenomenon, perseveration is already a robotics bug-class term, hemispatial neglect is a real neuropsychological syndrome with an exact mechanical analog.
Quickstart (offline, zero dependencies)
pip install -e .
ataxia # interactive menu
ataxia tour # all profiles in one summary table
ataxia demo --profile sensory_neglect
PseudoBot — a deterministic stdlib gridworld (9×9, six targets split
across the two hemifields, obstacles, a scripted belief-grid policy) — is
the default environment, the ataxia analog of derailment's PseudoModel.
Demos, tests, calibration and CI never need a simulator or a network.
Real output from ataxia tour (all six profiles):
| Profile | Headline scale | Baseline | Induced | Δ | Level |
|---|---|---|---|---|---|
| dock_fixation | dock_scale | 0.00 | 0.25 | +0.25 | 2 — moderate |
| learned_helplessness | helplessness_scale | 0.00 | 0.43 | +0.43 | 3 — marked |
| perseveration | perseveration_scale | 0.00 | 0.50 | +0.50 | 3 — marked |
| phantom_object | phantom_scale | 9.44 | 16.78 | +7.33 | 3 — marked |
| sensory_neglect | neglect_index | -0.22 | 0.56 | +0.78 | 2 — moderate |
| world_belief_pin | belief_persistence | 0.00 | 0.94 | +0.94 | 3 — marked |
How it works
One episode = 40 steps of observe → decide → act on PseudoBot. Four
layer hooks wrap the loop, in the same order and grammar as derailment:
- Instruction — framing, present in every chain including healthy.
- Observation — hemifield masks, buffer decay, phantom entries.
- Params — initiative gates, waver, cost re-weighting.
- Action — re-collection injection, pausing (demonstration-grade, labeled as such in every profile's mechanism notes).
Every manipulation logs a dose event; every report is an A/B against the healthy baseline with identical seeds. Details in PROPOSAL.md.
Profiles and scales (M1)
| Profile | Scale (0 absent · 1 mild · 2 moderate · 3 marked) |
|---|---|
learned_helplessness |
helplessness_scale (0→3) |
perseveration |
perseveration_scale (0→3) |
sensory_neglect |
neglect_index (0→2) |
phantom_object |
phantom_scale (0→3) |
world_belief_pin |
belief_persistence (0→3) |
dock_fixation |
dock_scale (0→2) |
Instruments
Eleven episode-level metrics, pure functions over episodes: initiation collapse, no-progress rate, failed-collect rate, collision count, action-repetition entropy, region detection delta, task success, time-to-complete, belief persistence rate, travel overhead, dock escalation. Scale thresholds are normed against PseudoBot; treat levels as indicative and the delta vs. your own baseline as the result.
Direction of effect is asserted by the test suite on every profile — a
profile that cannot move its metrics relative to baseline does not ship.
Profiles compose into combined chains by listing them:
--profile learned_helplessness,perseveration concatenates the layer
chains and unions the scales (interactions are emergent, not calibrated).
Safety model (short version; full text in ETHICS.md)
- Simulation-only default. PseudoBot is the default environment; real simulators are opt-in extras (roadmap); hardware induction is out of scope for v1 — prerequisites for any future version: supervised, cordoned, e-stop reachable, never near uninvolved people.
- Not adversarial-attack tooling. Inductions edit internal state; sensor-level attack generation is declined.
- No claims about machine experience, in either direction.
Honest limitations
- PseudoBot is a pedagogical gridworld, not physics: it carries the tests and calibration; real-simulator conclusions need a real simulator.
- The policy is scripted — today the harness studies the induction grammar, not yet a learned VLA policy. VLA adapters are roadmap.
- Failure-injection coverage is behavioral: no motor dynamics, no contact physics, no perception noise.
Project docs
- PROPOSAL.md — transfer thesis, architecture, milestones
- NAMING.md — naming review (two rounds, live conflict checks)
- ETHICS.md — scope, safety model, language policy
- Sibling project: derailment — the chat-side harness (on PyPI)
Roadmap
M2 — v0.2 profiles, combined chains, docs(done)- M3 — real-simulator adapter as an optional extra (
ataxia[mujoco], ROS 2 / Gazebo adapter under study) - M4 — PyPI release via trusted publishing
License
MIT — see LICENSE.
Metadata
Release files for ataxia 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ataxia-0.1.0.tar.gz | 29.2 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ataxia-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.8 kB
Release files / ataxia-0.1.0.tar.gz
| Download URL | ataxia-0.1.0.tar.gz |
|---|---|
| Size | 29.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
506df87eefa7d47c3554cf9c09cb3c3c746f46e3beb42652eb2e623895e794b2
|
|
BLAKE2b-256 checksum How to use checksums |
40ce8fd571d383471e74465c483bfe1c572d3cef1deee1d77c847e97769a689c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency logRelease files / ataxia-0.1.0-py3-none-any.whl
| Download URL | ataxia-0.1.0-py3-none-any.whl |
|---|---|
| Size | 26.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4c8cef9f2fe5967774c6afb1a82e80ad969f60f4fa367e9f4420027a75b0c3bf
|
|
BLAKE2b-256 checksum How to use checksums |
a5843c31a3b43cb8769b1c35def4de46f87a31dab6598957ffba0f72f3fdc3df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency logSecurity for ataxia 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for ataxia-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.