You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Re-derive every quoted claim now that four of the five seams are closed
The docs had drifted from overclaiming to underclaiming: they still said
`planner/` and `policy/` were imported by nothing, that no shipped code path
drove the governed loop, that cost on a trace was always an estimate, and that
the source was not on the public remote. All four had stopped being true.
Every number here was re-derived by running it, not by reading the commit log:
- tests 1,339 -> 1,381 passed, 10 deselected
- wheel imports "93 modules" -> all 94 submodules with [all]
- cli/ 1549 -> 1849, nine commands -> ten (plan)
- test_planner_loop.py 62 -> 63 tests (two are parametrized; `def test_` undercounts)
- six subsystem line counts in HANDOFF's tree listing
- unpushed 14 -> none; the documented `git clone && uv sync` path now works,
verified by cloning into a scratch dir and finding pyproject.toml
Retracted across README, ROADMAP, HANDOFF, ARCHITECTURE and VISION:
"imported by no other module", "nothing shipped drives this", "cost is an
estimate on the trace", "you cannot install this". ROADMAP §11.7 and §12.1/12.2/
12.4/12.5 marked done; §12 goes 0% -> ~80% and the overall count 65 -> 72 items.
Its next-five list is rewritten around what is actually left, headed by §12.3 —
the HTTP API still ships its own in-process session runtime beside the durable
one, which is now the last seam.
VISION keeps the prediction it got wrong rather than quietly fixing it: the
blind spot was that "works" and "reachable" are different properties, and only
the second is one a reader can see.
Also wraps three over-long lines in tests/ that ruff flagged.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+6-8Lines changed: 6 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
**A governed agent runtime built on [LangGraph](https://github.com/langchain-ai/langgraph).** A planner *proposes* a subgraph, a deterministic checker *admits* it, and only then does anything execute — so every transition was permitted, every loop was bounded, and afterwards you can prove what happened and why it stopped. Underneath that sits the discipline layer it grew out of: typed state contracts, per-node write permissions, enforced budgets, and JSONL traces that double as replay points.
4
4
5
-
Alpha (`0.1.0a0`). **Not installable yet** — see [Install](#install), which is honest about why.
5
+
Alpha (`0.1.0a0`). Installable from source; not on PyPI yet — see [Install](#install).
6
6
7
7
> *Graph engineering*: when one agent loop stops being enough, coordination becomes the engineering. Nodes do work (agent loops, model calls, deterministic functions, humans approving things), edges decide what runs next, and a typed shared state flows between them. GraphARC implements the discipline that makes such graphs production-grade rather than demos — the ideas emerging from the July 2026 loops-vs-graphs debate (Steinberger, Ng, et al.), the "Two Graphs, Two Jobs" split, and twenty years of pre-AI graph systems where every edge means something and every path can be explained.
8
8
@@ -58,9 +58,7 @@ Three of those need their edges stated, because the gap is where people get hurt
58
58
59
59
## Install
60
60
61
-
**This does not work yet, and pretending otherwise is the fastest way to lose a reader.** The public remote — `github.com/CodeGraphContext/GraphARC` — is at commit `feef03d` and contains `LICENSE`, `README.md` and `.gitignore`. There is no `pyproject.toml` and no `grapharc/` package there, so a fresh clone followed by `uv sync` fails with *"No pyproject.toml found in current directory or any parent directory."* Everything else on this page was verified by running it against a local tree that has not been pushed. That is [ROADMAP.md](ROADMAP.md) §11.7, and it is the top of the fix list.
62
-
63
-
Once the source is on the remote, this is the path — it is the one CI uses, so it is exercised, just not from a clone:
61
+
This works now. It did not for most of the project's life — the public remote held only `LICENSE`, `README.md` and `.gitignore`, so a clone had no `pyproject.toml` to sync and the instruction below was fiction. The source is pushed; a fresh clone was verified to contain `pyproject.toml` and the `grapharc/` package.
uv sync --all-extras --group dev # everything: openrouter, server, otel, mcp, api
70
68
```
71
69
72
-
Not on PyPI either. The wheel does build: `uv build` produces one that installs into a clean virtualenv, imports 86 of the package's 93 modules bare (`gateway.openrouter` and the whole `server` package need their extras; `[all]` imports all 93), and runs `grapharc run stage0`.
70
+
Not on PyPI yet. The wheel does build: `uv build` produces one that installs into a clean virtualenv, imports every one of the package's 94 submodules with `[all]`(`gateway.openrouter` and the whole `server` package need their extras, so a bare install imports fewer), and runs `grapharc run stage0`.
73
71
74
72
## Quickstart
75
73
@@ -365,8 +363,8 @@ Re-derived on 2026-07-28 by running each item, not by reading the commit log.
365
363
366
364
**Distribution**
367
365
368
-
-**You cannot install this.** The source is not on the public remote — see [Install](#install). Nothing else on this page matters until that is fixed.
369
-
-**Not on PyPI.** The wheel builds and works; nobody can fetch it.
366
+
-**Not on PyPI.** The wheel builds, installs and runs; `.github/workflows/release.yml`is tag-driven with Trusted Publishing and fails closed until a human does the browser-side setup (a GitHub environment named `pypi`, and a PyPI trusted publisher naming this repo and workflow).
367
+
-*Fixed:* the source **is** on the public remote now, so the documented `git clone && uv sync` path works. It was the ship-blocker for most of this project's life.
370
368
371
369
**Built and unreachable** — this used to be the honest headline, four subsystems deep. One seam is left.
372
370
@@ -384,7 +382,7 @@ Re-derived on 2026-07-28 by running each item, not by reading the commit log.
384
382
-**The Claude CLI backend is completion-only.** Tool calling and structured output need OpenRouter.
385
383
-**A session turn is synchronous**, and a runner claim is a claim rather than a lease — nothing reclaims a session whose runner died holding it.
386
384
387
-
**Verified this pass:**`pytest` → 1,328 passed, 10 deselected (the live ones); `ruff check .` clean; all eight `grapharc run` stages green; the wheel builds and imports all 93 modules 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.
385
+
**Verified this pass:**`pytest` → 1,381 passed, 10 deselected (the live ones); `ruff check .` clean; all eight `grapharc run` stages green and `grapharc plan` green; the wheel builds and imports all 94 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.
388
386
389
387
[ROADMAP.md](ROADMAP.md) tracks what is built and what is not, item by item. [ASSESSMENT.md](ASSESSMENT.md) is an outside review that argued much of this repo is a thin wrapper on LangGraph — it describes an earlier state of the tree and is kept unedited on purpose, because the parts it got right are worth more than the parts it has outlived.
0 commit comments