feat(registry): designs travel with S3 sync + Target Designs tutorial (stacked on #81) - #82
Merged
GondekNP merged 1 commit intoAug 4, 2026
Conversation
Follow-up on Phase 3 (stacked on #81). Sync: target_designs / target_requirements are added to REGISTRY_SYNC_TABLES (parent-first), so a registered TargetDesign is included in push_to_s3 / pull_from_s3. target_requirements gains PRIMARY KEY (design_name, attributes) and register_design writes canonical (sorted-key) JSON, so merge-mode pull dedups requirements via INSERT OR IGNORE and re-registering a design can't create redundant cells. Verified against a real bucket: a design (and its attributed runs) survives push -> restore and check_design recomputes locally. Docs: new focused tutorial tutorials/target-designs.qmd in the Project Structure group — runs two tiny sims, tags attributes, declares a TargetDesign, shows a complete report, then marks a run bad to show the cell become an unmet-but- surfaced gap. Freeze regenerated with the real jar. Full suite 1236 passed; 0 net-new ruff/mypy. Version 0.0.9.27. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Stacked on #81 (Phase 3), which is stacked on #80 (Phase 2). Base is
feat/registry-provenance-phase3. Two small follow-ups you asked for.1. Target designs travel with the registry
Previously a
TargetDesignwas persisted locally but dropped bypush_to_s3/pull_from_s3— a standing, shareable expectation that didn't survive a registry round-trip. Now:target_designs/target_requirementsare inREGISTRY_SYNC_TABLES(parent-first, so restore's reversed-delete and forward-insert both respect the FK).target_requirementsgainsPRIMARY KEY (design_name, attributes)andregister_designwrites canonical (sorted-key) JSON, so merge-mode pull dedups requirements viaINSERT OR IGNOREand re-registering can't create redundant cells.Verified against the real bucket (
test_design_survives_push_pull): a design plus its attributed run is pushed, pulled into a fresh registry viarestore, andcheck_designrecomputes correctly (still reports the unmet cell). Objects cleaned up via the stdlib SigV4 delete.2. Focused tutorial: Target Designs & Coverage
New
tutorials/target-designs.qmdin the Project Structure nav group, right after Project Organization. It:scenario/treatmentattributes;TargetDesignand shows a complete coverage report;bad→ the cell becomes an unmet-but-surfaced gap (non_active_matches), demonstrating currency;push_to_s3/pull_from_s3.Freeze regenerated with the real jar (both the complete and incomplete states are captured).
Tests / checks
Unit: requirement dedup, canonical-JSON storage, sync-table membership+order. Integration: the GCS push/pull roundtrip above. Full suite 1236 passed; 0 net-new ruff/mypy. Version → 0.0.9.27.
Merge order
#80 → #81 → this. Each base auto-retargets as the one below merges (or I can repoint).
🤖 Generated with Claude Code