Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,52 @@ All notable changes to GraQle are documented in this file.

---

## 0.83.0 (2026-07-30) — [Enterprise: scheduler contract + free-tier reasoning cap]

> ### ⚠️ BREAKING CHANGE — free tier only
>
> **Graph reasoning on the FREE tier is now capped per calendar month.** Once the cap is reached,
> calls that previously succeeded raise **`ReasoningQuotaExceeded`**
> (`from graqle.licensing.reasoning_quota import ReasoningQuotaExceeded`). This affects
> `graph.reason()` / `areason()` and every CLI path built on them.
> **Paid tiers are unaffected and see no behaviour change.**
>
> **If you are on the free tier, before upgrading:** either handle the exception at your reasoning
> call sites, or move to a paid tier. To inspect usage without consuming quota,
> `ReasoningQuota(graqle_dir).peek()` returns a `QuotaReading(used, limit, month, allowed)`
> (`limit == -1` means unlimited). Unattended jobs are the exposed case — an uncaught
> `ReasoningQuotaExceeded` will fail the run rather than degrade quietly.

> The other half of this release is additive: it makes the CLI drivable by a scheduler rather than
> only by a human. That part is **opt-in** — bare `graq rebuild` is unchanged from 0.82.0.

### Enterprise (CR-010 Enterprise Enhancement Program)

- **Scheduler-grade pipeline contract (R6)** — `graq rebuild` and `graq govern serve --once` can now be
driven unattended by cron, Airflow or GitHub Actions. New `--headless`, `--json`, `--report-json` and
`--incremental` flags on `graq rebuild`, and `--json` / `--report-json` on `govern serve --once`.
Runs are idempotent, non-interactive and exit-coded: `0` success, `1` failure, `2` usage error,
`3` empty delta (nothing to rebuild). `--report-json` writes a frozen `RunReport` atomically, so a
scheduler never observes a half-written report. Incremental rebuilds skip unchanged content by hash.
- **Root defect fixed (opt-in)** — `graq rebuild` previously exited `0` even when the graph file was not
found, because Typer discards command return values. The corrected exit codes apply on the **machine
paths only** (`--headless` / `--json` / `--report-json`). Bare `graq rebuild` keeps its existing exit
behaviour and emits a stderr `DeprecationWarning`; whether it adopts the corrected codes is deferred
to a future release.

### Monetisation

- **⚠️ Reasoning-quota wall (ADR-245 Decision 8)** — the **free tier now has a monthly cap on graph
reasoning**. Existing free-tier users who exceed the cap will see `ReasoningQuotaExceeded` where calls
previously succeeded. Paid tiers are unaffected. The counter is per-month and self-pruning (13 months
retained).
- The quota meter is deliberately **not** relocatable from the environment. `GRAQLE_QUOTA_DIR` is honoured
only inside a real pytest process (detected via `sys.modules`, not a self-attested environment
variable), so it cannot be used as a paywall bypass. This follows the same rule that makes
`quota_exempt()` refuse `CI=true`: self-attested environment exemptions are not entitlement.

---

## 0.82.0 (2026-07-28) — [Enterprise: frozen proof spec + conformance suite]

> Publishes GraQle's tamper-evidence proof format as an independently versioned, third-party-implementable
Expand Down
2 changes: 1 addition & 1 deletion graqle/__version__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
# constraints: none
# ── /graqle:intelligence ──

__version__ = "0.82.0"
__version__ = "0.83.0"
6 changes: 4 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@ build-backend = "hatchling.build"
[project]
name = "graqle"
# V-ADR240-DELTA: native version bump (G4 config, CG-14 native-edit precedent).
# 0.79.0 = ADR-242-A1 CR-SEED-02: graqle.workflow.seed — seed a project graph
# 0.83.0 = CR-010 R6 scheduler contract (--headless/--json/--report-json,
# exit codes 0/1/2/3) + ADR-245 W3 reasoning-quota wall (free monthly cap on
# graph reasoning). 0.79.0 = ADR-242-A1 CR-SEED-02: graqle.workflow.seed — seed a project graph
# from goal + build profile + source chunks before any code exists, and the
# flat-scanner-shape serializer for raw-dict graph consumers; additive,
# backward-compatible, no IP concern. 0.78.0 = ADR-240 D1+D2: BackendRaceChain
# (first-to-finish/best-of-N) + CostAwareRouter (auto cost/latency selection) —
# dual-provider autonomy. 0.77.0 = ADR-239 Stage 2
# (CheckpointProtocol + run_tests). 0.76.0 = ADR-225 G1 multi-tenant memory.
version = "0.82.0"
version = "0.83.0"
description = "Give your AI tools architecture-aware reasoning. Build a knowledge graph from any codebase — dependency analysis, impact analysis, governed AI answers with confidence scores. Works with Claude Code, Cursor, VS Code Copilot. 14 LLM backends, fully offline capable."
readme = "README.md"
license = {text = "Apache-2.0"}
Expand Down
Loading