Skip to content

Release: merge dev into main#111

Merged
rororowyourboat merged 30 commits intomainfrom
dev
Mar 4, 2026
Merged

Release: merge dev into main#111
rororowyourboat merged 30 commits intomainfrom
dev

Conversation

@rororowyourboat
Copy link
Collaborator

Summary

  • gds-psuu v0.1.0: New package — parameter space search under uncertainty (Sweep, ParameterSpace, KPI, Random/Grid/Bayesian optimizers). 52 tests, 84% coverage. Published to PyPI.
  • gds-sim: Expanded test coverage for error paths and edge cases
  • gds-games: Added Pattern.compile() and Pattern.compile_system() convenience methods
  • gds-framework: G-002 BoundaryAction exemption, Unicode token normalization, thread-safe custom checks, ParameterDef bounds validation, TypeDef check_value guard
  • gds-stockflow/control/software: Standardized verify() parameter name to domain_checks
  • gds-examples: Restructured guides/ into gds_examples/ for Pyodide compatibility; cross-DSL integration tests
  • Docs: Modeling philosophy concepts, ecosystem updates, Diataxis nav restructure

185 files changed, 9706 insertions, 683 deletions.

Test plan

  • All package test suites pass on dev
  • gds-psuu published to PyPI via trusted publishing
  • Lint and format clean

…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: 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).
@rororowyourboat rororowyourboat merged commit 984fe36 into main Mar 4, 2026
10 checks passed
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