Merged
Conversation
…odide compatibility Marimo notebooks embedded in docs fail in Pyodide/WASM with ModuleNotFoundError because `guides` is a local workspace namespace not available on PyPI. Moving library modules into `gds_examples/` makes them ship with `pip install gds-examples` and importable in the browser sandbox. - guides/*/*.py library modules → gds_examples/*/ (in wheel) - guides/*/notebook.py → notebooks/*.py (flat, not in wheel) - guides/*/test_*.py → tests/ (not in wheel) - Add PEP 723 inline script metadata to all 6 notebooks - Update pyproject.toml wheel include and mypy paths - Update all docs markdown: embed paths, run commands, source links - Create merged tests/conftest.py with sys.path setup
Wrap constraint predicate calls in try/except so user-supplied constraints that raise (e.g., ZeroDivisionError, TypeError) return False instead of propagating uncaught through verification paths. Also guard ParameterDef.check_value() bounds comparison. Closes #86
Apply NFC normalization before lowercasing in tokenize() so that equivalent Unicode representations produce identical tokens. Closes #96
Guard _CUSTOM_CHECKS mutations and reads with threading.Lock to prevent race conditions in concurrent usage. Return copies from accessors to prevent external mutation. Closes #93
…check BoundaryAction blocks have no inputs by design — they model exogenous signals entering the system from outside. G-002 now skips the input requirement for blocks with block_type="boundary" while still requiring outputs. The default block compiler now propagates the block's kind field into BlockIR.block_type so role information is available in the IR.
Align with ecosystem convention where all flow-like elements use source/target (StockFlow Flow, DFD DataFlow, VSM flows). Closes #97
fix: guard TypeDef.check_value() against constraint exceptions
fix: align root pyproject.toml gds-framework bound to >=0.2.3
fix: validate ParameterDef.bounds are comparable at construction
…lization feat: normalize Unicode in token system for consistent port matching
…-checks fix: add thread-safe locking to _CUSTOM_CHECKS registry
docs: update ecosystem.md with all 9 packages
…tion feat: exempt BoundaryAction blocks from G-002 signature completeness check
…-fields refactor: rename Shipment.source_node/target_node to source/target
…ucture refactor(gds-examples): restructure guides/ into gds_examples/ for Pyodide compatibility
…methods Aligns OGS API with other DSLs where Model.compile() and Model.compile_system() are the standard entry points. Also fix lint/format issues from merged PRs. Closes #90
Add 42 new tests covering _positional_count edge cases, adapt_policy/ adapt_suf cadCAD wrapping, model validation errors, and single-block models. Coverage up from 44 to 86 tests (97%). Also fix lint/format issues from merged PRs. Closes #87
Adds 44 tests validating the GDS universal substrate claim across all 5 domain DSLs (stockflow, control, OGS, software, business). Tests cover: - Round-trip compilation: model → GDSSpec → SystemIR → verification - Minimal viable models for each DSL - Canonical h = f ∘ g spectrum verification (stateful vs stateless) - Error condition detection (orphan stocks, undriven states, invalid refs) - GDS generic checks (G-001..G-006) running on compiled SystemIR Closes #92
…ify-param refactor: standardize verify() parameter name to domain_checks across all DSLs
feat: add Pattern.compile() and Pattern.compile_system() to OGS
test: expand gds-sim test coverage to 97%
test: add cross-DSL integration and round-trip tests
Weave verification/validation boundary, two-layer rationale, modeling decisions (role assignment, state identification, block granularity), and representation authority into architecture, verification, best-practices, choosing-a-dsl, and view-stratification guides.
Typed compositional PSUU engine: ParameterSpace (Continuous/Integer/Discrete), pluggable optimizers (Random/Grid/Bayesian), KPI scoring on gds-sim Results, and Sweep orchestrator. 52 tests, 84% coverage.
Adds pytestmark skipif guard so CI per-package jobs (e.g. --package gds-framework) don't fail on missing stockflow/control/games/software/ business imports. Also fixes stale Shipment field names (source_node → source, target_node → target).
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.
Summary
Pattern.compile()andPattern.compile_system()convenience methodsverify()parameter name todomain_checksguides/intogds_examples/for Pyodide compatibility; cross-DSL integration tests185 files changed, 9706 insertions, 683 deletions.
Test plan