Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Complete the public benchmark framework proposed in #679 and keep the camera pilot as its first end-to-end consumer. The framework now provides a shared experiment definition, deterministic matrix expansion, budgeted execution, stage/continuous/attempt measurements, standard artifacts, provenance, offline aggregation, paired comparison checks, legacy conversion, and dependency-free report tables/figures.
Refs #679. The public framework is intentionally local and file based for v1; domain execution and validation remain in their existing owners.
Public framework
scripts/benchmark/core/contracts.pydefinesExperimentDefinition,Budget,MetricDefinition,RunRecord,RawObservation, andAggregateMetric. Execution, quality, task, and data states remain separate.scripts/benchmark/core/planning.pyexpands stable Cartesian parameter matrices and enforces run, attempt, and wall-time budgets. Retries consume the same attempt ledger.scripts/benchmark/core/measurement.pyprovides separate APIs for staged operations, continuous operation windows, bounded attempts/episodes, and resource samples.scripts/benchmark/core/execution.pyretains deterministic isolated subprocess runs, timeout/interruption cleanup, not-run rows, and common raw/quality/artifact-index records.scripts/benchmark/core/artifacts.pycreates the standarddefinition.json,effective_config.yaml,assets_manifest.json,raw.jsonl,metrics.json,quality.json, andartifact_index.jsonfiles. JSONL records and evidence registration are idempotent and reject conflicting duplicates.scripts/benchmark/reporting/preserves units, populations, denominators, missing reasons, uncertainty, and source run IDs; supports paired eligibility/ratios, legacy row conversion, Markdown tables, CSV plotting data, deterministic SVG charts, and offline report rebuilding.Camera pilot integration
The camera pilot now freezes an
ExperimentDefinitionand budget, uses the common execution/artifact protocol, and writes raw and quality evidence for both EmbodiChain/DexSim and Isaac Lab. Its simulator-specific adapters remain isolated underscripts/benchmark/rendering/.Dependencies: no new package dependencies. Simulator workers still use the existing DexSim-capable environment and installed Isaac Lab revision documented in
scripts/benchmark/rendering/README.md.Type of change
Validation
Black 26.3.1:
black .and finalblack --check .passed.104 focused tests passed:
Public API documentation gate: 2,257/2,257 exports documented.
Context-map validation, affected-context review, benchmark skill validation,
git diff --check, and standard-library-only import smoke tests passed.Live validation on RTX 5090: one fresh EmbodiChain process and one fresh Isaac Lab process, each completing 30 warm-up and 300 measured captures. Freshness and nonempty-image checks passed.
The live run produced the full standard artifact set, including two
raw.jsonlrecords, two quality records, four indexed worker artifacts, aggregatemetrics.json, and an offline report rebuilt withpython -S.Image quality has not been independently calibrated, so the pilot remains
not_qualifiedand does not emit an equal-quality speedup claim.Screenshots
The live run stores sample images and camera-movement probe images alongside raw results. Generated outputs remain outside version control.
Checklist
black .command to format the code base.python docs/scripts/check_api_docs.py); no packaged public API documentation changes are needed.G-03 minimal vertical slice
Add a simulator-free expert-generation fixture under
scripts/benchmark/expert_generation/:GenerationCase,GenerationAttempt, andPersistenceReceiptkeep source lineage, execution, measured validation, task outcome, and persistence state independent.commit_idvalues are counted as duplicates; budget-exhausted attempts remainnot_run.python -m scripts.benchmark expert-generation --fixtureproduces standard artifacts and an attempt/stage/confirmed-yield report without a simulator.The executor callback is the integration point for #670's Candidate Coordinator, GenerationSession, Physical Executor, Measured Validator, and EpisodeSink. This fixture does not introduce a competing production lifecycle.
#670 GenerationSession bridge
Add
scripts/benchmark/expert_generation/session_adapter.py, which translates a production host's proposal, measuredExpertEpisode, andCommitReceiptthrough the existingGenerationSessionlifecycle:The adapter is covered with CPU tests for confirmed receipts and measured-validation rejection. It keeps simulator and physical-host construction outside the benchmark runner; the remaining integration work is to provide the real Candidate Coordinator / Physical Executor / Measured Validator host implementation.