Reproducing the Published PACTBench Snapshot
Run all commands from the pactbench directory.
1. Environment
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
The checked-in environment was validated with Python 3.13 and CUDA 12.x. The
L1 path uses the versions pinned in requirements.txt.
Gemma serving uses a separate environment because the server requires a newer Transformers release than the L1 environment:
python3 -m venv .venv-gemma
.venv-gemma/bin/python -m pip install \
"transformers==5.13.0" "torch==2.5.1" accelerate pillow
2. Data and caches
Make data point to the directory containing the processed layouts documented
in docs/DATA.md. The repository currently uses:
data -> ../data
out -> ../out
Audit the available datasets before evaluation:
bash games/vrising/data/audit_dataset.sh
bash games/hk/data/audit_dataset.sh
bash games/isaac/data/audit_dataset.sh
RGB caches are rebuildable from processed videos:
python3 pact/build_rgb_frame_cache.py --workers 32
The canonical cache paths and their content identities are recorded in the published registry. The full gate rejects missing, stale, or mismatched caches.
3. L1 evaluation
Evaluate the published checkpoints:
bash games/vrising/l1/eval_official_from_ckpt.sh
bash games/hk/l1/eval_official_from_ckpt.sh
bash games/isaac/l1/eval_official_from_ckpt.sh
Run the matched frozen-foundation comparisons:
bash games/vrising/l1/run_foundation_baselines.sh
bash games/hk/l1/run_foundation_baselines.sh
bash games/hk/l1/run_matched_foundation10k.sh
bash games/isaac/l1/run_foundation_baselines.sh
Run the accepted V Rising end-to-end DINOv2-S L1 comparison experiment:
bash games/vrising/l1/run_dinov2_end_to_end.sh
The wrapper preserves accepted artifacts unless FORCE_RERUN=1 is set and
writes the canonical metrics, batch-1 latency, and comparison summary under
results/vrising/eval_runs/L1-DINOV2-END-TO-END-MATCHED20/.
Isaac's matched PACT checkpoint is produced by
pipelines/l1/train/run_isaac_matched_after_weight_selection.sh after the
validation-only distance-weight selection. Published checkpoints and metrics
can be validated without retraining them.
The image-input controls are:
bash games/vrising/l1/run_img_ablation.sh
bash games/hk/l1/run_img_ablation.sh
bash games/isaac/l1/run_img_ablation.sh
4. L2 service and evaluation
Start the pinned Gemma service with a local path or compatible model ID:
export GEMMA_MODEL_PATH=/path/to/gemma-4-E2B-it/revision-70af34e
export GEMMA_PORT=8018
.venv-gemma/bin/python pact/gemma_server.py
In another shell:
export GEMMA_OPENAI_BASE_URL=http://127.0.0.1:8018/v1
export GEMMA_MODEL=gemma-4-E2B-it
export GEMMA_TEMPERATURE=0
bash games/vrising/l2/run_semantic_views.sh
bash games/hk/l2/run_semantic_views.sh
bash games/isaac/l2/run_semantic_views.sh
Rationale correspondence and paired image-modality runs use:
bash games/vrising/l2/run_rationale_consistency.sh
bash games/hk/l2/run_rationale_consistency.sh
bash games/isaac/l2/run_rationale_consistency.sh
bash games/vrising/l2/run_image_modality_ablation.sh
bash games/hk/l2/run_image_modality_ablation.sh
bash games/isaac/l2/run_image_modality_ablation.sh
The Hollow Knight and Isaac fixed two-choice controls are selected through the game wrapper environment variables documented in their game READMEs.
5. Verify the release
python3 registry/status.py
PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s tests -v
python3 pact/validate_pactbench.py --require_v5
The current published snapshot passes 46 regression tests and 7,382 full-gate checks. To rebuild the machine-readable registry after an accepted change:
python3 registry/build_registry.py
The builder reruns the full gate before atomically replacing
registry/registry.json. Do not edit the registry by hand.
6. External decision-quality judge
The external LLM judge is intentionally excluded from the local deterministic
queue. Use pipelines/l2/llm_judge/README.md with explicit rows, beliefs, and
skill-library paths. Judge outputs remain review-isolated until accepted by the
maintainer.