diff --git a/README.md b/README.md index 95d0ce3..f8095f4 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Build production-grade multi-agent systems with built-in safety, auditability, and control. GraphARC adds a governance layer on top of LangGraph: a planner *proposes* a subgraph, a deterministic checker *admits* it, and only then does anything execute. Every transition is permitted, every loop is bounded, and afterwards you can prove what happened and why it stopped. -**Status:** Early days (`0.1.1`) — the API is not stable yet. `pip install grapharc` — see [Install](#install). +**Status:** Early days (`0.1.2`) — the API is not stable yet. `pip install grapharc` — see [Install](#install). ### What makes GraphARC different @@ -507,7 +507,7 @@ Re-derived on 2026-07-28 by running each item, not by reading the commit log. - **`.env` is found by walking up parent directories; `grapharc.toml` is not.** The config layer refuses an upward search on purpose — a run must not be governed by a file you did not know about. The credential loader predates that decision and still searches upward, so the thing that *spends money* is discovered more eagerly than the thing that *constrains* it. - **`grapharc run` has no budget unless you give it one.** Set any of `--max-tokens`, `--max-iterations`, `--max-seconds`, or `--max-concurrency`; without them each dimension is unlimited and the gate admits a topology of any worst-case cost. -**Verified this pass:** `pytest` → 1,533 passed, 12 deselected (the live ones); `ruff check .` clean; all eight `grapharc demo` stages green, plus `grapharc plan` and `grapharc run`; the wheel builds and imports all 103 submodules in a clean virtualenv with `[all]`. The test count is a snapshot, not a property of the project — `pytest` re-derives it in one command, which is the only reason it is quoted. +**Verified this pass:** `pytest` → 1,754 passed, 12 deselected (the live ones); `ruff check .` clean; all eight `grapharc demo` stages green, plus the `trace` / `metrics` / `viz` / `replay` tour against a freshly recorded demo trace; the wheel builds and imports all 116 submodules in a clean virtualenv with `[all]`. The test count is a snapshot, not a property of the project — `pytest` re-derives it in one command, which is the only reason it is quoted. [ROADMAP.md](ROADMAP.md) tracks what is built and what is not, item by item. diff --git a/docs/cookbook/01-basics.md b/docs/cookbook/01-basics.md index e6368c7..b5f5dac 100644 --- a/docs/cookbook/01-basics.md +++ b/docs/cookbook/01-basics.md @@ -14,7 +14,7 @@ projection instead and says which fields it dropped. `tests/test_cookbook_basics.py` reproduces every recipe here and asserts these exact strings, so the page cannot rot quietly. -Verified against `grapharc 0.1.0`, Python 3.14.6, `langgraph 1.2.9`, +Verified against `grapharc 0.1.2`, Python 3.14.6, `langgraph 1.2.9`, `langchain-core 1.5.1`, `pydantic 2.13.4`. Each snippet is a complete file. Save it and run it; nothing carries over between @@ -41,7 +41,7 @@ uv run grapharc --version Output: ``` -grapharc 0.1.0 +grapharc 0.1.2 ``` Everything below uses only the base install — no API key, no network, no optional diff --git a/docs/cookbook/06-serving-and-ops.md b/docs/cookbook/06-serving-and-ops.md index 67c8bfc..af25140 100644 --- a/docs/cookbook/06-serving-and-ops.md +++ b/docs/cookbook/06-serving-and-ops.md @@ -1062,7 +1062,7 @@ with TestClient(app) as client: ``` ``` -health : {'status': 'ok', 'version': '0.1.1', 'graphs': ['qa']} +health : {'status': 'ok', 'version': '0.1.2', 'graphs': ['qa']} created: 201 queued status : succeeded answer : Budgets cap iterations, tokens and time. @@ -1259,7 +1259,7 @@ graphs : qa ctrl-c to stop $ curl -s localhost:8124/healthz -{"status":"ok","version":"0.1.1","graphs":["qa"]} +{"status":"ok","version":"0.1.2","graphs":["qa"]} $ curl -s -X POST localhost:8124/sessions -H 'content-type: application/json' \ -d '{"graph":"qa","input":{"question":"how do budgets work?"}}' diff --git a/grapharc/__init__.py b/grapharc/__init__.py index a8bf3f4..11631e8 100644 --- a/grapharc/__init__.py +++ b/grapharc/__init__.py @@ -9,7 +9,7 @@ from grapharc.runtime.graph import GraphARC, WritePermissionError from grapharc.runtime.state import GraphARCState -__version__ = "0.1.1" +__version__ = "0.1.2" __all__ = [ "GraphARC", diff --git a/pyproject.toml b/pyproject.toml index 7a4061c..8fe6f6b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "grapharc" -version = "0.1.1" +version = "0.1.2" description = "A graph engineering toolkit on LangGraph: typed state contracts, per-node write permissions, enforced budgets, and JSONL traces that double as replay points." readme = "README.md" license = "MIT" diff --git a/tests/test_cookbook_basics.py b/tests/test_cookbook_basics.py index c0c3be7..6c0885a 100644 --- a/tests/test_cookbook_basics.py +++ b/tests/test_cookbook_basics.py @@ -55,7 +55,7 @@ def test_version_matches_the_page(): - assert __version__ == "0.1.1" + assert __version__ == "0.1.2" # -- "How do I build and run my first graph?" ------------------------------ diff --git a/uv.lock b/uv.lock index c916e01..d287251 100644 --- a/uv.lock +++ b/uv.lock @@ -350,7 +350,7 @@ wheels = [ [[package]] name = "grapharc" -version = "0.1.1" +version = "0.1.2" source = { editable = "." } dependencies = [ { name = "langchain-core" },