| # Reproducing the Published PACTBench Snapshot |
|
|
| Run all commands from the `pactbench` directory. |
|
|
| ## 1. Environment |
|
|
| ```bash |
| 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: |
|
|
| ```bash |
| 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: |
|
|
| ```text |
| data -> ../data |
| out -> ../out |
| ``` |
|
|
| Audit the available datasets before evaluation: |
|
|
| ```bash |
| 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: |
|
|
| ```bash |
| 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 |
| 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 |
| 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 |
| 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 |
| 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: |
|
|
| ```bash |
| 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: |
|
|
| ```bash |
| 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 |
| 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 |
|
|
| ```bash |
| 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: |
|
|
| ```bash |
| 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. |
|
|