Skip to content

ci/per job cache suffix and pages enablement - #5

Merged
KraHsu merged 1 commit into
mainfrom
ci/per-job-cache-suffix-and-pages-enablement
May 13, 2026
Merged

KraHsu merged 1 commit into
mainfrom
ci/per-job-cache-suffix-and-pages-enablement

Conversation

@KraHsu

@KraHsu KraHsu commented May 13, 2026

Copy link
Copy Markdown
Owner
  • Add bilingual MkDocs documentation site with GitHub Pages deploy
  • Give CI jobs per-job cache suffixes and self-enable Pages in docs

@KraHsu
KraHsu merged commit 0c3e73a into main May 13, 2026
3 checks passed
@KraHsu
KraHsu deleted the ci/per-job-cache-suffix-and-pages-enablement branch May 14, 2026 08:51
KraHsu added a commit that referenced this pull request May 15, 2026
…nablement

ci/per job cache suffix and pages enablement
KraHsu added a commit that referenced this pull request Jun 5, 2026
…nablement

ci/per job cache suffix and pages enablement
KraHsu added a commit that referenced this pull request Jun 5, 2026
… (ROADMAP §9 PR R3.2 / ADR-0005)

Move the play-mode shortcut-retargeting key list off the private
`cli/__init__.py:_PLAY_RETARGETED_KEYS` constant onto
`SimulationCfg.play_retargeted_keys()` (static method on the domain
config). The CLI's `env.` → `play_env.` retarget loop in play mode
now calls the method; the set of play-retargetable simulation override
paths lives next to the SimulationCfg fields the --vis / --gpu /
--steps / --dt shortcuts target.

Returns the four paths verbatim (`env.simulation.{vis,gpu,steps,dt}`)
so the CLI use-site is unchanged except for the constant → method swap
— the lowest-risk faithful replacement per ADR-0005's framing. All
four are real SimulationCfg fields (test_configs.py asserts this).

Completes ADR-0005 / R3 (R3.1 EvalCallbackCfg.from_args shipped in
PR #90; this is R3.2).

New `tests/test_configs.py` (3 tests): exact ordered set, every key
names a real SimulationCfg field, and class/instance call equivalence.

Reference audit (per CLAUDE.md §9.1 rule 1): `_PLAY_RETARGETED_KEYS`
had a single use site (the play-mode retarget loop); removed.
`SimulationCfg` added to the existing module-top
`from genelab.configs import …` line in cli/__init__.py (cli → configs
is the allowed layering direction).

Verified: ruff ✓, pyright 0/0/0, full suite 395 passed (was 392; +3
from test_configs.py), `genelab play --help` snapshots byte-identical
(R0.1 gate), configs.py stays torch-free at import (invariant #5),
lint-imports baseline unchanged at 2 kept / 2 broken.

cli/__init__.py LoC: 1051 (refactor start) → 1020 after R3.1 + R3.2
(−31). ADR-0005 §10 estimated ≥35; the actual parse logic was a touch
smaller. Both parsers (eval-callback args, play-retarget keys) are now
domain-owned, which was the substantive goal.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
KraHsu added a commit that referenced this pull request Jun 5, 2026
Adds eight optional SimulationCfg fields mapping to gs.options.RigidOptions:
- contact: enable_self_collision, enable_joint_limit, max_collision_pairs
- solver: solver_iterations (→iterations), ls_iterations, solver_tolerance
  (→tolerance), integrator
- constraint stiffness/damping: constraint_timeconst

All default None ("use Genesis default"). SimulationCfg.rigid_options_kwargs()
maps the set fields to RigidOptions parameter names (genesis-free — keeps
configs.py free of the gs import per invariant #5; integrator stays a string).
InteractiveScene resolves the integrator string → gs.integrator.<name> and passes
rigid_options to gs.Scene ONLY when at least one field is set — so an untouched
config keeps the historic gs.Scene call byte-for-byte (zero regression).

CCD is not exposed (Genesis RigidOptions has no continuous-collision-detection
knob; verified against the installed genesis options surface).

Tests: tests/test_configs.py +3 (empty-by-default, full mapping to Genesis names,
None-skip-but-keep-False). The mapping is unit-tested without a Genesis runtime;
the scene wiring is exercised by the existing genesis_runtime-gated scene tests.

Gates: ruff ✓, ruff format ✓, pyright 0/0/0, lint-imports 6 kept / 0 broken,
optional-dep boundary still green (configs torch/genesis-free), full suite 439 passed (+3).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant