diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 3a1f311..918be22 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: true contact_links: - name: Documentation - url: https://blockscience.github.io/gds-core + url: https://dynamicalsystemsgroup.github.io/gds-core about: Check the documentation before opening an issue diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 088f4e2..bafa626 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,12 +9,16 @@ on: jobs: lint: runs-on: ubuntu-latest + # Lint is advisory — issues surface as PR warning annotations, + # but the job exits green so it doesn't block merges. steps: - uses: actions/checkout@v6 - uses: astral-sh/setup-uv@v7 - run: uv sync --all-packages - - run: uv run ruff check packages/ - - run: uv run ruff format --check packages/ + - name: Ruff check (advisory) + run: uv run ruff check packages/ || echo "::warning::ruff check reported issues (advisory — see job logs)" + - name: Ruff format check (advisory) + run: uv run ruff format --check packages/ || echo "::warning::ruff format reported issues (advisory — see job logs)" test: runs-on: ubuntu-latest diff --git a/CITATION.cff b/CITATION.cff index 9650019..87f6b80 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -3,14 +3,14 @@ message: "If you use this software, please cite it as below." authors: - family-names: "Mehta" given-names: "Rohan" - email: "rohan@block.science" - affiliation: "BlockScience" + email: "rohan@dynamicalsystemsgroup.com" + affiliation: "Dynamical Systems Group" title: "gds-core" version: 0.1.0 date-released: 2026-02-21 -url: "https://github.com/BlockScience/gds-core" +url: "https://github.com/DynamicalSystemsGroup/gds-core" license: Apache-2.0 -repository-code: "https://github.com/BlockScience/gds-core" +repository-code: "https://github.com/DynamicalSystemsGroup/gds-core" keywords: - generalized-dynamical-systems - compositional-systems diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 2a06206..ff9c399 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -60,7 +60,7 @@ representative at an online or offline event. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at -**rohan@block.science**. All complaints will be reviewed and investigated +**rohan@dynamicalsystemsgroup.com**. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the diff --git a/README.md b/README.md index be19de6..9a5a467 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # gds-core -[![License](https://img.shields.io/github/license/BlockScience/gds-core)](LICENSE) -[![CI](https://github.com/BlockScience/gds-core/actions/workflows/ci.yml/badge.svg)](https://github.com/BlockScience/gds-core/actions/workflows/ci.yml) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-core)](LICENSE) +[![CI](https://github.com/DynamicalSystemsGroup/gds-core/actions/workflows/ci.yml/badge.svg)](https://github.com/DynamicalSystemsGroup/gds-core/actions/workflows/ci.yml) Monorepo for the **Generalized Dynamical Systems** ecosystem — typed compositional specifications for complex systems, grounded in [GDS theory](https://doi.org/10.57938/e8d456ea-d975-4111-ac41-052ce73cb0cc) (Zargham & Shorish, 2022). @@ -23,7 +23,7 @@ Monorepo for the **Generalized Dynamical Systems** ecosystem — typed compositi ```bash # Clone and install all packages (editable, workspace-linked) -git clone https://github.com/BlockScience/gds-core.git +git clone https://github.com/DynamicalSystemsGroup/gds-core.git cd gds-core uv sync --all-packages @@ -50,7 +50,7 @@ This is a [uv workspace](https://docs.astral.sh/uv/concepts/workspaces/) monorep ## Documentation -Full documentation at [blockscience.github.io/gds-core](https://blockscience.github.io/gds-core). +Full documentation at [dynamicalsystemsgroup.github.io/gds-core](https://dynamicalsystemsgroup.github.io/gds-core). ## Citation @@ -62,15 +62,15 @@ See [CITATION.cff](CITATION.cff) for BibTeX and other formats. ## Credits & Attribution -**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [BlockScience](https://block.science/) +**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup) **Theoretical foundation:** [Dr. Michael Zargham](https://github.com/mzargham) and [Dr. Jamsheed Shorish](https://github.com/jshorish) — [Generalized Dynamical Systems, Part I: Foundations](https://blog.block.science/generalized-dynamical-systems-part-i-foundations-2/) (2021). -**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/BlockScience/MSML) and [bdp-lib](https://github.com/BlockScience/bdp-lib). +**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/DynamicalSystemsGroup/MSML) and [bdp-lib](https://github.com/DynamicalSystemsGroup/bdp-lib). **Contributors:** -* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (BlockScience). -* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (BlockScience). +* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (Dynamical Systems Group). +* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (Dynamical Systems Group). **Lineage:** Part of the [cadCAD](https://github.com/cadCAD-org/cadCAD) ecosystem for Complex Adaptive Dynamics. diff --git a/SECURITY.md b/SECURITY.md index 776b5d3..d59bd46 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -15,12 +15,12 @@ If you discover a security vulnerability, please report it responsibly: 1. **Do not** open a public GitHub issue -2. Email **rohan@block.science** with details +2. Email **rohan@dynamicalsystemsgroup.com** with details 3. Include steps to reproduce and potential impact 4. You will receive a response within 72 hours ## Security Measures -- Dependencies are monitored via [Dependabot](https://github.com/BlockScience/gds-core/security/dependabot) -- Code is scanned with [CodeQL](https://github.com/BlockScience/gds-core/security/code-scanning) +- Dependencies are monitored via [Dependabot](https://github.com/DynamicalSystemsGroup/gds-core/security/dependabot) +- Code is scanned with [CodeQL](https://github.com/DynamicalSystemsGroup/gds-core/security/code-scanning) - CI runs `pip-audit` for known vulnerability detection diff --git a/context7.json b/context7.json index a74b0e8..db62ca3 100644 --- a/context7.json +++ b/context7.json @@ -1,4 +1,4 @@ { - "url": "https://context7.com/blockscience/gds-core", + "url": "https://context7.com/dynamicalsystemsgroup/gds-core", "public_key": "pk_LRmzAzjZYKfatA1uULFnD" } \ No newline at end of file diff --git a/docs/analysis/getting-started.md b/docs/analysis/getting-started.md index 35654f9..bbdb578 100644 --- a/docs/analysis/getting-started.md +++ b/docs/analysis/getting-started.md @@ -9,7 +9,7 @@ uv add gds-analysis For development (monorepo): ```bash -git clone https://github.com/BlockScience/gds-core.git +git clone https://github.com/DynamicalSystemsGroup/gds-core.git cd gds-core uv sync --all-packages ``` diff --git a/docs/analysis/index.md b/docs/analysis/index.md index 91e6caa..4211276 100644 --- a/docs/analysis/index.md +++ b/docs/analysis/index.md @@ -2,7 +2,7 @@ [![PyPI](https://img.shields.io/pypi/v/gds-analysis)](https://pypi.org/project/gds-analysis/) [![Python](https://img.shields.io/pypi/pyversions/gds-analysis)](https://pypi.org/project/gds-analysis/) -[![License](https://img.shields.io/github/license/BlockScience/gds-core)](https://github.com/BlockScience/gds-core/blob/main/LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-core)](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/LICENSE) **Bridge from GDS structural specifications to runtime simulation and analysis.** @@ -69,4 +69,4 @@ See [Getting Started](getting-started.md) for a full walkthrough. ## Credits -Built on [gds-framework](../framework/index.md) and [gds-sim](https://pypi.org/project/gds-sim/) by [BlockScience](https://block.science). +Built on [gds-framework](../framework/index.md) and [gds-sim](https://pypi.org/project/gds-sim/) by [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup). diff --git a/docs/business/getting-started.md b/docs/business/getting-started.md index ce8ddda..f103029 100644 --- a/docs/business/getting-started.md +++ b/docs/business/getting-started.md @@ -10,7 +10,7 @@ uv add gds-business For development (monorepo): ```bash -git clone https://github.com/BlockScience/gds-core.git +git clone https://github.com/DynamicalSystemsGroup/gds-core.git cd gds-core uv sync --all-packages ``` diff --git a/docs/business/index.md b/docs/business/index.md index b161dfe..6216950 100644 --- a/docs/business/index.md +++ b/docs/business/index.md @@ -2,7 +2,7 @@ [![PyPI](https://img.shields.io/pypi/v/gds-business)](https://pypi.org/project/gds-business/) [![Python](https://img.shields.io/pypi/pyversions/gds-business)](https://pypi.org/project/gds-business/) -[![License](https://img.shields.io/github/license/BlockScience/gds-core)](https://github.com/BlockScience/gds-core/blob/main/LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-core)](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/LICENSE) **Business dynamics DSL over GDS semantics** — causal loop diagrams, supply chain networks, and value stream maps with formal verification. @@ -121,4 +121,4 @@ Model lean manufacturing value streams with process steps, inventory buffers, an ## Credits -Built on [gds-framework](../framework/index.md) by [BlockScience](https://block.science). +Built on [gds-framework](../framework/index.md) by [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup). diff --git a/docs/case-studies/axelrod.md b/docs/case-studies/axelrod.md index 358f279..4f6d017 100644 --- a/docs/case-studies/axelrod.md +++ b/docs/case-studies/axelrod.md @@ -2,13 +2,13 @@ **One model, many views** — an interactive exploration of Axelrod's iterated Prisoner's Dilemma tournament, built on the GDS ecosystem. -[:octicons-link-external-16: Live Site](https://blockscience.github.io/gds-axelrod/)   [:octicons-mark-github-16: Source](https://github.com/BlockScience/gds-axelrod) +[:octicons-link-external-16: Live Site](https://dynamicalsystemsgroup.github.io/gds-axelrod/)   [:octicons-mark-github-16: Source](https://github.com/DynamicalSystemsGroup/gds-axelrod) --- ## Overview -[gds-axelrod](https://github.com/BlockScience/gds-axelrod) demonstrates how a single OGS game specification can be projected through six distinct analytical lenses — from narrative storytelling to formal mathematical decomposition to interactive parameter exploration — without simplification or compromise. +[gds-axelrod](https://github.com/DynamicalSystemsGroup/gds-axelrod) demonstrates how a single OGS game specification can be projected through six distinct analytical lenses — from narrative storytelling to formal mathematical decomposition to interactive parameter exploration — without simplification or compromise. The project is a concrete realization of the **specification-as-interoperability-layer** pattern described in the [Interoperability Guide](../guides/interoperability.md): one compositional model serves as the single source of truth, and multiple independent tools consume it for different purposes. diff --git a/docs/continuous/getting-started.md b/docs/continuous/getting-started.md index e2749c5..61a387c 100644 --- a/docs/continuous/getting-started.md +++ b/docs/continuous/getting-started.md @@ -9,7 +9,7 @@ uv add "gds-continuous[scipy]" For development (monorepo): ```bash -git clone https://github.com/BlockScience/gds-core.git +git clone https://github.com/DynamicalSystemsGroup/gds-core.git cd gds-core uv sync --all-packages ``` diff --git a/docs/continuous/index.md b/docs/continuous/index.md index 749fe14..e551130 100644 --- a/docs/continuous/index.md +++ b/docs/continuous/index.md @@ -2,7 +2,7 @@ [![PyPI](https://img.shields.io/pypi/v/gds-continuous)](https://pypi.org/project/gds-continuous/) [![Python](https://img.shields.io/pypi/pyversions/gds-continuous)](https://pypi.org/project/gds-continuous/) -[![License](https://img.shields.io/github/license/BlockScience/gds-core)](https://github.com/BlockScience/gds-core/blob/main/LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-core)](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/LICENSE) **Continuous-time ODE integration engine** -- the continuous-time counterpart to `gds-sim`. @@ -65,4 +65,4 @@ See [Getting Started](getting-started.md) for a full walkthrough. ## Credits -Built by [BlockScience](https://block.science). +Built by [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup). diff --git a/docs/control/getting-started.md b/docs/control/getting-started.md index 34db025..d5b5703 100644 --- a/docs/control/getting-started.md +++ b/docs/control/getting-started.md @@ -10,7 +10,7 @@ uv add gds-control For development (monorepo): ```bash -git clone https://github.com/BlockScience/gds-core.git +git clone https://github.com/DynamicalSystemsGroup/gds-core.git cd gds-core uv sync --all-packages ``` diff --git a/docs/control/index.md b/docs/control/index.md index 7abe1da..9d17662 100644 --- a/docs/control/index.md +++ b/docs/control/index.md @@ -2,7 +2,7 @@ [![PyPI](https://img.shields.io/pypi/v/gds-control)](https://pypi.org/project/gds-control/) [![Python](https://img.shields.io/pypi/pyversions/gds-control)](https://pypi.org/project/gds-control/) -[![License](https://img.shields.io/github/license/BlockScience/gds-core)](https://github.com/BlockScience/gds-core/blob/main/LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-core)](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/LICENSE) **State-space control DSL over GDS semantics** -- control theory with formal verification. @@ -92,4 +92,4 @@ See [Getting Started](getting-started.md) for a full walkthrough. ## Credits -Built on [gds-framework](../framework/index.md) by [BlockScience](https://block.science). +Built on [gds-framework](../framework/index.md) by [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup). diff --git a/docs/examples/examples/crosswalk.md b/docs/examples/examples/crosswalk.md index 9072ef5..79be7c2 100644 --- a/docs/examples/examples/crosswalk.md +++ b/docs/examples/examples/crosswalk.md @@ -1,6 +1,6 @@ # Crosswalk Problem -**Mechanism design** — the canonical GDS example from BlockScience. +**Mechanism design** — the canonical GDS example from Dynamical Systems Group. A pedestrian decides whether to cross a one-way street while traffic evolves as a discrete Markov chain. A governance body chooses crosswalk placement to minimize accident probability. @@ -38,7 +38,7 @@ flowchart LR ## Files -- [model.py](https://github.com/BlockScience/gds-examples/blob/main/crosswalk/model.py) -- [test_model.py](https://github.com/BlockScience/gds-examples/blob/main/crosswalk/test_model.py) -- [VIEWS.md](https://github.com/BlockScience/gds-examples/blob/main/crosswalk/VIEWS.md) -- [README.md](https://github.com/BlockScience/gds-examples/blob/main/crosswalk/README.md) +- [model.py](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/crosswalk/model.py) +- [test_model.py](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/crosswalk/test_model.py) +- [VIEWS.md](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/crosswalk/VIEWS.md) +- [README.md](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/crosswalk/README.md) diff --git a/docs/examples/examples/evolution-of-trust.md b/docs/examples/examples/evolution-of-trust.md index 05d44b6..4ee4bd8 100644 --- a/docs/examples/examples/evolution-of-trust.md +++ b/docs/examples/examples/evolution-of-trust.md @@ -79,10 +79,10 @@ Each layer consumes only `get_payoff()` from the specification — no GDS intern ## Files -- [model.py](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/games/evolution_of_trust/model.py) -- [strategies.py](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/games/evolution_of_trust/strategies.py) -- [tournament.py](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/games/evolution_of_trust/tournament.py) -- [test_model.py](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/games/evolution_of_trust/test_model.py) +- [model.py](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/games/evolution_of_trust/model.py) +- [strategies.py](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/games/evolution_of_trust/strategies.py) +- [tournament.py](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/games/evolution_of_trust/tournament.py) +- [test_model.py](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/games/evolution_of_trust/test_model.py) ## Related diff --git a/docs/examples/examples/insurance.md b/docs/examples/examples/insurance.md index 865cfa4..ad6a251 100644 --- a/docs/examples/examples/insurance.md +++ b/docs/examples/examples/insurance.md @@ -39,6 +39,6 @@ flowchart LR ## Files -- [model.py](https://github.com/BlockScience/gds-examples/blob/main/insurance/model.py) -- [test_model.py](https://github.com/BlockScience/gds-examples/blob/main/insurance/test_model.py) -- [VIEWS.md](https://github.com/BlockScience/gds-examples/blob/main/insurance/VIEWS.md) +- [model.py](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/insurance/model.py) +- [test_model.py](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/insurance/test_model.py) +- [VIEWS.md](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/insurance/VIEWS.md) diff --git a/docs/examples/examples/lotka-volterra.md b/docs/examples/examples/lotka-volterra.md index 7339976..f2ba87e 100644 --- a/docs/examples/examples/lotka-volterra.md +++ b/docs/examples/examples/lotka-volterra.md @@ -42,6 +42,6 @@ flowchart TD ## Files -- [model.py](https://github.com/BlockScience/gds-examples/blob/main/lotka_volterra/model.py) -- [test_model.py](https://github.com/BlockScience/gds-examples/blob/main/lotka_volterra/test_model.py) -- [VIEWS.md](https://github.com/BlockScience/gds-examples/blob/main/lotka_volterra/VIEWS.md) +- [model.py](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/lotka_volterra/model.py) +- [test_model.py](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/lotka_volterra/test_model.py) +- [VIEWS.md](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/lotka_volterra/VIEWS.md) diff --git a/docs/examples/examples/prisoners-dilemma.md b/docs/examples/examples/prisoners-dilemma.md index 5c787d6..ebd2532 100644 --- a/docs/examples/examples/prisoners-dilemma.md +++ b/docs/examples/examples/prisoners-dilemma.md @@ -45,6 +45,6 @@ flowchart TD ## Files -- [model.py](https://github.com/BlockScience/gds-examples/blob/main/prisoners_dilemma/model.py) -- [test_model.py](https://github.com/BlockScience/gds-examples/blob/main/prisoners_dilemma/test_model.py) -- [VIEWS.md](https://github.com/BlockScience/gds-examples/blob/main/prisoners_dilemma/VIEWS.md) +- [model.py](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/prisoners_dilemma/model.py) +- [test_model.py](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/prisoners_dilemma/test_model.py) +- [VIEWS.md](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/prisoners_dilemma/VIEWS.md) diff --git a/docs/examples/examples/sir-epidemic.md b/docs/examples/examples/sir-epidemic.md index 9afc085..5ced0d3 100644 --- a/docs/examples/examples/sir-epidemic.md +++ b/docs/examples/examples/sir-epidemic.md @@ -63,6 +63,6 @@ Three entities, each with a single count variable: ## Files -- [model.py](https://github.com/BlockScience/gds-examples/blob/main/sir_epidemic/model.py) -- [test_model.py](https://github.com/BlockScience/gds-examples/blob/main/sir_epidemic/test_model.py) -- [VIEWS.md](https://github.com/BlockScience/gds-examples/blob/main/sir_epidemic/VIEWS.md) +- [model.py](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/sir_epidemic/model.py) +- [test_model.py](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/sir_epidemic/test_model.py) +- [VIEWS.md](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/sir_epidemic/VIEWS.md) diff --git a/docs/examples/examples/thermostat.md b/docs/examples/examples/thermostat.md index 54f6ea6..8503592 100644 --- a/docs/examples/examples/thermostat.md +++ b/docs/examples/examples/thermostat.md @@ -41,6 +41,6 @@ flowchart TD ## Files -- [model.py](https://github.com/BlockScience/gds-examples/blob/main/thermostat/model.py) -- [test_model.py](https://github.com/BlockScience/gds-examples/blob/main/thermostat/test_model.py) -- [VIEWS.md](https://github.com/BlockScience/gds-examples/blob/main/thermostat/VIEWS.md) +- [model.py](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/thermostat/model.py) +- [test_model.py](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/thermostat/test_model.py) +- [VIEWS.md](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/thermostat/VIEWS.md) diff --git a/docs/examples/index.md b/docs/examples/index.md index 59afcba..1ad12ad 100644 --- a/docs/examples/index.md +++ b/docs/examples/index.md @@ -2,9 +2,9 @@ [![PyPI](https://img.shields.io/pypi/v/gds-examples)](https://pypi.org/project/gds-examples/) [![Python](https://img.shields.io/pypi/pyversions/gds-examples)](https://pypi.org/project/gds-examples/) -[![License](https://img.shields.io/github/license/BlockScience/gds-examples)](https://github.com/BlockScience/gds-examples/blob/main/LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-examples)](https://github.com/DynamicalSystemsGroup/gds-examples/blob/main/LICENSE) -**Seven example models** demonstrating every [gds-framework](https://blockscience.github.io/gds-framework) feature. The first six are GDS framework tutorials with inline theory commentary. The seventh uses the OGS game theory DSL with tournament simulation. +**Seven example models** demonstrating every [gds-framework](https://dynamicalsystemsgroup.github.io/gds-framework) feature. The first six are GDS framework tutorials with inline theory commentary. The seventh uses the OGS game theory DSL with tournament simulation. ## Quick Start @@ -48,7 +48,7 @@ examples/sir_epidemic/ ## Credits -**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [BlockScience](https://block.science/) +**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup) **Theoretical foundation:** [Dr. Michael Zargham](https://github.com/mzargham) and [Dr. Jamsheed Shorish](https://github.com/jshorish) diff --git a/docs/examples/learning-path.md b/docs/examples/learning-path.md index f889ff7..79336e3 100644 --- a/docs/examples/learning-path.md +++ b/docs/examples/learning-path.md @@ -36,7 +36,7 @@ Completes the 4-role taxonomy. The only example using all four roles: BoundaryAc ### 6. [Crosswalk Problem](examples/crosswalk.md) — Mechanism Design -The canonical GDS example from BlockScience. Demonstrates mechanism design with a governance parameter constraining agent behavior via discrete Markov transitions. +The canonical GDS example from Dynamical Systems Group. Demonstrates mechanism design with a governance parameter constraining agent behavior via discrete Markov transitions. **New:** mechanism design, governance parameters, discrete state diff --git a/docs/framework/design/proposals/entity-redesign.md b/docs/framework/design/proposals/entity-redesign.md index e96ff10..b5cf2d7 100644 --- a/docs/framework/design/proposals/entity-redesign.md +++ b/docs/framework/design/proposals/entity-redesign.md @@ -1142,5 +1142,5 @@ This closes the loop: SysML v2 declares intent, GDS core verifies structure, the - KerML / SysML v2 Overview: https://sim4edu.com/reading/kerml-sysml/ - GDS Theory: Roxin (1965), Zargham & Shorish (2020) - Epidemic Control as Resource Allocation: Preciado, Zargham, Enyioha, Jadbabaie & Pappas — "Optimal Resource Allocation for Control of Networked Epidemic Models" (2014). -- MSML: BlockScience +- MSML: Dynamical Systems Group - Categorical Cybernetics: Ghani, Hedges et al. diff --git a/docs/framework/ecosystem.md b/docs/framework/ecosystem.md index 0b2f442..ad6ec14 100644 --- a/docs/framework/ecosystem.md +++ b/docs/framework/ecosystem.md @@ -55,7 +55,7 @@ gds-sim ← simulation engine (standalone — no gds-framework dep, only ## Links -- [GitHub Organization](https://github.com/BlockScience) +- [GitHub Organization](https://github.com/DynamicalSystemsGroup) - [GDS Theory Paper](https://doi.org/10.57938/e8d456ea-d975-4111-ac41-052ce73cb0cc) (Zargham & Shorish, 2022) - [cadCAD Ecosystem](https://github.com/cadCAD-org/cadCAD) -- [BlockScience](https://block.science/) +- [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup) diff --git a/docs/framework/getting-started/install.md b/docs/framework/getting-started/install.md index 799c2d3..d311123 100644 --- a/docs/framework/getting-started/install.md +++ b/docs/framework/getting-started/install.md @@ -29,7 +29,7 @@ print(gds.__version__) ## Development Setup ```bash -git clone https://github.com/BlockScience/gds-framework.git +git clone https://github.com/DynamicalSystemsGroup/gds-framework.git cd gds-framework uv sync uv run pytest tests/ -v diff --git a/docs/framework/getting-started/quickstart.md b/docs/framework/getting-started/quickstart.md index b163544..e6fc9a2 100644 --- a/docs/framework/getting-started/quickstart.md +++ b/docs/framework/getting-started/quickstart.md @@ -58,4 +58,4 @@ print(f"{report.checks_passed}/{report.checks_total} checks passed") - [Architecture](../guide/architecture.md) — understand the two-layer design - [Blocks & Roles](../guide/blocks.md) — role constraints and composition -- [Examples](https://blockscience.github.io/gds-examples) — six complete tutorial models +- [Examples](https://dynamicalsystemsgroup.github.io/gds-examples) — six complete tutorial models diff --git a/docs/framework/guide/glossary.md b/docs/framework/guide/glossary.md index e6d505e..a57186b 100644 --- a/docs/framework/guide/glossary.md +++ b/docs/framework/guide/glossary.md @@ -20,6 +20,6 @@ GDS terminology mapped to framework concepts. ## Intellectual Lineage - **GDS formalism** (Roxin 1960s; [Zargham & Shorish 2022](https://doi.org/10.57938/e8d456ea-d975-4111-ac41-052ce73cb0cc)) — state transitions composed over arbitrary data structures -- **MSML** (BlockScience) — block roles, parameter tracking, typed transmission channels +- **MSML** (Dynamical Systems Group) — block roles, parameter tracking, typed transmission channels - **BDP-lib** (Block Diagram Protocol) — abstract/concrete separation, structural validation - **Categorical cybernetics** (Ghani, Hedges et al.) — bidirectional composition with contravariant feedback diff --git a/docs/framework/index.md b/docs/framework/index.md index de99c68..1ec49aa 100644 --- a/docs/framework/index.md +++ b/docs/framework/index.md @@ -2,8 +2,8 @@ [![PyPI](https://img.shields.io/pypi/v/gds-framework)](https://pypi.org/project/gds-framework/) [![Python](https://img.shields.io/pypi/pyversions/gds-framework)](https://pypi.org/project/gds-framework/) -[![License](https://img.shields.io/github/license/BlockScience/gds-framework)](https://github.com/BlockScience/gds-framework/blob/main/LICENSE) -[![CI](https://github.com/BlockScience/gds-framework/actions/workflows/ci.yml/badge.svg)](https://github.com/BlockScience/gds-framework/actions/workflows/ci.yml) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-framework)](https://github.com/DynamicalSystemsGroup/gds-framework/blob/main/LICENSE) +[![CI](https://github.com/DynamicalSystemsGroup/gds-framework/actions/workflows/ci.yml/badge.svg)](https://github.com/DynamicalSystemsGroup/gds-framework/actions/workflows/ci.yml) **Typed compositional specifications for complex systems**, grounded in [Generalized Dynamical Systems](https://doi.org/10.57938/e8d456ea-d975-4111-ac41-052ce73cb0cc) theory (Zargham & Shorish, 2022). @@ -101,15 +101,15 @@ Blocks with bidirectional typed interfaces, composed via four operators (`>>`, ` ## Credits -**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [BlockScience](https://block.science/) +**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup) **Theoretical foundation:** [Dr. Michael Zargham](https://github.com/mzargham) and [Dr. Jamsheed Shorish](https://github.com/jshorish) — [Generalized Dynamical Systems, Part I: Foundations](https://blog.block.science/generalized-dynamical-systems-part-i-foundations-2/) (2021). -**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/BlockScience/MSML) and [bdp-lib](https://github.com/BlockScience/bdp-lib). +**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/DynamicalSystemsGroup/MSML) and [bdp-lib](https://github.com/DynamicalSystemsGroup/bdp-lib). **Contributors:** -* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (BlockScience). -* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (BlockScience). +* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (Dynamical Systems Group). +* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (Dynamical Systems Group). **Lineage:** Part of the [cadCAD](https://github.com/cadCAD-org/cadCAD) ecosystem for Complex Adaptive Dynamics. diff --git a/docs/games/design/architecture-overview.md b/docs/games/design/architecture-overview.md index 5750d10..420b2a4 100644 --- a/docs/games/design/architecture-overview.md +++ b/docs/games/design/architecture-overview.md @@ -41,7 +41,7 @@ ## Ownership and Delivery -All three packages are **developed by BlockScience**. During delivery: +All three packages are **developed by Dynamical Systems Group**. During delivery: - **GDS Framework** and **DSL packages** (like OGS) are made public and pip-installable - **Client repos** are delivered to the client team who can: @@ -50,7 +50,7 @@ All three packages are **developed by BlockScience**. During delivery: - Build entirely new DSL packages on top of GDS ``` - BlockScience develops + Dynamical Systems Group develops ┌─────────────────────────────────┐ │ gds-framework (open source) │ │ gds-games (open source) │ @@ -185,8 +185,8 @@ IR (Intermediate Representation) is the **contract between layers**. ### Repo structure ``` -BlockScience/gds-framework ← public, on PyPI as gds-framework -BlockScience/gds-games ← public, on PyPI as gds-games +DynamicalSystemsGroup/gds-framework ← public, on PyPI as gds-framework +DynamicalSystemsGroup/gds-games ← public, on PyPI as gds-games pure library: ogs/, tests/ depends on gds-framework (PyPI) client-app/ ← private, delivered to client diff --git a/docs/games/index.md b/docs/games/index.md index 716e3b0..a9818db 100644 --- a/docs/games/index.md +++ b/docs/games/index.md @@ -2,9 +2,9 @@ [![PyPI](https://img.shields.io/pypi/v/gds-games)](https://pypi.org/project/gds-games/) [![Python](https://img.shields.io/pypi/pyversions/gds-games)](https://pypi.org/project/gds-games/) -[![License](https://img.shields.io/github/license/BlockScience/gds-games)](https://github.com/BlockScience/gds-games/blob/main/LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-games)](https://github.com/DynamicalSystemsGroup/gds-games/blob/main/LICENSE) -**Typed DSL for compositional game theory**, built on [gds-framework](https://blockscience.github.io/gds-framework). +**Typed DSL for compositional game theory**, built on [gds-framework](https://dynamicalsystemsgroup.github.io/gds-framework). ## What is this? @@ -67,7 +67,7 @@ print(f"{report.checks_passed}/{report.checks_total} checks passed") ## Credits -**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [BlockScience](https://block.science/) +**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup) **Theoretical foundation:** [Dr. Michael Zargham](https://github.com/mzargham) and [Dr. Jamsheed Shorish](https://github.com/jshorish) diff --git a/docs/guides/getting-started.md b/docs/guides/getting-started.md index 2043698..35cf0a0 100644 --- a/docs/guides/getting-started.md +++ b/docs/guides/getting-started.md @@ -446,9 +446,9 @@ uv run --package gds-examples pytest packages/gds-examples/tests/test_getting_st | File | Purpose | |------|---------| -| [`stage1_minimal.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/getting_started/stage1_minimal.py) | Minimal heater model | -| [`stage2_feedback.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/getting_started/stage2_feedback.py) | Feedback loop with policies | -| [`stage3_dsl.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/getting_started/stage3_dsl.py) | gds-control DSL version | -| [`stage4_verify_viz.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/getting_started/stage4_verify_viz.py) | Verification and visualization | -| [`stage5_query.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/getting_started/stage5_query.py) | SpecQuery API | -| [`getting_started.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/notebooks/getting_started.py) | Interactive marimo notebook | +| [`stage1_minimal.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/getting_started/stage1_minimal.py) | Minimal heater model | +| [`stage2_feedback.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/getting_started/stage2_feedback.py) | Feedback loop with policies | +| [`stage3_dsl.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/getting_started/stage3_dsl.py) | gds-control DSL version | +| [`stage4_verify_viz.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/getting_started/stage4_verify_viz.py) | Verification and visualization | +| [`stage5_query.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/getting_started/stage5_query.py) | SpecQuery API | +| [`getting_started.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/notebooks/getting_started.py) | Interactive marimo notebook | diff --git a/docs/guides/rosetta-stone.md b/docs/guides/rosetta-stone.md index 8311955..0a2e4bb 100644 --- a/docs/guides/rosetta-stone.md +++ b/docs/guides/rosetta-stone.md @@ -337,8 +337,8 @@ uv run --package gds-examples pytest packages/gds-examples/tests/test_rosetta.py | File | Purpose | |------|---------| -| [`stockflow_view.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/rosetta/stockflow_view.py) | Stock-flow DSL model | -| [`control_view.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/rosetta/control_view.py) | Control DSL model | -| [`game_view.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/rosetta/game_view.py) | Game theory DSL model | -| [`comparison.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/rosetta/comparison.py) | Cross-domain canonical comparison | -| [`rosetta.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/notebooks/rosetta.py) | Interactive marimo notebook | +| [`stockflow_view.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/rosetta/stockflow_view.py) | Stock-flow DSL model | +| [`control_view.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/rosetta/control_view.py) | Control DSL model | +| [`game_view.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/rosetta/game_view.py) | Game theory DSL model | +| [`comparison.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/rosetta/comparison.py) | Cross-domain canonical comparison | +| [`rosetta.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/notebooks/rosetta.py) | Interactive marimo notebook | diff --git a/docs/guides/verification.md b/docs/guides/verification.md index d511f67..c1a4071 100644 --- a/docs/guides/verification.md +++ b/docs/guides/verification.md @@ -404,7 +404,7 @@ uv run --package gds-examples pytest packages/gds-examples/tests/test_verificati | File | Purpose | |------|---------| -| [`broken_models.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/verification/broken_models.py) | Deliberately broken models for each check | -| [`verification_demo.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/verification/verification_demo.py) | Generic and semantic check demos | -| [`domain_checks_demo.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/verification/domain_checks_demo.py) | StockFlow domain check demos | -| [`notebook.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/notebooks/verification.py) | Interactive marimo notebook | +| [`broken_models.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/verification/broken_models.py) | Deliberately broken models for each check | +| [`verification_demo.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/verification/verification_demo.py) | Generic and semantic check demos | +| [`domain_checks_demo.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/verification/domain_checks_demo.py) | StockFlow domain check demos | +| [`notebook.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/notebooks/verification.py) | Interactive marimo notebook | diff --git a/docs/guides/visualization.md b/docs/guides/visualization.md index 44b9e56..6c98438 100644 --- a/docs/guides/visualization.md +++ b/docs/guides/visualization.md @@ -227,7 +227,7 @@ uv run --package gds-examples pytest packages/gds-examples/tests/test_visualizat | File | Purpose | |------|---------| -| [`all_views_demo.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/visualization/all_views_demo.py) | All 6 view types on the SIR model | -| [`theme_customization.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/visualization/theme_customization.py) | 5 built-in theme demos | -| [`cross_dsl_views.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/gds_examples/visualization/cross_dsl_views.py) | Cross-DSL visualization comparison | -| [`visualization.py`](https://github.com/BlockScience/gds-core/blob/main/packages/gds-examples/notebooks/visualization.py) | Interactive marimo notebook | +| [`all_views_demo.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/visualization/all_views_demo.py) | All 6 view types on the SIR model | +| [`theme_customization.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/visualization/theme_customization.py) | 5 built-in theme demos | +| [`cross_dsl_views.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/gds_examples/visualization/cross_dsl_views.py) | Cross-DSL visualization comparison | +| [`visualization.py`](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/packages/gds-examples/notebooks/visualization.py) | Interactive marimo notebook | diff --git a/docs/index.md b/docs/index.md index 7872a1a..c7fc96f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -119,8 +119,8 @@ assistants, agents, and LLMs: | Resource | URL | Use | |----------|-----|-----| -| **llms.txt** | [/llms.txt](https://blockscience.github.io/gds-core/llms.txt) | Compact index of all documentation pages with one-line descriptions | -| **llms-full.txt** | [/llms-full.txt](https://blockscience.github.io/gds-core/llms-full.txt) | Full concatenated documentation — feed this to an LLM for complete context on the GDS ecosystem | +| **llms.txt** | [/llms.txt](https://dynamicalsystemsgroup.github.io/gds-core/llms.txt) | Compact index of all documentation pages with one-line descriptions | +| **llms-full.txt** | [/llms-full.txt](https://dynamicalsystemsgroup.github.io/gds-core/llms-full.txt) | Full concatenated documentation — feed this to an LLM for complete context on the GDS ecosystem | **If you are an AI agent** working with gds-core, fetch `llms-full.txt` to get a comprehensive understanding of the framework's architecture, all 14 packages, @@ -135,4 +135,4 @@ changes, and new capabilities across all packages. ## License -Apache-2.0 — [BlockScience](https://block.science) +Apache-2.0 — [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup) diff --git a/docs/owl/index.md b/docs/owl/index.md index 7a5d9e0..06540c5 100644 --- a/docs/owl/index.md +++ b/docs/owl/index.md @@ -2,7 +2,7 @@ [![PyPI](https://img.shields.io/pypi/v/gds-owl)](https://pypi.org/project/gds-owl/) [![Python](https://img.shields.io/pypi/pyversions/gds-owl)](https://pypi.org/project/gds-owl/) -[![License](https://img.shields.io/github/license/BlockScience/gds-core)](https://github.com/BlockScience/gds-core/blob/main/LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-core)](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/LICENSE) **OWL/Turtle, SHACL, and SPARQL for GDS specifications** — semantic web interoperability for compositional systems. diff --git a/docs/proof/getting-started.md b/docs/proof/getting-started.md index 14c747d..d646ca6 100644 --- a/docs/proof/getting-started.md +++ b/docs/proof/getting-started.md @@ -9,7 +9,7 @@ uv add gds-proof For development (monorepo): ```bash -git clone https://github.com/BlockScience/gds-core.git +git clone https://github.com/DynamicalSystemsGroup/gds-core.git cd gds-core uv sync --all-packages ``` diff --git a/docs/proof/index.md b/docs/proof/index.md index a93f3de..cd0172c 100644 --- a/docs/proof/index.md +++ b/docs/proof/index.md @@ -2,7 +2,7 @@ [![PyPI](https://img.shields.io/pypi/v/gds-proof)](https://pypi.org/project/gds-proof/) [![Python](https://img.shields.io/pypi/pyversions/gds-proof)](https://pypi.org/project/gds-proof/) -[![License](https://img.shields.io/github/license/BlockScience/gds-core)](https://github.com/BlockScience/gds-core/blob/main/LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-core)](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/LICENSE) **Deterministic model identity and SymPy-based invariant proof verification for GDS models.** @@ -76,4 +76,4 @@ See [Getting Started](getting-started.md) for a full walkthrough. ## Credits -Built on [gds-framework](../framework/index.md) and [SymPy](https://www.sympy.org/) by [BlockScience](https://block.science). +Built on [gds-framework](../framework/index.md) and [SymPy](https://www.sympy.org/) by [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup). diff --git a/docs/psuu/getting-started.md b/docs/psuu/getting-started.md index 82bc6a9..624096b 100644 --- a/docs/psuu/getting-started.md +++ b/docs/psuu/getting-started.md @@ -17,7 +17,7 @@ uv add "gds-psuu[bayesian]" For development (monorepo): ```bash -git clone https://github.com/BlockScience/gds-core.git +git clone https://github.com/DynamicalSystemsGroup/gds-core.git cd gds-core uv sync --all-packages ``` diff --git a/docs/psuu/index.md b/docs/psuu/index.md index 393c8b8..86252a5 100644 --- a/docs/psuu/index.md +++ b/docs/psuu/index.md @@ -2,7 +2,7 @@ [![PyPI](https://img.shields.io/pypi/v/gds-psuu)](https://pypi.org/project/gds-psuu/) [![Python](https://img.shields.io/pypi/pyversions/gds-psuu)](https://pypi.org/project/gds-psuu/) -[![License](https://img.shields.io/github/license/BlockScience/gds-core)](https://github.com/BlockScience/gds-core/blob/main/LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-core)](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/LICENSE) **Parameter space search under uncertainty** -- explore, evaluate, and optimize simulation parameters with Monte Carlo awareness. @@ -89,4 +89,4 @@ See [Getting Started](getting-started.md) for a full walkthrough. ## Credits -Built on gds-sim by [BlockScience](https://block.science). +Built on gds-sim by [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup). diff --git a/docs/research/journal.md b/docs/research/journal.md index ddc69ee..14c3d4e 100644 --- a/docs/research/journal.md +++ b/docs/research/journal.md @@ -4,11 +4,11 @@ Structured log of verification research for the Generalized Dynamical Systems ecosystem. Each entry records motivation, method, outcome, and next steps. Verification plan: [verification-plan.md](verification-plan.md) -Issues: [#134](https://github.com/BlockScience/gds-core/issues/134), -[#135](https://github.com/BlockScience/gds-core/issues/135), -[#136](https://github.com/BlockScience/gds-core/issues/136), -[#137](https://github.com/BlockScience/gds-core/issues/137), -[#138](https://github.com/BlockScience/gds-core/issues/138) +Issues: [#134](https://github.com/DynamicalSystemsGroup/gds-core/issues/134), +[#135](https://github.com/DynamicalSystemsGroup/gds-core/issues/135), +[#136](https://github.com/DynamicalSystemsGroup/gds-core/issues/136), +[#137](https://github.com/DynamicalSystemsGroup/gds-core/issues/137), +[#138](https://github.com/DynamicalSystemsGroup/gds-core/issues/138) --- diff --git a/docs/software/getting-started.md b/docs/software/getting-started.md index 42beb4e..17447c2 100644 --- a/docs/software/getting-started.md +++ b/docs/software/getting-started.md @@ -10,7 +10,7 @@ uv add gds-software For development (monorepo): ```bash -git clone https://github.com/BlockScience/gds-core.git +git clone https://github.com/DynamicalSystemsGroup/gds-core.git cd gds-core uv sync --all-packages ``` diff --git a/docs/software/index.md b/docs/software/index.md index c83fbf4..ff5ea32 100644 --- a/docs/software/index.md +++ b/docs/software/index.md @@ -2,7 +2,7 @@ [![PyPI](https://img.shields.io/pypi/v/gds-software)](https://pypi.org/project/gds-software/) [![Python](https://img.shields.io/pypi/pyversions/gds-software)](https://pypi.org/project/gds-software/) -[![License](https://img.shields.io/github/license/BlockScience/gds-core)](https://github.com/BlockScience/gds-core/blob/main/LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-core)](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/LICENSE) **Software architecture DSL over GDS semantics** -- DFDs, state machines, component diagrams, C4 models, ERDs, and dependency graphs with formal verification. @@ -66,4 +66,4 @@ See [Getting Started](getting-started.md) for a full walkthrough. ## Credits -Built on [gds-framework](../framework/index.md) by [BlockScience](https://block.science). +Built on [gds-framework](../framework/index.md) by [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup). diff --git a/docs/stockflow/getting-started.md b/docs/stockflow/getting-started.md index c8ffa41..b954a81 100644 --- a/docs/stockflow/getting-started.md +++ b/docs/stockflow/getting-started.md @@ -10,7 +10,7 @@ uv add gds-stockflow For development (monorepo): ```bash -git clone https://github.com/BlockScience/gds-core.git +git clone https://github.com/DynamicalSystemsGroup/gds-core.git cd gds-core uv sync --all-packages ``` diff --git a/docs/stockflow/index.md b/docs/stockflow/index.md index fbcbc92..cffded2 100644 --- a/docs/stockflow/index.md +++ b/docs/stockflow/index.md @@ -2,7 +2,7 @@ [![PyPI](https://img.shields.io/pypi/v/gds-stockflow)](https://pypi.org/project/gds-stockflow/) [![Python](https://img.shields.io/pypi/pyversions/gds-stockflow)](https://pypi.org/project/gds-stockflow/) -[![License](https://img.shields.io/github/license/BlockScience/gds-core)](https://github.com/BlockScience/gds-core/blob/main/LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-core)](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/LICENSE) **Declarative stock-flow DSL over GDS semantics** — system dynamics with formal verification. @@ -81,4 +81,4 @@ See [Getting Started](getting-started.md) for a full walkthrough. ## Credits -Built on [gds-framework](../framework/index.md) by [BlockScience](https://block.science). +Built on [gds-framework](../framework/index.md) by [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup). diff --git a/docs/symbolic/getting-started.md b/docs/symbolic/getting-started.md index dad4020..9fedadc 100644 --- a/docs/symbolic/getting-started.md +++ b/docs/symbolic/getting-started.md @@ -9,7 +9,7 @@ uv add "gds-symbolic[sympy]" For development (monorepo): ```bash -git clone https://github.com/BlockScience/gds-core.git +git clone https://github.com/DynamicalSystemsGroup/gds-core.git cd gds-core uv sync --all-packages ``` diff --git a/docs/symbolic/index.md b/docs/symbolic/index.md index 21d693d..a3da0dc 100644 --- a/docs/symbolic/index.md +++ b/docs/symbolic/index.md @@ -2,7 +2,7 @@ [![PyPI](https://img.shields.io/pypi/v/gds-symbolic)](https://pypi.org/project/gds-symbolic/) [![Python](https://img.shields.io/pypi/pyversions/gds-symbolic)](https://pypi.org/project/gds-symbolic/) -[![License](https://img.shields.io/github/license/BlockScience/gds-core)](https://github.com/BlockScience/gds-core/blob/main/LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-core)](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/LICENSE) **SymPy bridge for gds-control** -- symbolic state equations, automatic linearization, and ODE code generation. @@ -73,4 +73,4 @@ See [Getting Started](getting-started.md) for a full walkthrough. ## Credits -Built on [gds-control](../control/index.md) by [BlockScience](https://block.science). +Built on [gds-control](../control/index.md) by [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup). diff --git a/docs/viz/index.md b/docs/viz/index.md index a44f1e5..9703fc7 100644 --- a/docs/viz/index.md +++ b/docs/viz/index.md @@ -2,9 +2,9 @@ [![PyPI](https://img.shields.io/pypi/v/gds-viz)](https://pypi.org/project/gds-viz/) [![Python](https://img.shields.io/pypi/pyversions/gds-viz)](https://pypi.org/project/gds-viz/) -[![License](https://img.shields.io/github/license/BlockScience/gds-viz)](https://github.com/BlockScience/gds-viz/blob/main/LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-viz)](https://github.com/DynamicalSystemsGroup/gds-viz/blob/main/LICENSE) -**Mermaid diagram renderers** for [gds-framework](https://blockscience.github.io/gds-framework) specifications. +**Mermaid diagram renderers** for [gds-framework](https://dynamicalsystemsgroup.github.io/gds-framework) specifications. ## Six Views @@ -95,7 +95,7 @@ The six views exhaust what is **derivable from the GDS specification** `{h, X}`. ## Credits -**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [BlockScience](https://block.science/) +**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup) **Theoretical foundation:** [Dr. Michael Zargham](https://github.com/mzargham) and [Dr. Jamsheed Shorish](https://github.com/jshorish) diff --git a/mkdocs.yml b/mkdocs.yml index 79f0d04..c42f79d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,8 +1,8 @@ site_name: GDS Ecosystem site_description: Typed compositional specifications for complex systems — framework, visualization, games, and examples -site_url: https://blockscience.github.io/gds-core -repo_url: https://github.com/BlockScience/gds-core -repo_name: BlockScience/gds-core +site_url: https://dynamicalsystemsgroup.github.io/gds-core +repo_url: https://github.com/DynamicalSystemsGroup/gds-core +repo_name: DynamicalSystemsGroup/gds-core theme: name: material diff --git a/packages/gds-analysis/pyproject.toml b/packages/gds-analysis/pyproject.toml index 5379f76..299d555 100644 --- a/packages/gds-analysis/pyproject.toml +++ b/packages/gds-analysis/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "generalized-dynamical-systems", @@ -39,9 +39,9 @@ pandas = ["pandas>=2.0"] all = ["gds-analysis[continuous,psuu,pandas]"] [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-business/pyproject.toml b/packages/gds-business/pyproject.toml index 851fa08..c37a8e3 100644 --- a/packages/gds-business/pyproject.toml +++ b/packages/gds-business/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "business-dynamics", @@ -38,9 +38,9 @@ dependencies = [ gds-domains = { workspace = true } [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-continuous/pyproject.toml b/packages/gds-continuous/pyproject.toml index 366a5fd..98d8f44 100644 --- a/packages/gds-continuous/pyproject.toml +++ b/packages/gds-continuous/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "generalized-dynamical-systems", @@ -34,9 +34,9 @@ scipy = ["scipy>=1.13", "numpy>=1.26"] pandas = ["pandas>=2.0"] [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-control/README.md b/packages/gds-control/README.md index 81f1af0..0303be2 100644 --- a/packages/gds-control/README.md +++ b/packages/gds-control/README.md @@ -2,7 +2,7 @@ [![PyPI](https://img.shields.io/pypi/v/gds-control)](https://pypi.org/project/gds-control/) [![Python](https://img.shields.io/pypi/pyversions/gds-control)](https://pypi.org/project/gds-control/) -[![License](https://img.shields.io/github/license/BlockScience/gds-control)](LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-control)](LICENSE) State-space control DSL over GDS semantics — control theory with formal guarantees. @@ -57,7 +57,7 @@ print(f"{report.checks_passed}/{report.checks_total} checks passed") ## What is this? -`gds-control` is a **domain DSL** that compiles state-space control systems to [GDS](https://github.com/BlockScience/gds-core) specifications. You declare states, inputs, sensors, and controllers as plain data models — the compiler handles the mapping to GDS role blocks, entities, composition trees, and wirings. +`gds-control` is a **domain DSL** that compiles state-space control systems to [GDS](https://github.com/DynamicalSystemsGroup/gds-core) specifications. You declare states, inputs, sensors, and controllers as plain data models — the compiler handles the mapping to GDS role blocks, entities, composition trees, and wirings. ``` Your declaration What the compiler produces @@ -78,7 +78,7 @@ u = K(y, r) (control law → Policy) r (reference → BoundaryAction) ``` -Once compiled, all downstream GDS tooling works immediately — canonical projection (`h = f ∘ g`), semantic checks, SpecQuery dependency analysis, JSON serialization, and [gds-viz](https://github.com/BlockScience/gds-core/tree/main/packages/gds-viz) diagram generation. +Once compiled, all downstream GDS tooling works immediately — canonical projection (`h = f ∘ g`), semantic checks, SpecQuery dependency analysis, JSON serialization, and [gds-viz](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-viz) diagram generation. ## Architecture @@ -211,11 +211,11 @@ report = verify(model, include_gds_checks=True) ## Examples -One tutorial example in [`gds-examples`](https://github.com/BlockScience/gds-core/tree/main/packages/gds-examples) demonstrates control system modeling using the GDS framework primitives: +One tutorial example in [`gds-examples`](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-examples) demonstrates control system modeling using the GDS framework primitives: | Example | Domain | What It Teaches | |---------|--------|-----------------| -| [Thermostat PID](https://github.com/BlockScience/gds-core/tree/main/packages/gds-examples/control/thermostat) | Control theory | `.feedback()` composition, CONTRAVARIANT backward flow, ControlAction role, multi-variable entities | +| [Thermostat PID](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-examples/control/thermostat) | Control theory | `.feedback()` composition, CONTRAVARIANT backward flow, ControlAction role, multi-variable entities |
Thermostat structural view — feedback arrow shows CONTRAVARIANT energy cost flow @@ -253,14 +253,14 @@ Built with [Claude Code](https://claude.ai/code). All code is test-driven and hu ## Credits & Attribution -**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [BlockScience](https://block.science/) +**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup) **Theoretical foundation:** [Dr. Michael Zargham](https://github.com/mzargham) and [Dr. Jamsheed Shorish](https://github.com/jshorish) — [Generalized Dynamical Systems, Part I: Foundations](https://blog.block.science/generalized-dynamical-systems-part-i-foundations-2/) (2021). -**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/BlockScience/MSML) and [bdp-lib](https://github.com/BlockScience/bdp-lib). +**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/DynamicalSystemsGroup/MSML) and [bdp-lib](https://github.com/DynamicalSystemsGroup/bdp-lib). **Contributors:** -* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (BlockScience). -* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (BlockScience). +* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (Dynamical Systems Group). +* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (Dynamical Systems Group). **Lineage:** Part of the [cadCAD](https://github.com/cadCAD-org/cadCAD) ecosystem for Complex Adaptive Dynamics. diff --git a/packages/gds-control/pyproject.toml b/packages/gds-control/pyproject.toml index b7676e6..74c2f9e 100644 --- a/packages/gds-control/pyproject.toml +++ b/packages/gds-control/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "control-systems", @@ -37,9 +37,9 @@ dependencies = [ gds-domains = { workspace = true } [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-domains/README.md b/packages/gds-domains/README.md index 81812c2..fee85ba 100644 --- a/packages/gds-domains/README.md +++ b/packages/gds-domains/README.md @@ -1,6 +1,6 @@ # gds-domains -Domain-specific languages for the [GDS ecosystem](https://github.com/BlockScience/gds-core). +Domain-specific languages for the [GDS ecosystem](https://github.com/DynamicalSystemsGroup/gds-core). ## Subpackages diff --git a/packages/gds-domains/gds_domains/games/reports/domain_analysis.py b/packages/gds-domains/gds_domains/games/reports/domain_analysis.py index 2fbfcc9..a6fb376 100644 --- a/packages/gds-domains/gds_domains/games/reports/domain_analysis.py +++ b/packages/gds-domains/gds_domains/games/reports/domain_analysis.py @@ -1,6 +1,6 @@ """Domain analysis report generator with advanced tag-based insights.""" -from jinja2 import Environment, PackageLoader +from jinja2 import Environment, PackageLoader, select_autoescape from gds_domains.games.ir.models import PatternIR @@ -11,6 +11,7 @@ def _get_jinja_env() -> Environment: loader=PackageLoader("gds_domains.games.reports", "templates"), trim_blocks=True, lstrip_blocks=True, + autoescape=select_autoescape(), ) diff --git a/packages/gds-domains/gds_domains/games/reports/generator.py b/packages/gds-domains/gds_domains/games/reports/generator.py index 4369376..4255754 100644 --- a/packages/gds-domains/gds_domains/games/reports/generator.py +++ b/packages/gds-domains/gds_domains/games/reports/generator.py @@ -19,7 +19,7 @@ from dataclasses import dataclass, field from pathlib import Path -from jinja2 import Environment, PackageLoader +from jinja2 import Environment, PackageLoader, select_autoescape from gds_domains.games.ir.models import FlowIR, PatternIR from gds_domains.games.reports.domain_analysis import generate_domain_analysis @@ -88,6 +88,7 @@ def _get_jinja_env() -> Environment: loader=PackageLoader("gds_domains.games.reports", "templates"), trim_blocks=True, lstrip_blocks=True, + autoescape=select_autoescape(), ) diff --git a/packages/gds-domains/pyproject.toml b/packages/gds-domains/pyproject.toml index 24a965a..5a3f289 100644 --- a/packages/gds-domains/pyproject.toml +++ b/packages/gds-domains/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "generalized-dynamical-systems", @@ -45,9 +45,9 @@ all = ["gds-domains[games,symbolic,nashpy]"] ogs = "gds_domains.games.cli:app" [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-examples/CITATION.cff b/packages/gds-examples/CITATION.cff index 83510cb..e81c2d9 100644 --- a/packages/gds-examples/CITATION.cff +++ b/packages/gds-examples/CITATION.cff @@ -3,8 +3,8 @@ message: "If you use this software, please cite it as below." authors: - family-names: "Mehta" given-names: "Rohan" - email: "rohan@block.science" - affiliation: "BlockScience" + email: "rohan@dynamicalsystemsgroup.com" + affiliation: "Dynamical Systems Group" title: "gds-examples" version: 0.1.0 date-released: 2026-02-21 diff --git a/packages/gds-examples/README.md b/packages/gds-examples/README.md index f7db24c..dfcc9f8 100644 --- a/packages/gds-examples/README.md +++ b/packages/gds-examples/README.md @@ -2,17 +2,17 @@ [![PyPI](https://img.shields.io/pypi/v/gds-examples)](https://pypi.org/project/gds-examples/) [![Python](https://img.shields.io/pypi/pyversions/gds-examples)](https://pypi.org/project/gds-examples/) -[![License](https://img.shields.io/github/license/BlockScience/gds-examples)](LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-examples)](LICENSE) -Complete domain models demonstrating every [gds-framework](https://github.com/BlockScience/gds-core/tree/main/packages/gds-framework) feature. Each `model.py` is written as a tutorial chapter with inline GDS theory commentary — read them in order. +Complete domain models demonstrating every [gds-framework](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-framework) feature. Each `model.py` is written as a tutorial chapter with inline GDS theory commentary — read them in order. Examples are organized by domain. Some are built using GDS framework primitives directly, while others use higher-level domain DSLs that compile to GDS automatically. See the individual DSL packages: | Domain | DSL Package | Raw GDS Examples | DSL Examples | |--------|-------------|-------------------|--------------| -| System dynamics | [gds-stockflow](https://github.com/BlockScience/gds-core/tree/main/packages/gds-stockflow) | SIR Epidemic, Lotka-Volterra | SIR Epidemic (DSL) | -| Control theory | [gds-control](https://github.com/BlockScience/gds-core/tree/main/packages/gds-control) | Thermostat PID | Double Integrator | -| Game theory | [gds-games](https://github.com/BlockScience/gds-core/tree/main/packages/gds-games) | Prisoner's Dilemma, Insurance, Crosswalk | — | +| System dynamics | [gds-stockflow](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-stockflow) | SIR Epidemic, Lotka-Volterra | SIR Epidemic (DSL) | +| Control theory | [gds-control](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-control) | Thermostat PID | Double Integrator | +| Game theory | [gds-games](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-games) | Prisoner's Dilemma, Insurance, Crosswalk | — | ## Table of Contents @@ -120,7 +120,7 @@ contact >> infection_policy >> (update_s | update_i | update_r)
-**Domain:** Stock-flow — see [gds-stockflow](https://github.com/BlockScience/gds-core/tree/main/packages/gds-stockflow) for the declarative DSL +**Domain:** Stock-flow — see [gds-stockflow](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-stockflow) for the declarative DSL **Files:** [model.py](stockflow/sir_epidemic/model.py) · [tests](stockflow/sir_epidemic/test_model.py) · [views](stockflow/sir_epidemic/VIEWS.md) @@ -155,7 +155,7 @@ system = compile_to_system(model) # → SystemIR with temporal loops -**Domain:** Stock-flow — built with [gds-stockflow](https://github.com/BlockScience/gds-core/tree/main/packages/gds-stockflow) DSL +**Domain:** Stock-flow — built with [gds-stockflow](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-stockflow) DSL **Files:** [model.py](stockflow/sir_epidemic_dsl/model.py) · [tests](stockflow/sir_epidemic_dsl/test_sir_epidemic_dsl.py) · [views](stockflow/sir_epidemic_dsl/VIEWS.md) @@ -185,7 +185,7 @@ X = (T, E) U = measured_temp g = pid_controller f = update_room Θ = -**Domain:** Control — see [gds-control](https://github.com/BlockScience/gds-core/tree/main/packages/gds-control) for the declarative DSL +**Domain:** Control — see [gds-control](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-control) for the declarative DSL **Files:** [model.py](control/thermostat/model.py) · [tests](control/thermostat/test_model.py) · [views](control/thermostat/VIEWS.md) @@ -215,7 +215,7 @@ X = (x, y) U = population_signal g = compute_rates f = (update_prey, up -**Domain:** Stock-flow — see [gds-stockflow](https://github.com/BlockScience/gds-core/tree/main/packages/gds-stockflow) for the declarative DSL +**Domain:** Stock-flow — see [gds-stockflow](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-stockflow) for the declarative DSL **Files:** [model.py](stockflow/lotka_volterra/model.py) · [tests](stockflow/lotka_volterra/test_model.py) · [views](stockflow/lotka_volterra/VIEWS.md) @@ -244,7 +244,7 @@ system = pipeline.loop([world models -> decisions]) -**Domain:** Game theory — see [gds-games](https://github.com/BlockScience/gds-core/tree/main/packages/gds-games) for the OGS DSL with compositional game patterns +**Domain:** Game theory — see [gds-games](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-games) for the OGS DSL with compositional game patterns **Files:** [model.py](games/prisoners_dilemma/model.py) · [tests](games/prisoners_dilemma/test_model.py) · [views](games/prisoners_dilemma/VIEWS.md) · [architecture viz](games/prisoners_dilemma/visualize.py) @@ -252,7 +252,7 @@ system = pipeline.loop([world models -> decisions]) ### Prisoner's Dilemma (OGS DSL) -**Same game, different approach** -- reimplements the Prisoner's Dilemma using the [gds-games](https://github.com/BlockScience/gds-core/tree/main/packages/gds-games) (OGS) typed DSL instead of hand-wiring GDS blocks. Demonstrates how the OGS DSL expresses the same game-theoretic structure more concisely. +**Same game, different approach** -- reimplements the Prisoner's Dilemma using the [gds-games](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-games) (OGS) typed DSL instead of hand-wiring GDS blocks. Demonstrates how the OGS DSL expresses the same game-theoretic structure more concisely. ```python decisions = alice_decision | bob_decision @@ -274,7 +274,7 @@ system = game_round.feedback([payoff -> decisions]) -**Domain:** Game theory -- see [gds-games](https://github.com/BlockScience/gds-core/tree/main/packages/gds-games) for the OGS DSL +**Domain:** Game theory -- see [gds-games](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-games) for the OGS DSL **Files:** [model.py](games/prisoners_dilemma_dsl/model.py) · [tests](games/prisoners_dilemma_dsl/test_prisoners_dilemma_dsl.py) · [views script](games/prisoners_dilemma_dsl/generate_views.py) @@ -303,7 +303,7 @@ claim >> risk >> premium >> payout >> reserve_update -**Domain:** Game theory / finance — see [gds-games](https://github.com/BlockScience/gds-core/tree/main/packages/gds-games) for the OGS DSL +**Domain:** Game theory / finance — see [gds-games](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-games) for the OGS DSL **Files:** [model.py](games/insurance/model.py) · [tests](games/insurance/test_model.py) · [views](games/insurance/VIEWS.md) @@ -311,7 +311,7 @@ claim >> risk >> premium >> payout >> reserve_update ### Crosswalk Problem -**Mechanism design** — the canonical GDS example from BlockScience. A pedestrian decides whether to cross a one-way street while traffic evolves as a discrete Markov chain. A governance body chooses crosswalk placement to minimize accident probability. +**Mechanism design** — the canonical GDS example from Dynamical Systems Group. A pedestrian decides whether to cross a one-way street while traffic evolves as a discrete Markov chain. A governance body chooses crosswalk placement to minimize accident probability. ``` X = traffic_state ∈ {-1, 0, +1} U = (luck, crossing_position) g = pedestrian_decision d = safety_check f = traffic_transition Θ = {crosswalk_location} @@ -331,13 +331,13 @@ observe >> decide >> check >> transition -**Domain:** Game theory / mechanism design — see [gds-games](https://github.com/BlockScience/gds-core/tree/main/packages/gds-games) for the OGS DSL +**Domain:** Game theory / mechanism design — see [gds-games](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-games) for the OGS DSL **Files:** [model.py](games/crosswalk/model.py) · [tests](games/crosswalk/test_model.py) · [views](games/crosswalk/VIEWS.md) · [README](games/crosswalk/README.md) ## Visualization Guide -A dedicated guide at [`guides/visualization/`](guides/visualization/) makes [`gds-viz`](https://github.com/BlockScience/gds-core/tree/main/packages/gds-viz) a first-class citizen with focused, runnable demos: +A dedicated guide at [`guides/visualization/`](guides/visualization/) makes [`gds-viz`](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-viz) a first-class citizen with focused, runnable demos: | Script | What It Demonstrates | |--------|---------------------| @@ -383,7 +383,7 @@ uv run --package gds-examples pytest packages/gds-examples/guides/verification/ ## Visualization Views -Each example includes a `generate_views.py` script that produces 6 complementary views via [`gds-viz`](https://github.com/BlockScience/gds-core/tree/main/packages/gds-viz): +Each example includes a `generate_views.py` script that produces 6 complementary views via [`gds-viz`](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-viz): | View | Input | What It Shows | |------|-------|--------------| @@ -537,14 +537,14 @@ Built with [Claude Code](https://claude.ai/code). All code is test-driven and hu ## Credits & Attribution -**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [BlockScience](https://block.science/) +**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup) **Theoretical foundation:** [Dr. Michael Zargham](https://github.com/mzargham) and [Dr. Jamsheed Shorish](https://github.com/jshorish) — [Generalized Dynamical Systems, Part I: Foundations](https://blog.block.science/generalized-dynamical-systems-part-i-foundations-2/) (2021). -**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/BlockScience/MSML) and [bdp-lib](https://github.com/BlockScience/bdp-lib). +**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/DynamicalSystemsGroup/MSML) and [bdp-lib](https://github.com/DynamicalSystemsGroup/bdp-lib). **Contributors:** -* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (BlockScience). -* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (BlockScience). +* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (Dynamical Systems Group). +* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (Dynamical Systems Group). **Lineage:** Part of the [cadCAD](https://github.com/cadCAD-org/cadCAD) ecosystem for Complex Adaptive Dynamics. diff --git a/packages/gds-examples/continuous/homicidal_chauffeur/notebook.py b/packages/gds-examples/continuous/homicidal_chauffeur/notebook.py index bc4d380..6907777 100644 --- a/packages/gds-examples/continuous/homicidal_chauffeur/notebook.py +++ b/packages/gds-examples/continuous/homicidal_chauffeur/notebook.py @@ -59,7 +59,7 @@ def title(mo): *An interactive notebook exploring Rufus Isaacs' foundational pursuit-evasion problem (1951) through the - [GDS](https://github.com/BlockScience/gds-core) ecosystem.* + [GDS](https://github.com/DynamicalSystemsGroup/gds-core) ecosystem.* Every equation is derived symbolically with SymPy, then integrated numerically through `gds-continuous` (wrapping `scipy.integrate.solve_ivp`). @@ -554,7 +554,7 @@ def references(mo): Modern Studies," *Advances in Dynamic Games*, ISDG Vol. 11 (2011) - [mzargham/hc-marimo](https://github.com/mzargham/hc-marimo) -- reference SymPy implementation - - [gds-core](https://github.com/BlockScience/gds-core) -- + - [gds-core](https://github.com/DynamicalSystemsGroup/gds-core) -- GDS ecosystem (`gds-continuous` for ODE integration) """ ) diff --git a/packages/gds-examples/games/crosswalk/README.md b/packages/gds-examples/games/crosswalk/README.md index 009da24..258fb22 100644 --- a/packages/gds-examples/games/crosswalk/README.md +++ b/packages/gds-examples/games/crosswalk/README.md @@ -1,12 +1,12 @@ # Crosswalk Problem -Discrete Markov state transitions with mechanism design — the canonical GDS example from BlockScience. +Discrete Markov state transitions with mechanism design — the canonical GDS example from Dynamical Systems Group. A pedestrian on one side of a one-way street wants to reach a destination on the other side. They decide whether to cross and where. Traffic evolves as a discrete Markov chain. A governance body chooses where to place the crosswalk to minimize accident probability — **mechanism design** in its simplest form. ## Source Material -This example is based on the Generalized Dynamical Systems lectures and papers by Michael Zargham and Jamsheed Shorish at BlockScience: +This example is based on the Generalized Dynamical Systems lectures and papers by Michael Zargham and Jamsheed Shorish at Dynamical Systems Group: - [GDS Lecture 1 — Foundations](https://www.youtube.com/watch?v=8t-FKDzrnmA) - [GDS Lecture 2 — Crosswalk Problem](https://www.youtube.com/watch?v=F3BsilIxgbY) @@ -29,7 +29,7 @@ f = traffic_transition — Markov state update ## Element Coverage -Every element from the BlockScience lectures is mapped to a GDS component: +Every element from the Dynamical Systems Group lectures is mapped to a GDS component: | Lecture Element | GDS Component | Code | |---|---|---| diff --git a/packages/gds-examples/games/crosswalk/model.py b/packages/gds-examples/games/crosswalk/model.py index 2b588e0..3cbd5d8 100644 --- a/packages/gds-examples/games/crosswalk/model.py +++ b/packages/gds-examples/games/crosswalk/model.py @@ -2,7 +2,8 @@ Demonstrates the 4-role GDS pipeline (BoundaryAction -> Policy -> ControlAction -> Mechanism) -applied to a stylized traffic safety problem from BlockScience (Zargham & Shorish). +applied to a stylized traffic safety problem from Dynamical Systems Group +(Zargham & Shorish). A pedestrian on one side of a one-way street wants to reach a destination on the other side. They decide whether to cross (s in {0,1}) and where (position p). diff --git a/packages/gds-examples/games/evolution_of_trust/model.py b/packages/gds-examples/games/evolution_of_trust/model.py index 9d642d9..3ddc593 100644 --- a/packages/gds-examples/games/evolution_of_trust/model.py +++ b/packages/gds-examples/games/evolution_of_trust/model.py @@ -18,7 +18,7 @@ References: - Nicky Case, "The Evolution of Trust" (2017): https://ncase.me/trust/ - - GitHub issue: https://github.com/BlockScience/gds-core/issues/77 + - GitHub issue: https://github.com/DynamicalSystemsGroup/gds-core/issues/77 """ import re diff --git a/packages/gds-examples/games/prisoners_dilemma_nash/model.py b/packages/gds-examples/games/prisoners_dilemma_nash/model.py index ab9432d..5323721 100644 --- a/packages/gds-examples/games/prisoners_dilemma_nash/model.py +++ b/packages/gds-examples/games/prisoners_dilemma_nash/model.py @@ -23,7 +23,7 @@ .feedback([payoff -> decisions]) References: - - GitHub issue: https://github.com/BlockScience/gds-core/issues/77 + - GitHub issue: https://github.com/DynamicalSystemsGroup/gds-core/issues/77 """ import re diff --git a/packages/gds-examples/notebooks/evolution_of_trust.py b/packages/gds-examples/notebooks/evolution_of_trust.py index 8da1c16..bb70bad 100644 --- a/packages/gds-examples/notebooks/evolution_of_trust.py +++ b/packages/gds-examples/notebooks/evolution_of_trust.py @@ -748,7 +748,7 @@ def the_lesson(mo): --- -*Built with [OGS](https://github.com/BlockScience/gds-core) +*Built with [OGS](https://github.com/DynamicalSystemsGroup/gds-core) and inspired by [The Evolution of Trust](https://ncase.me/trust/) by Nicky Case.* diff --git a/packages/gds-examples/pyproject.toml b/packages/gds-examples/pyproject.toml index 4972a73..31653a0 100644 --- a/packages/gds-examples/pyproject.toml +++ b/packages/gds-examples/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "generalized-dynamical-systems", @@ -36,9 +36,9 @@ dependencies = [ ] [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [tool.uv.sources] gds-framework = { workspace = true } diff --git a/packages/gds-framework/CITATION.cff b/packages/gds-framework/CITATION.cff index 4fc3fa1..bb85314 100644 --- a/packages/gds-framework/CITATION.cff +++ b/packages/gds-framework/CITATION.cff @@ -3,8 +3,8 @@ message: "If you use this software, please cite it as below." authors: - family-names: "Mehta" given-names: "Rohan" - email: "rohan@block.science" - affiliation: "BlockScience" + email: "rohan@dynamicalsystemsgroup.com" + affiliation: "Dynamical Systems Group" title: "gds-framework" version: 0.2.0 date-released: 2026-02-21 diff --git a/packages/gds-framework/README.md b/packages/gds-framework/README.md index 585ed87..3ef1f75 100644 --- a/packages/gds-framework/README.md +++ b/packages/gds-framework/README.md @@ -2,8 +2,8 @@ [![PyPI](https://img.shields.io/pypi/v/gds-framework)](https://pypi.org/project/gds-framework/) [![Python](https://img.shields.io/pypi/pyversions/gds-framework)](https://pypi.org/project/gds-framework/) -[![License](https://img.shields.io/github/license/BlockScience/gds-framework)](LICENSE) -[![CI](https://github.com/BlockScience/gds-framework/actions/workflows/ci.yml/badge.svg)](https://github.com/BlockScience/gds-framework/actions/workflows/ci.yml) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-framework)](LICENSE) +[![CI](https://github.com/DynamicalSystemsGroup/gds-framework/actions/workflows/ci.yml/badge.svg)](https://github.com/DynamicalSystemsGroup/gds-framework/actions/workflows/ci.yml) Typed compositional specifications for complex systems, grounded in [Generalized Dynamical Systems](https://doi.org/10.57938/e8d456ea-d975-4111-ac41-052ce73cb0cc) theory (Zargham & Shorish, 2022). @@ -154,7 +154,7 @@ A **thermostat control system** would use `BoundaryAction` for the temperature s ## Examples -Five tutorial examples in [`gds-examples`](https://github.com/BlockScience/gds-examples) demonstrate every framework feature. Each `model.py` reads like a tutorial chapter with inline GDS theory commentary. +Five tutorial examples in [`gds-examples`](https://github.com/DynamicalSystemsGroup/gds-examples) demonstrate every framework feature. Each `model.py` reads like a tutorial chapter with inline GDS theory commentary. | # | Example | What It Teaches | Composition | |:-:|---------|-----------------|-------------| @@ -166,7 +166,7 @@ Five tutorial examples in [`gds-examples`](https://github.com/BlockScience/gds-e Start with SIR Epidemic and work down — each introduces one new concept. -Each model generates **6 views** automatically via [`gds-viz`](https://github.com/BlockScience/gds-viz). Here are sample views for the SIR Epidemic: +Each model generates **6 views** automatically via [`gds-viz`](https://github.com/DynamicalSystemsGroup/gds-viz). Here are sample views for the SIR Epidemic:
Structural view — compiled block graph with role-based shapes and typed wiring labels @@ -315,7 +315,7 @@ flowchart LR
-The remaining 2 views (architecture by domain, traceability) are in each example's `VIEWS.md`. See [`gds-examples`](https://github.com/BlockScience/gds-examples) for the full guide. +The remaining 2 views (architecture by domain, traceability) are in each example's `VIEWS.md`. See [`gds-examples`](https://github.com/DynamicalSystemsGroup/gds-examples) for the full guide. ## What's Included @@ -350,7 +350,7 @@ Blocks with bidirectional typed interfaces, composed via four operators (`>>`, ` ## Intellectual Lineage - **GDS formalism** (Roxin 1960s; [Zargham & Shorish 2022](https://doi.org/10.57938/e8d456ea-d975-4111-ac41-052ce73cb0cc)) — state transitions composed over arbitrary data structures, with formal notions of reachability, controllability, and admissibility -- **MSML** (BlockScience) — block roles, parameter tracking, typed transmission channels +- **MSML** (Dynamical Systems Group) — block roles, parameter tracking, typed transmission channels - **BDP-lib** (Block Diagram Protocol) — abstract/concrete separation, structural validation - **Categorical cybernetics** (Ghani, Hedges et al.) — bidirectional composition with contravariant feedback @@ -358,7 +358,7 @@ See [`docs/gds_deepdive.md`](docs/gds_deepdive.md) for the full analysis. ## Status -**v0.2.0 — Alpha.** Both layers are implemented and tested (347 tests, 99% coverage). v0.2 adds parameter typing (Θ), canonical projection (h = f ∘ g derivation), tagged metadata, and 6 Mermaid visualization views via [`gds-viz`](https://github.com/BlockScience/gds-viz). The composition algebra and specification layer are stable. Domain packages and simulation execution are not yet built — `gds-framework` is the foundation they will build on. +**v0.2.0 — Alpha.** Both layers are implemented and tested (347 tests, 99% coverage). v0.2 adds parameter typing (Θ), canonical projection (h = f ∘ g derivation), tagged metadata, and 6 Mermaid visualization views via [`gds-viz`](https://github.com/DynamicalSystemsGroup/gds-viz). The composition algebra and specification layer are stable. Domain packages and simulation execution are not yet built — `gds-framework` is the foundation they will build on. ## License @@ -369,14 +369,14 @@ Built with [Claude Code](https://claude.ai/code). All code is test-driven and hu ## Credits & Attribution -**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [BlockScience](https://block.science/) +**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup) **Theoretical foundation:** [Dr. Michael Zargham](https://github.com/mzargham) and [Dr. Jamsheed Shorish](https://github.com/jshorish) — [Generalized Dynamical Systems, Part I: Foundations](https://blog.block.science/generalized-dynamical-systems-part-i-foundations-2/) (2021). -**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/BlockScience/MSML) and [bdp-lib](https://github.com/BlockScience/bdp-lib). +**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/DynamicalSystemsGroup/MSML) and [bdp-lib](https://github.com/DynamicalSystemsGroup/bdp-lib). **Contributors:** -* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (BlockScience). -* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (BlockScience). +* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (Dynamical Systems Group). +* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (Dynamical Systems Group). **Lineage:** Part of the [cadCAD](https://github.com/cadCAD-org/cadCAD) ecosystem for Complex Adaptive Dynamics. diff --git a/packages/gds-framework/gds/__init__.py b/packages/gds-framework/gds/__init__.py index b1cbf7f..5c28739 100644 --- a/packages/gds-framework/gds/__init__.py +++ b/packages/gds-framework/gds/__init__.py @@ -1,7 +1,7 @@ """Generalized Dynamical Systems — typed compositional specs. GDS synthesizes ideas from GDS theory (Roxin, Zargham & Shorish), -MSML (BlockScience), BDP-lib (Block Diagram Protocol), and categorical +MSML (Dynamical Systems Group), BDP-lib (Block Diagram Protocol), and categorical cybernetics (Ghani, Hedges et al.) into a single, dependency-light Python framework. """ diff --git a/packages/gds-framework/pyproject.toml b/packages/gds-framework/pyproject.toml index 829d2ef..30ecf22 100644 --- a/packages/gds-framework/pyproject.toml +++ b/packages/gds-framework/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "generalized-dynamical-systems", @@ -39,9 +39,9 @@ dependencies = [ ] [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-games/CITATION.cff b/packages/gds-games/CITATION.cff index 3579555..0e5d3bb 100644 --- a/packages/gds-games/CITATION.cff +++ b/packages/gds-games/CITATION.cff @@ -3,8 +3,8 @@ message: "If you use this software, please cite it as below." authors: - family-names: "Mehta" given-names: "Rohan" - email: "rohan@block.science" - affiliation: "BlockScience" + email: "rohan@dynamicalsystemsgroup.com" + affiliation: "Dynamical Systems Group" title: "gds-games" version: 0.1.0 date-released: 2026-02-21 diff --git a/packages/gds-games/README.md b/packages/gds-games/README.md index 80b808c..3b75b39 100644 --- a/packages/gds-games/README.md +++ b/packages/gds-games/README.md @@ -2,9 +2,9 @@ [![PyPI](https://img.shields.io/pypi/v/gds-games)](https://pypi.org/project/gds-games/) [![Python](https://img.shields.io/pypi/pyversions/gds-games)](https://pypi.org/project/gds-games/) -[![License](https://img.shields.io/github/license/BlockScience/gds-games)](LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-games)](LICENSE) -Typed DSL for compositional game theory, built on [gds-framework](https://github.com/BlockScience/gds-core/tree/main/packages/gds-framework). +Typed DSL for compositional game theory, built on [gds-framework](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-framework). ## Table of Contents @@ -412,13 +412,13 @@ ogs report output.json -o reports/ ## Examples -Three tutorial examples in [`gds-examples`](https://github.com/BlockScience/gds-core/tree/main/packages/gds-examples) demonstrate game-theoretic modeling using the GDS framework primitives: +Three tutorial examples in [`gds-examples`](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-examples) demonstrate game-theoretic modeling using the GDS framework primitives: | Example | Domain | What It Teaches | |---------|--------|-----------------| -| [Prisoner's Dilemma](https://github.com/BlockScience/gds-core/tree/main/packages/gds-examples/games/prisoners_dilemma) | Game theory | Nested parallel composition, multi-entity state, temporal loops | -| [Insurance Contract](https://github.com/BlockScience/gds-core/tree/main/packages/gds-examples/games/insurance) | Finance | Complete 4-role taxonomy (ControlAction), pure sequential pipeline | -| [Crosswalk Problem](https://github.com/BlockScience/gds-core/tree/main/packages/gds-examples/games/crosswalk) | Mechanism design | Discrete Markov transitions, governance parameters | +| [Prisoner's Dilemma](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-examples/games/prisoners_dilemma) | Game theory | Nested parallel composition, multi-entity state, temporal loops | +| [Insurance Contract](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-examples/games/insurance) | Finance | Complete 4-role taxonomy (ControlAction), pure sequential pipeline | +| [Crosswalk Problem](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-examples/games/crosswalk) | Mechanism design | Discrete Markov transitions, governance parameters | ## Status @@ -433,16 +433,16 @@ Built with [Claude Code](https://claude.ai/code). All code is test-driven and hu ## Credits & Attribution -**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [BlockScience](https://block.science/) +**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup) **Theoretical foundation:** [Dr. Michael Zargham](https://github.com/mzargham) and [Dr. Jamsheed Shorish](https://github.com/jshorish) — [Generalized Dynamical Systems, Part I: Foundations](https://blog.block.science/generalized-dynamical-systems-part-i-foundations-2/) (2021). **Game-theoretic foundation:** [Ghani, Hedges, Winschel, Zahn](https://arxiv.org/abs/1603.04641) — Compositional Game Theory (2018). Bidirectional composition with contravariant feedback channels. -**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/BlockScience/MSML) and [bdp-lib](https://github.com/BlockScience/bdp-lib). +**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/DynamicalSystemsGroup/MSML) and [bdp-lib](https://github.com/DynamicalSystemsGroup/bdp-lib). **Contributors:** -* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (BlockScience). -* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (BlockScience). +* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (Dynamical Systems Group). +* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (Dynamical Systems Group). **Lineage:** Part of the [cadCAD](https://github.com/cadCAD-org/cadCAD) ecosystem for Complex Adaptive Dynamics. diff --git a/packages/gds-games/pyproject.toml b/packages/gds-games/pyproject.toml index cdcc0e2..58e3ade 100644 --- a/packages/gds-games/pyproject.toml +++ b/packages/gds-games/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "open-games", @@ -39,9 +39,9 @@ dependencies = [ gds-domains = { workspace = true } [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-interchange/README.md b/packages/gds-interchange/README.md index 2b52ae8..11aaebe 100644 --- a/packages/gds-interchange/README.md +++ b/packages/gds-interchange/README.md @@ -1,6 +1,6 @@ # gds-interchange -Bidirectional format bridges for [gds-framework](https://github.com/BlockScience/gds-core) specifications. +Bidirectional format bridges for [gds-framework](https://github.com/DynamicalSystemsGroup/gds-core) specifications. ## Subpackages diff --git a/packages/gds-interchange/gds_interchange/__init__.py b/packages/gds-interchange/gds_interchange/__init__.py index 673900b..3596dd5 100644 --- a/packages/gds-interchange/gds_interchange/__init__.py +++ b/packages/gds-interchange/gds_interchange/__init__.py @@ -1,3 +1,3 @@ """gds-interchange — bidirectional format bridges for gds-framework specifications.""" -__version__ = "0.1.0" +__version__ = "0.2.0" diff --git a/packages/gds-interchange/gds_interchange/owl/_namespace.py b/packages/gds-interchange/gds_interchange/owl/_namespace.py index a8cf6c4..e802a91 100644 --- a/packages/gds-interchange/gds_interchange/owl/_namespace.py +++ b/packages/gds-interchange/gds_interchange/owl/_namespace.py @@ -3,12 +3,12 @@ from rdflib import Namespace # Base namespace -GDS = Namespace("https://gds.block.science/ontology/") +GDS = Namespace("https://gds.dynamicalsystemsgroup.com/ontology/") # Sub-namespaces -GDS_CORE = Namespace("https://gds.block.science/ontology/core/") -GDS_IR = Namespace("https://gds.block.science/ontology/ir/") -GDS_VERIF = Namespace("https://gds.block.science/ontology/verification/") +GDS_CORE = Namespace("https://gds.dynamicalsystemsgroup.com/ontology/core/") +GDS_IR = Namespace("https://gds.dynamicalsystemsgroup.com/ontology/ir/") +GDS_VERIF = Namespace("https://gds.dynamicalsystemsgroup.com/ontology/verification/") # Standard prefix bindings for Turtle output PREFIXES: dict[str, Namespace] = { @@ -19,4 +19,4 @@ } # Default base URI for instance data -DEFAULT_BASE_URI = "https://gds.block.science/instance/" +DEFAULT_BASE_URI = "https://gds.dynamicalsystemsgroup.com/instance/" diff --git a/packages/gds-interchange/gds_interchange/owl/shacl.py b/packages/gds-interchange/gds_interchange/owl/shacl.py index a3b34de..3a10690 100644 --- a/packages/gds-interchange/gds_interchange/owl/shacl.py +++ b/packages/gds-interchange/gds_interchange/owl/shacl.py @@ -15,7 +15,7 @@ from gds_interchange.owl._namespace import GDS_CORE, GDS_IR, GDS_VERIF, PREFIXES SH_NS = Namespace("http://www.w3.org/ns/shacl#") -GDS_SHAPE = Namespace("https://gds.block.science/shapes/") +GDS_SHAPE = Namespace("https://gds.dynamicalsystemsgroup.com/shapes/") def _bind(g: Graph) -> None: diff --git a/packages/gds-interchange/gds_interchange/owl/sparql.py b/packages/gds-interchange/gds_interchange/owl/sparql.py index 3d5743b..b25bce4 100644 --- a/packages/gds-interchange/gds_interchange/owl/sparql.py +++ b/packages/gds-interchange/gds_interchange/owl/sparql.py @@ -39,7 +39,7 @@ def _register(t: SPARQLTemplate) -> SPARQLTemplate: name="blocks_by_role", description="Group all blocks by their role (kind).", query="""\ -PREFIX gds-core: +PREFIX gds-core: SELECT ?block_name ?kind WHERE { @@ -56,7 +56,7 @@ def _register(t: SPARQLTemplate) -> SPARQLTemplate: name="dependency_path", description="All wired connections in a GDSSpec.", query="""\ -PREFIX gds-core: +PREFIX gds-core: SELECT ?wiring_name ?source ?target ?space ?optional WHERE { @@ -78,7 +78,7 @@ def _register(t: SPARQLTemplate) -> SPARQLTemplate: name="entity_update_map", description="Which mechanisms update which entity variables.", query="""\ -PREFIX gds-core: +PREFIX gds-core: SELECT ?block_name ?entity ?variable WHERE { @@ -98,7 +98,7 @@ def _register(t: SPARQLTemplate) -> SPARQLTemplate: name="param_impact", description="Which parameters are used by which blocks.", query="""\ -PREFIX gds-core: +PREFIX gds-core: SELECT ?param_name ?block_name ?kind WHERE { @@ -117,8 +117,8 @@ def _register(t: SPARQLTemplate) -> SPARQLTemplate: name="ir_block_list", description="List all BlockIR nodes in a SystemIR with their types.", query="""\ -PREFIX gds-core: -PREFIX gds-ir: +PREFIX gds-core: +PREFIX gds-ir: SELECT ?block_name ?block_type ?logic WHERE { @@ -137,7 +137,7 @@ def _register(t: SPARQLTemplate) -> SPARQLTemplate: name="ir_wiring_list", description="List all WiringIR edges in a SystemIR.", query="""\ -PREFIX gds-ir: +PREFIX gds-ir: SELECT ?source ?target ?label ?direction ?is_feedback ?is_temporal WHERE { @@ -159,7 +159,7 @@ def _register(t: SPARQLTemplate) -> SPARQLTemplate: name="verification_summary", description="Summary of verification findings by check ID and severity.", query="""\ -PREFIX gds-verif: +PREFIX gds-verif: SELECT ?check_id ?severity ?passed ?message WHERE { diff --git a/packages/gds-interchange/pyproject.toml b/packages/gds-interchange/pyproject.toml index a20f4ee..82bc1c3 100644 --- a/packages/gds-interchange/pyproject.toml +++ b/packages/gds-interchange/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "generalized-dynamical-systems", @@ -47,9 +47,9 @@ sysml = [ all = ["gds-interchange[shacl,sysml]"] [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-interchange/tests/test_export.py b/packages/gds-interchange/tests/test_export.py index 75dad09..92b5bc7 100644 --- a/packages/gds-interchange/tests/test_export.py +++ b/packages/gds-interchange/tests/test_export.py @@ -135,9 +135,9 @@ def test_wires_exported(self, thermostat_spec: GDSSpec) -> None: assert len(wires) == 2 # Sensor->Controller, Controller->Heater def test_custom_base_uri(self, thermostat_spec: GDSSpec) -> None: - g = spec_to_graph(thermostat_spec, base_uri="https://example.com/") - ttl = g.serialize(format="turtle") - assert "https://example.com/" in ttl + base_uri = "https://example.com/" + g = spec_to_graph(thermostat_spec, base_uri=base_uri) + assert any(str(s).startswith(base_uri) for s in g.subjects()) class TestSystemIRToGraph: @@ -247,7 +247,8 @@ def test_to_ntriples(self, thermostat_spec: GDSSpec) -> None: g = spec_to_graph(thermostat_spec) nt = to_ntriples(g) assert isinstance(nt, str) - assert "gds.block.science" in nt + gds_prefix = "https://gds.dynamicalsystemsgroup.com/" + assert any(str(s).startswith(gds_prefix) for s in g.subjects()) def test_spec_to_turtle_convenience(self, thermostat_spec: GDSSpec) -> None: ttl = spec_to_turtle(thermostat_spec) diff --git a/packages/gds-interchange/tests/test_namespace.py b/packages/gds-interchange/tests/test_namespace.py index 72ef580..332cf07 100644 --- a/packages/gds-interchange/tests/test_namespace.py +++ b/packages/gds-interchange/tests/test_namespace.py @@ -39,7 +39,10 @@ def test_prefixes_are_namespace_instances(self) -> None: def test_uriref_generation(self) -> None: block_uri = GDS_CORE["Block"] - assert str(block_uri) == "https://gds.block.science/ontology/core/Block" + assert ( + str(block_uri) + == "https://gds.dynamicalsystemsgroup.com/ontology/core/Block" + ) def test_default_base_uri(self) -> None: assert DEFAULT_BASE_URI.startswith("https://") diff --git a/packages/gds-owl/README.md b/packages/gds-owl/README.md index 645692c..b8d2421 100644 --- a/packages/gds-owl/README.md +++ b/packages/gds-owl/README.md @@ -1,6 +1,6 @@ # gds-owl -OWL/Turtle, SHACL, and SPARQL for [gds-framework](https://github.com/BlockScience/gds-core) specifications. +OWL/Turtle, SHACL, and SPARQL for [gds-framework](https://github.com/DynamicalSystemsGroup/gds-core) specifications. Exports GDS models (GDSSpec, SystemIR, CanonicalGDS, VerificationReport) to RDF/OWL and provides bidirectional round-trip with Pydantic models. diff --git a/packages/gds-owl/pyproject.toml b/packages/gds-owl/pyproject.toml index cde3782..bc6cebf 100644 --- a/packages/gds-owl/pyproject.toml +++ b/packages/gds-owl/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "generalized-dynamical-systems", @@ -40,9 +40,9 @@ shacl = [ ] [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-owl/tests/test_export.py b/packages/gds-owl/tests/test_export.py index 1abf253..6a75826 100644 --- a/packages/gds-owl/tests/test_export.py +++ b/packages/gds-owl/tests/test_export.py @@ -135,9 +135,9 @@ def test_wires_exported(self, thermostat_spec: GDSSpec) -> None: assert len(wires) == 2 # Sensor->Controller, Controller->Heater def test_custom_base_uri(self, thermostat_spec: GDSSpec) -> None: - g = spec_to_graph(thermostat_spec, base_uri="https://example.com/") - ttl = g.serialize(format="turtle") - assert "https://example.com/" in ttl + base_uri = "https://example.com/" + g = spec_to_graph(thermostat_spec, base_uri=base_uri) + assert any(str(s).startswith(base_uri) for s in g.subjects()) class TestSystemIRToGraph: @@ -247,7 +247,8 @@ def test_to_ntriples(self, thermostat_spec: GDSSpec) -> None: g = spec_to_graph(thermostat_spec) nt = to_ntriples(g) assert isinstance(nt, str) - assert "gds.block.science" in nt + gds_prefix = "https://gds.dynamicalsystemsgroup.com/" + assert any(str(s).startswith(gds_prefix) for s in g.subjects()) def test_spec_to_turtle_convenience(self, thermostat_spec: GDSSpec) -> None: ttl = spec_to_turtle(thermostat_spec) diff --git a/packages/gds-owl/tests/test_namespace.py b/packages/gds-owl/tests/test_namespace.py index 9b274de..1cfc6f4 100644 --- a/packages/gds-owl/tests/test_namespace.py +++ b/packages/gds-owl/tests/test_namespace.py @@ -39,7 +39,10 @@ def test_prefixes_are_namespace_instances(self) -> None: def test_uriref_generation(self) -> None: block_uri = GDS_CORE["Block"] - assert str(block_uri) == "https://gds.block.science/ontology/core/Block" + assert ( + str(block_uri) + == "https://gds.dynamicalsystemsgroup.com/ontology/core/Block" + ) def test_default_base_uri(self) -> None: assert DEFAULT_BASE_URI.startswith("https://") diff --git a/packages/gds-proof/pyproject.toml b/packages/gds-proof/pyproject.toml index 5f68ddc..f05cfde 100644 --- a/packages/gds-proof/pyproject.toml +++ b/packages/gds-proof/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "generalized-dynamical-systems", @@ -36,9 +36,9 @@ dependencies = [ ] [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-psuu/README.md b/packages/gds-psuu/README.md index 24205e7..c51d3b8 100644 --- a/packages/gds-psuu/README.md +++ b/packages/gds-psuu/README.md @@ -2,7 +2,7 @@ [![PyPI](https://img.shields.io/pypi/v/gds-psuu)](https://pypi.org/project/gds-psuu/) [![Python](https://img.shields.io/pypi/pyversions/gds-psuu)](https://pypi.org/project/gds-psuu/) -[![License](https://img.shields.io/github/license/BlockScience/gds-core)](https://github.com/BlockScience/gds-core/blob/main/LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-core)](https://github.com/DynamicalSystemsGroup/gds-core/blob/main/LICENSE) **Parameter space search under uncertainty** — explore, evaluate, and optimize simulation parameters with Monte Carlo awareness. @@ -162,8 +162,8 @@ Optimizer.suggest() --> Evaluator.evaluate(params) --> Optimizer.observe(sco ## Documentation -Full docs at [blockscience.github.io/gds-core](https://blockscience.github.io/gds-core/psuu/). +Full docs at [dynamicalsystemsgroup.github.io/gds-core](https://dynamicalsystemsgroup.github.io/gds-core/psuu/). ## License -Apache-2.0 — [BlockScience](https://block.science) +Apache-2.0 — [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup) diff --git a/packages/gds-psuu/pyproject.toml b/packages/gds-psuu/pyproject.toml index 7cf9b0d..6a3f699 100644 --- a/packages/gds-psuu/pyproject.toml +++ b/packages/gds-psuu/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "generalized-dynamical-systems", @@ -36,9 +36,9 @@ pandas = ["pandas>=2.0"] bayesian = ["optuna>=4.0"] [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-sim/pyproject.toml b/packages/gds-sim/pyproject.toml index b8a5509..7cfc65a 100644 --- a/packages/gds-sim/pyproject.toml +++ b/packages/gds-sim/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "generalized-dynamical-systems", @@ -33,9 +33,9 @@ dependencies = ["pydantic>=2.10"] pandas = ["pandas>=2.0"] [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-software/README.md b/packages/gds-software/README.md index a00483d..cc48ebb 100644 --- a/packages/gds-software/README.md +++ b/packages/gds-software/README.md @@ -2,4 +2,4 @@ Software architecture DSL over GDS semantics — DFDs, state machines, component diagrams, C4 models, ERDs, and dependency graphs with formal verification. -Part of the [GDS ecosystem](https://github.com/BlockScience/gds-core). +Part of the [GDS ecosystem](https://github.com/DynamicalSystemsGroup/gds-core). diff --git a/packages/gds-software/pyproject.toml b/packages/gds-software/pyproject.toml index 5936cfd..464e141 100644 --- a/packages/gds-software/pyproject.toml +++ b/packages/gds-software/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "software-architecture", @@ -41,9 +41,9 @@ dependencies = [ gds-domains = { workspace = true } [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-stockflow/README.md b/packages/gds-stockflow/README.md index 95b439d..0196fd2 100644 --- a/packages/gds-stockflow/README.md +++ b/packages/gds-stockflow/README.md @@ -2,7 +2,7 @@ [![PyPI](https://img.shields.io/pypi/v/gds-stockflow)](https://pypi.org/project/gds-stockflow/) [![Python](https://img.shields.io/pypi/pyversions/gds-stockflow)](https://pypi.org/project/gds-stockflow/) -[![License](https://img.shields.io/github/license/BlockScience/gds-stockflow)](LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-stockflow)](LICENSE) Declarative stock-flow DSL over GDS semantics — system dynamics with formal guarantees. @@ -57,7 +57,7 @@ print(f"{report.checks_passed}/{report.checks_total} checks passed") ## What is this? -`gds-stockflow` is a **domain DSL** that compiles stock-flow diagrams to [GDS](https://github.com/BlockScience/gds-core) specifications. You declare stocks, flows, auxiliaries, and converters as plain data models — the compiler handles the mapping to GDS role blocks, entities, composition trees, and wirings. +`gds-stockflow` is a **domain DSL** that compiles stock-flow diagrams to [GDS](https://github.com/DynamicalSystemsGroup/gds-core) specifications. You declare stocks, flows, auxiliaries, and converters as plain data models — the compiler handles the mapping to GDS role blocks, entities, composition trees, and wirings. ``` Your declaration What the compiler produces @@ -69,7 +69,7 @@ Converter("Fertility") → BoundaryAction (exogenous input U) StockFlowModel(...) → GDSSpec + SystemIR (full GDS specification) ``` -Once compiled, all downstream GDS tooling works immediately — canonical projection (`h = f ∘ g`), semantic checks, SpecQuery dependency analysis, JSON serialization, and [gds-viz](https://github.com/BlockScience/gds-core/tree/main/packages/gds-viz) diagram generation. +Once compiled, all downstream GDS tooling works immediately — canonical projection (`h = f ∘ g`), semantic checks, SpecQuery dependency analysis, JSON serialization, and [gds-viz](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-viz) diagram generation. ## Architecture @@ -204,12 +204,12 @@ report = verify(model, include_gds_checks=True) ## Examples -Two tutorial examples in [`gds-examples`](https://github.com/BlockScience/gds-core/tree/main/packages/gds-examples) demonstrate stock-flow modeling using the GDS framework primitives: +Two tutorial examples in [`gds-examples`](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-examples) demonstrate stock-flow modeling using the GDS framework primitives: | Example | Domain | What It Teaches | |---------|--------|-----------------| -| [SIR Epidemic](https://github.com/BlockScience/gds-core/tree/main/packages/gds-examples/stockflow/sir_epidemic) | Epidemiology | 3-compartment accumulation, sequential + parallel composition | -| [Lotka-Volterra](https://github.com/BlockScience/gds-core/tree/main/packages/gds-examples/stockflow/lotka_volterra) | Population dynamics | Temporal loops (`.loop()`), predator-prey rate equations | +| [SIR Epidemic](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-examples/stockflow/sir_epidemic) | Epidemiology | 3-compartment accumulation, sequential + parallel composition | +| [Lotka-Volterra](https://github.com/DynamicalSystemsGroup/gds-core/tree/main/packages/gds-examples/stockflow/lotka_volterra) | Population dynamics | Temporal loops (`.loop()`), predator-prey rate equations | ## Status @@ -224,14 +224,14 @@ Built with [Claude Code](https://claude.ai/code). All code is test-driven and hu ## Credits & Attribution -**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [BlockScience](https://block.science/) +**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup) **Theoretical foundation:** [Dr. Michael Zargham](https://github.com/mzargham) and [Dr. Jamsheed Shorish](https://github.com/jshorish) — [Generalized Dynamical Systems, Part I: Foundations](https://blog.block.science/generalized-dynamical-systems-part-i-foundations-2/) (2021). -**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/BlockScience/MSML) and [bdp-lib](https://github.com/BlockScience/bdp-lib). +**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/DynamicalSystemsGroup/MSML) and [bdp-lib](https://github.com/DynamicalSystemsGroup/bdp-lib). **Contributors:** -* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (BlockScience). -* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (BlockScience). +* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (Dynamical Systems Group). +* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (Dynamical Systems Group). **Lineage:** Part of the [cadCAD](https://github.com/cadCAD-org/cadCAD) ecosystem for Complex Adaptive Dynamics. diff --git a/packages/gds-stockflow/pyproject.toml b/packages/gds-stockflow/pyproject.toml index 638f031..0759376 100644 --- a/packages/gds-stockflow/pyproject.toml +++ b/packages/gds-stockflow/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "stock-flow", @@ -37,9 +37,9 @@ dependencies = [ gds-domains = { workspace = true } [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-symbolic/pyproject.toml b/packages/gds-symbolic/pyproject.toml index 4564360..c843d86 100644 --- a/packages/gds-symbolic/pyproject.toml +++ b/packages/gds-symbolic/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "generalized-dynamical-systems", @@ -32,9 +32,9 @@ dependencies = [ ] [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/packages/gds-viz/CITATION.cff b/packages/gds-viz/CITATION.cff index 6b11b4a..343bfd6 100644 --- a/packages/gds-viz/CITATION.cff +++ b/packages/gds-viz/CITATION.cff @@ -3,8 +3,8 @@ message: "If you use this software, please cite it as below." authors: - family-names: "Mehta" given-names: "Rohan" - email: "rohan@block.science" - affiliation: "BlockScience" + email: "rohan@dynamicalsystemsgroup.com" + affiliation: "Dynamical Systems Group" title: "gds-viz" version: 0.1.0 date-released: 2026-02-21 diff --git a/packages/gds-viz/README.md b/packages/gds-viz/README.md index fdad6d3..89fd8f1 100644 --- a/packages/gds-viz/README.md +++ b/packages/gds-viz/README.md @@ -2,9 +2,9 @@ [![PyPI](https://img.shields.io/pypi/v/gds-viz)](https://pypi.org/project/gds-viz/) [![Python](https://img.shields.io/pypi/pyversions/gds-viz)](https://pypi.org/project/gds-viz/) -[![License](https://img.shields.io/github/license/BlockScience/gds-viz)](LICENSE) +[![License](https://img.shields.io/github/license/DynamicalSystemsGroup/gds-viz)](LICENSE) -Mermaid diagram renderers for [gds-framework](https://github.com/BlockScience/gds-framework) specifications. +Mermaid diagram renderers for [gds-framework](https://github.com/DynamicalSystemsGroup/gds-framework) specifications. ```bash uv add gds-viz @@ -105,14 +105,14 @@ Built with [Claude Code](https://claude.ai/code). All code is test-driven and hu ## Credits & Attribution -**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [BlockScience](https://block.science/) +**Author:** [Rohan Mehta](https://github.com/rororowyourboat) — [Dynamical Systems Group](https://github.com/DynamicalSystemsGroup) **Theoretical foundation:** [Dr. Michael Zargham](https://github.com/mzargham) and [Dr. Jamsheed Shorish](https://github.com/jshorish) — [Generalized Dynamical Systems, Part I: Foundations](https://blog.block.science/generalized-dynamical-systems-part-i-foundations-2/) (2021). -**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/BlockScience/MSML) and [bdp-lib](https://github.com/BlockScience/bdp-lib). +**Architectural inspiration:** [Sean McOwen](https://github.com/SeanMcOwen) — [MSML](https://github.com/DynamicalSystemsGroup/MSML) and [bdp-lib](https://github.com/DynamicalSystemsGroup/bdp-lib). **Contributors:** -* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (BlockScience). -* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (BlockScience). +* [Michael Zargham](https://github.com/mzargham) — Project direction, GDS theory guidance, and technical review (Dynamical Systems Group). +* [Peter Hacker](https://github.com/phacker3) — Code auditing and review (Dynamical Systems Group). **Lineage:** Part of the [cadCAD](https://github.com/cadCAD-org/cadCAD) ecosystem for Complex Adaptive Dynamics. diff --git a/packages/gds-viz/pyproject.toml b/packages/gds-viz/pyproject.toml index 7b718d1..18b762e 100644 --- a/packages/gds-viz/pyproject.toml +++ b/packages/gds-viz/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "generalized-dynamical-systems", @@ -37,9 +37,9 @@ dependencies = [ phase = ["matplotlib>=3.8", "numpy>=1.26", "gds-continuous>=0.1.0"] [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"] diff --git a/pyproject.toml b/pyproject.toml index c7b87c3..d6447f4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" license = "Apache-2.0" requires-python = ">=3.12" authors = [ - { name = "Rohan Mehta", email = "rohan@block.science" }, + { name = "Rohan Mehta", email = "rohan@dynamicalsystemsgroup.com" }, ] keywords = [ "generalized-dynamical-systems", @@ -67,9 +67,9 @@ psuu = ["gds-analysis[psuu]>=0.1.0"] owl = ["gds-interchange>=0.1.0"] [project.urls] -Homepage = "https://github.com/BlockScience/gds-core" -Repository = "https://github.com/BlockScience/gds-core" -Documentation = "https://blockscience.github.io/gds-core" +Homepage = "https://github.com/DynamicalSystemsGroup/gds-core" +Repository = "https://github.com/DynamicalSystemsGroup/gds-core" +Documentation = "https://dynamicalsystemsgroup.github.io/gds-core" [build-system] requires = ["hatchling"]