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
0.1.5: the PyPI page catches up, and the downloads count joins the badges
A docs-and-demo release — no runtime code changed. The badge row gains
downloads/month; the version bump exists so pypi.org rerenders the README
that now opens on the graph and no longer calls the project unstable.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,10 @@ and "used to be true" — the two things a reader most needs kept apart.
7
7
8
8
Entries are newest-last within a release, matching the order they were written.
9
9
10
+
## 0.1.5
11
+
12
+
- a documentation and demo release; no runtime code changed between `0.1.4` and this wheel. The demo film was re-cut to open on the graph itself — frame one is the nine-node incident graph with its first node already running, then the question that built it, then the finished audited run — and the README now leads with it. The README and website stopped describing the project as early and unstable: the status line states the version and the testing discipline, and *Status and limits* became *Limits*, framed as edges that are documented and tested rather than confessed. A PyPI downloads badge joined the badge row. This release exists mostly so the PyPI project page, which renders the README frozen at publish time, catches up with all of it.
13
+
10
14
## 0.1.4
11
15
12
16
- a run **stopped for overspending reported spending nothing**. Tokens were attributed from `end` events, and a node the budget interrupts emits `error` instead — so `grapharc metrics` answered `tokens: 0` for a run whose own enforcement message named the figure that stopped it (`max_tokens reached (51/5)`). The audit trail lost precisely the number the stop was about, and per-node attribution dropped the most expensive node in the run. Every `error` event is now stamped with what its node spent, exactly as `end` is, and both `summarize` and the cost report count it; sub-events inside a node remain a breakdown of its total rather than an addition, so the disjointness that kept `ends + orphans` from double-counting is unchanged, and `RunCost.tokens == RunMetrics.tokens` still holds.
@@ -21,7 +22,7 @@ A planner *proposes* a subgraph, a deterministic checker *admits* it — or refu
21
22
-**The worst-case cost is known before a graph runs, and the exact per-node bill after — even when it fails.** Admission prices the worst case against what is *left* of the budget; at runtime each node's spend lands on its own trace event, error and cancellation included. `recorded_cost_usd` is never an estimate.
22
23
-**One append-only JSONL trace file is the whole truth.**`replay`, `diff`, `metrics`, `viz`, cost attribution, OTel export and the live browser view all read the same file — the dashboard cannot disagree with the audit trail, because they are the same record.
23
24
24
-
**Website:**[codegraphcontext.github.io/GraphARC](https://codegraphcontext.github.io/GraphARC/) · **Version:**`0.1.4` on [PyPI](https://pypi.org/project/grapharc/). Every claim on this page is enforced by a test you can run, and every release is gated by the full suite. The edges that remain are documented in [Limits](#limits); every defect ever closed is in [CHANGELOG.md](CHANGELOG.md).
25
+
**Website:**[codegraphcontext.github.io/GraphARC](https://codegraphcontext.github.io/GraphARC/) · **Version:**`0.1.5` on [PyPI](https://pypi.org/project/grapharc/). Every claim on this page is enforced by a test you can run, and every release is gated by the full suite. The edges that remain are documented in [Limits](#limits); every defect ever closed is in [CHANGELOG.md](CHANGELOG.md).
25
26
26
27

27
28
@@ -514,7 +515,7 @@ A stable system is not one that claims to have no edges — it is one whose edge
514
515
-**`.env` and `grapharc.toml` follow the same discovery rule: the working directory, and nowhere else.** Neither searches parent directories — a run must not be governed by a file you did not know about, and must not be *billed* to one either. **This is a behaviour change:** the credential loader used to walk up to `/`, so a `.env` in an ancestor directory (a `$HOME` one on a shared box, a client project one above a demo checkout) was picked up silently. If you relied on that, move the file into the directory you run from, `export` the variable, or pass `env_file=` to name it explicitly. A real environment variable still beats any file.
515
516
-**`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.
516
517
517
-
**Verified this pass:**`pytest` → 1,985 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 submodules in a clean virtualenv with `[all]`, and `0.1.4` on PyPI is that wheel. 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.
518
+
**Verified this pass:**`pytest` → 1,985 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 submodules in a clean virtualenv with `[all]`, and `0.1.5` on PyPI is that wheel. 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.
518
519
519
520
[ROADMAP.md](ROADMAP.md) tracks what is built and what is not, item by item.
Copy file name to clipboardExpand all lines: pyproject.toml
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
[project]
2
2
name = "grapharc"
3
-
version = "0.1.4"
3
+
version = "0.1.5"
4
4
description = "A graph engineering toolkit on LangGraph: typed state contracts, per-node write permissions, enforced budgets, and JSONL traces that double as replay points."
0 commit comments