Repository navigation
Conversation
| @@ -0,0 +1,5 @@ | |||
| # Synthetic Workspace Gym configurations | |||
|
|
|||
| These immutable manifests define the task assignments used for SFT, RL, validation, and difficulty calibration. `scripts/synthetic_workspace_gym/build_qwen35_training_manifests.py` rebuilds them deterministically, and the generator package consumes them when exporting frozen task data for the installable environment. | |||
There was a problem hiding this comment.
[major] The curriculum data belongs in the published dataset, not committed to the repo
configs/synthetic_workspace_gym/ adds ~87K lines of curriculum JSON, including four frozen revisions (v2–v4 plus the live v5) of each curriculum. The taskset already consumes this data from a pinned HF dataset revision, and this PR publishes exactly there (publish_dataset.py), so the checked-in copies are a redundant channel — and the dead revisions are pure bloat: the repo's own history serves the provenance role the README cites. Please follow the convention the other sandbox-image environments use: keep the data in the published dataset, commit only a small pointer that pins the dataset revision and the sha256 (or the generation_fingerprint you already compute), and drop the committed JSONs.
[written by prime-agent, checked by snimu]
There was a problem hiding this comment.
Addressed in 5e99e4e: removed all 24 checked-in curriculum JSON files (86,592 lines). The six active V5 source manifests are now generated into an ignored build directory, and configs/synthetic_workspace_gym/release.json is the small pointer to the pinned HF dataset commit, export integrity SHA-256, exporting commit, and source-manifest SHA-256 hashes. I rebuilt the six manifests and verified all six hashes match the previously committed bytes. The published V5 dataset and images were not changed.
| from pathlib import Path | ||
|
|
||
| ENVIRONMENT_VERSION = "0.1.0" | ||
| EVALUATOR_VERSION = "swg-capability-evaluators-v4" |
There was a problem hiding this comment.
[minor] EVALUATOR_VERSION misreports the V5 protocol
EVALUATOR_VERSION = "swg-capability-evaluators-v4" ships in every exported task manifest's provenance while the curriculum family is V5. Provenance metadata that misreports its own version undermines exactly what it exists to guarantee — bump it alongside the protocol changes.
[written by prime-agent, checked by snimu]
There was a problem hiding this comment.
Clarified in 5e99e4e. The two version numbers track different things: V5 is the curriculum/release revision; swg-capability-evaluators-v4 is the evaluator-protocol revision. Commit 3bd13bb (the exact exporting generator commit pinned by V5) explicitly bumped the evaluator label from v3 to v4 while introducing the V5 hardening. Thus the frozen task manifests correctly say v4. Renaming it to v5 now would change newly generated task-blob bytes without changing the already-published V5 artifacts, so I preserved the accurate label and documented the distinction in provenance.py and the generator README.
Summary
This PR adds the reproducible generation and publication side of Synthetic Workspace Gym (SWG). It owns deterministic task generation, immutable curriculum construction, grounding and reward validation, secure execution-protocol projection, Hugging Face export, and Prime image builds. The native Verifiers V1 taskset is submitted separately in #26.
SWG covers tabular transformation, Python script repair, data pipelines, local-document retrieval, and composite workflows. The six V5 manifests contain 1,328 assignments spanning D1-D3 SFT/mid-training data, held-out SFT validation, D4-D5 RL data, and evaluation panels.
Architecture
The export has three trust domains:
Repository layout
generators/synthetic_workspace_gym/: generators, schemas, evaluator-identical local validation, secure protocol projection, export, and publication library.configs/synthetic_workspace_gym/: compact V5 release pointer with the pinned dataset revision, export integrity SHA-256, and six reproducible source-manifest hashes. Generated JSON is not committed.scripts/synthetic_workspace_gym/: curriculum/calibration entrypoints, image builder assets, and architecture diagram.V5 curricula
sft-easy-v5sft-validation-v5rl-hard-v5rl-eval-v5eval-d1-d4-paired-panel-48-v5eval-d5-family-calibration-40-v5Review hardening
5/8 = 0.625, making every untouched composite D4 row normalize to0.0.atexitreplacement of the destination.Immutable V5 artifacts
ydnysh/synthetic-workspace-gym3ba83f647b96556be8c5084584a2d86e932256843bd13bb949846e7b7393afe81727f1127e984475128c3c984d91e7d46918e0f2f77cab4543943a25e11083bf18d0ad00dcf9f7f8v5-128c3c98All older artifact revisions remain unchanged. The V5 dataset and images were not republished: rebuilding the six source manifests in an ignored build directory reproduced their pinned SHA-256 hashes exactly. Evaluator provenance
swg-capability-evaluators-v4is independent of curriculum V5 and was bumped from v3 in the exporting commit.Validation performed
1.0.0.013497.0.0untouched after shipped-evaluator normalization.atexittampering.Out of scope
Note
Add Synthetic Workspace Gym generators, evaluators, and dataset tooling
Adds the full
swg_generatorspackage under generators/synthetic_workspace_gym, covering five environment families (tabular, script repair, pipeline, retrieval workspace, composite workspace) with a shared base.py generator framework, D5 composition profiles, and per-family evaluators.export_artifactsfor deterministic gzipped task export,publish_datasetfor Hugging Face upload, and SHA-256 provenance fingerprinting in provenance.py.assertEqual/assertTrue/assertRaisescalls via AST to record labeled observations, and local_protocol.py runs evaluator plans in temporary workspaces.D5CalibratedEvaluatorin registry.py cubes scores for unsuccessful difficulty-5 evaluations, changing reward values; evaluators outside difficulty 5 are unaffected.Macroscope summarized 1e22f57.