Skip to content

Commit 2a01beb

Browse files
Merge pull request #139 from BlockScience/dev
feat: formal verification framework + StateMetric (bridge Step 3)
2 parents c9f38b7 + 7296937 commit 2a01beb

29 files changed

Lines changed: 2583 additions & 827 deletions

.github/workflows/ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ jobs:
3232
- uses: astral-sh/setup-uv@v7
3333
- run: uv sync --package ${{ matrix.package }}
3434
- name: Run tests
35+
env:
36+
HYPOTHESIS_PROFILE: ci
3537
run: |
3638
if [ "${{ matrix.package }}" = "gds-examples" ]; then
3739
uv run --package ${{ matrix.package }} pytest packages/gds-examples -v

docs/guides/dsl-roadmap.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ From the architecture document — these are non-negotiable:
9090

9191
## Open Research Directions
9292

93-
See [Research Boundaries and Open Questions](research-boundaries.md) for detailed analysis of:
93+
See [Research Boundaries and Open Questions](../research/research-boundaries.md) for detailed analysis of:
9494

9595
1. **MIMO semantics** — scalar ports vs vector-valued spaces
9696
2. **Timestep semantics** — what `.loop()` means across DSLs when execution is introduced

docs/guides/interoperability.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ Three layers of simulation logic, each consuming only `get_payoff()`:
179179
Each layer is independently testable. The simulation code knows nothing about OGS composition trees, PatternIR, or GDS blocks — it only knows payoff values.
180180

181181
!!! note "Thin runner, not a general simulator"
182-
This is **not** a GDS execution engine. It is a domain-specific simulation that uses the GDS specification as its source of truth for game rules. The strategies, match logic, and evolutionary dynamics are all hand-written Python specific to the iterated PD. A general `gds-sim` would require solving the much harder problem of executing arbitrary GDS specifications — see [Research Boundaries](research-boundaries.md#research-question-2-what-does-a-timestep-mean-across-dsls).
182+
This is **not** a GDS execution engine. It is a domain-specific simulation that uses the GDS specification as its source of truth for game rules. The strategies, match logic, and evolutionary dynamics are all hand-written Python specific to the iterated PD. A general `gds-sim` would require solving the much harder problem of executing arbitrary GDS specifications — see [Research Boundaries](../research/research-boundaries.md#research-question-2-what-does-a-timestep-mean-across-dsls).
183183

184184
---
185185

@@ -290,7 +290,7 @@ All paths relative to `packages/gds-examples/`.
290290

291291
## Connection to Research Boundaries
292292

293-
This work provides concrete evidence for two open questions in [Research Boundaries](research-boundaries.md):
293+
This work provides concrete evidence for two open questions in [Research Boundaries](../research/research-boundaries.md):
294294

295295
**RQ2 (Timestep semantics):** The tournament simulator implements a specific execution model — synchronous iterated play with optional noise — on top of a structural specification that encodes no execution semantics. This is exactly the pattern anticipated in RQ2: "Each DSL defines its own execution contract if/when it adds simulation."
296296

docs/guides/view-stratification.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ canonical, they must augment it with execution semantics from the domain
127127
layer. Canonical alone is insufficient for execution. This boundary must
128128
remain explicit to avoid the illusion that `h = f ∘ g` is a runnable program.
129129

130-
See [RQ2 (timestep semantics)](research-boundaries.md#research-question-2-what-does-a-timestep-mean-across-dsls)
131-
and [RQ4 (cross-lens analysis)](research-boundaries.md#research-question-4-cross-lens-analysis-when-equilibrium-and-reachability-disagree).
130+
See [RQ2 (timestep semantics)](../research/research-boundaries.md#research-question-2-what-does-a-timestep-mean-across-dsls)
131+
and [RQ4 (cross-lens analysis)](../research/research-boundaries.md#research-question-4-cross-lens-analysis-when-equilibrium-and-reachability-disagree).
132132

133133
### Semantic enrichment must remain opt-in
134134

docs/owl/guide/representability.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
The formal representability analysis classifies which GDS concepts can and cannot be represented in OWL/SHACL/SPARQL.
44

5-
See the full analysis: [formal-representability.md](https://github.com/BlockScience/gds-core/blob/dev/packages/gds-owl/docs/formal-representability.md)
5+
See the full analysis: [formal-representability.md](../../research/formal-representability.md)
66

77
## Key Results
88

docs/research/deep_research.md

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)