| # PACTBench |
|
|
| PACTBench evaluates a layered boss-control system across **V Rising**, |
| **Hollow Knight**, and **The Binding of Isaac**: |
|
|
| - **L1** converts causal RGB history into a compact, decision-facing belief. |
| - **L2** selects among anonymous skill options from the belief and the visible |
| skill-mechanics descriptions. |
|
|
| This directory is the release unit for code, checkpoints, published metrics, |
| and reproducibility metadata. Machine-readable publication state lives in |
| [`registry/registry.json`](registry/registry.json); prose never overrides the |
| registry or the referenced metric files. |
|
|
| ## Current release |
|
|
| The published snapshot uses fight-disjoint splits, the compact belief |
| interface, balanced-v3 L2 sampling, HP-free-v6 prompts, anonymous option IDs, |
| Gemma-4-E2B-it at temperature zero, and deterministic sample seed 0. |
|
|
| ### L1 official evaluation |
|
|
| | Game | Test rows | Distance MAE | Angle MAE | Distance-bin accuracy | Angle-bin accuracy | |
| |---|---:|---:|---:|---:|---:| |
| | V Rising | 8,075 | 0.2620 | 11.7599Β° | 0.8320 | 0.7201 | |
| | Hollow Knight | 8,360 | 0.4680 | 3.6527Β° | 0.7261 | 0.9646 | |
| | Isaac | 1,784 | 9.0263 px | 29.6388Β° | 0.9036 | 0.8352 | |
|
|
| Isaac distance is measured in pixels and is not directly comparable to the |
| engine-unit distance used by the other two games. |
|
|
| ### L2 natural-ready semantic intervention |
|
|
| | Game | Valid paired states | Mean menu size | Menu-aware chance | Description-follow | |
| |---|---:|---:|---:|---:| |
| | V Rising | 200 | 4.875 | 21.93% | 67.0% | |
| | Hollow Knight | 200 | 5.370 | 18.78% | 79.5% | |
| | Isaac | 122 | 2.238 | 46.04% | 83.6% | |
|
|
| The 200 source states are fixed before L2 outputs are read. Isaac has 122 |
| valid semantic-swap pairs because the predefined intervention requires at |
| least two tracker-ready options; singleton menus are excluded before outcome |
| aggregation. The fixed two-choice controls are reported separately in |
| [`docs/EXPERIMENTS.md`](docs/EXPERIMENTS.md). |
|
|
| The L1 visual comparison is a comparison of complete training schemes: |
| PACT-L1 is task-trained end to end, whereas DINOv2-S and VideoMAE-B are frozen |
| pretrained backbones with trained probes. It is not an isolated backbone claim. |
|
|
| V Rising also includes a separate accepted L1 comparison experiment that trains |
| DINOv2-S end to end on the same ordered 18,068/8,075 rows and the matched PACT |
| two-stage recipe. In this configuration it remains less accurate and 48.79% |
| slower at batch 1 than PACT-L1; the evidence and claim scope are recorded in |
| [`docs/EXPERIMENTS.md`](docs/EXPERIMENTS.md#v-rising-end-to-end-dinov2-s-l1-comparison-experiment). |
|
|
| ## Quick start |
|
|
| ```bash |
| cd pactbench |
| python3 -m venv .venv |
| source .venv/bin/activate |
| python3 -m pip install -r requirements.txt |
| |
| python3 registry/status.py |
| PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s tests -v |
| python3 pact/validate_pactbench.py --require_v5 |
| ``` |
|
|
| The full artifact gate should end with: |
|
|
| ```text |
| PACTBench gate: PASS (7382 checks) |
| ``` |
|
|
| Large raw data and RGB caches are exposed through `data -> ../data` and |
| `out -> ../out`. See the reproducibility guide before rebuilding or moving |
| them. |
|
|
| ## Documentation |
|
|
| | Document | Purpose | |
| |---|---| |
| | [`docs/DATA.md`](docs/DATA.md) | Data source, layout, schema, split, and audit rules | |
| | [`docs/EXPERIMENTS.md`](docs/EXPERIMENTS.md) | Exact protocols, published results, and claim scope | |
| | [`docs/REPRODUCE.md`](docs/REPRODUCE.md) | Environment, commands, expected artifacts, and release gate | |
| | [`docs/MAINTAINERS.md`](docs/MAINTAINERS.md) | Handoff, review isolation, registry update, and release procedure | |
| | [`games/vrising/README.md`](games/vrising/README.md) | V Rising entry points and artifacts | |
| | [`games/hk/README.md`](games/hk/README.md) | Hollow Knight entry points and artifacts | |
| | [`games/isaac/README.md`](games/isaac/README.md) | Isaac entry points and artifacts | |
| | [`pipelines/l2/llm_judge/README.md`](pipelines/l2/llm_judge/README.md) | External decision-quality judge protocol | |
|
|
| ## Repository layout |
|
|
| ```text |
| pactbench/ |
| βββ games/{vrising,hk,isaac}/ # per-game configuration and thin entry points |
| βββ pipelines/ # shared shell pipelines |
| βββ pact/ # shared Python implementation |
| βββ ckpt/ # published L1 checkpoints |
| βββ results/ # published row-level and aggregate artifacts |
| βββ registry/ # machine-readable publication snapshot |
| βββ schemas/ # cross-game schemas |
| βββ tests/ # regression and provenance tests |
| βββ data -> ../data # large source/processed data |
| βββ out -> ../out # rebuildable caches |
| ``` |
|
|
| The decision-quality LLM judge is intentionally run on a separate machine. |
| Its absence from the local deterministic gate does not change the publication |
| status of the local L1 and L2 intervention artifacts. |
|
|