Skip to content
Closed
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
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,13 @@
- **What:** two providers registered on the existing posture registry, with an explicit grade per check. FAIL is reserved for filesystem facts, where the question "is it honored?" does not arise: a credential written literally into MCP config, invisible Unicode (tag characters, zero-width and bidi controls) in an agent rules file, a trusted folder of "/" or the home directory, and an approval-bypass switch in a shell profile. Everything documented-only warns and can never fail, including declared sandbox settings on both runtimes and Copilot's standing write grants, and an inherited default now counts as unmeasured rather than safe. Cursor's auto-run level has no readable on-disk key, so it ships as a zero-weight informational row saying exactly that, because inventing a key would be worse than admitting the gap and an unmeasured thing must not move the grade. Also parses JSONC, since Copilot ships a config file with comments that a strict JSON parse rejects, which would silently leave every downstream check reading an empty config.
- **Verified:** run against real configuration on a live machine: Cursor B/80 (an empty hooks object, no deny rules, no sandbox declaration) and Copilot B/80 (an unscoped standing write grant, sandbox off), with zero false failures on either. A test asserts directly that a bare install of either runtime produces zero failures, and further tests cover each FAIL-grade fact against planted evidence. The grading rule is recorded as ADR-004 on the Local Observability Service blueprint, alongside both providers' check sets, so it binds whoever writes the next provider.

- **Release: Goose is free for real. `pip install clawmetry` now observes a Goose install with no account, no licence key and no wheel download. Carries #5000 to PyPI and the fleet, and with it every runtime merged since 0.12.750.**
- **Why this needed its own release:** #5000 merged on 2026-08-21 at 09:39, about six hours after 0.12.750 was published, and `release-on-merge` only fires for PRs titled `[RELEASE]`. So the change sat on `main` unpublished — and "Goose is free" is a promise made to the outside world, on Goose's own issue tracker, that is false until a wheel carries it. Verified against the published artefact rather than the branch: 0.12.750 ships 22 runtimes, `FREE_RUNTIMES = {openclaw, nemoclaw}`, and no `clawmetry/adapters/goose.py` at all.
- **What a Goose user gets after this release:** `goose` in `FREE_RUNTIMES`, and the adapter itself bundled in the open-source package (`clawmetry/adapters/goose.py` + `clawmetry/adapters/cost.py`). Sessions, transcripts, tool calls and real token totals from `~/.local/share/goose/sessions/sessions.db`, read-only, with cost derived where the provider records it and honestly absent where it does not (local Ollama).
- **The rule it ships with:** an open-source runtime gets a free, open-source adapter; a commercial vendor product (Claude Code, Codex, GitHub Copilot, Cursor, Antigravity, Grok) stays paid. Pinned in both directions by `tests/test_oss_paid_runtime_packaging.py`, so a paid adapter can never reach the public wheel and a runtime can never be advertised free while its only reader sits behind the licence gate.
- **Also carried**, all merged since the last publish and unreleased until now: Gemini CLI as the 24th runtime (#5051), Cline as the 25th (#5054), OpenHands as the 26th (#5057), NemoClaw model-router per-endpoint pool health (#5048), the 21-runtime screenshot gallery (#5017), the entitlement bundle-batch endpoints (#4963), a register/heartbeat plan-agreement assertion (#5058), and two i18n README syncs (#4950, #5052).
- **Note for the runtime count:** the catalogue moved 22 → 26 while this sat unreleased, so this release is also the first wheel to carry four of those six runtimes.

- **Release: a paid plan can no longer be hidden behind the expired trial key left on disk at connect. Carries #5065 to PyPI and the fleet.**
- **Who this reaches:** anyone who connected a machine, then bought a cloud plan. That is every cloud customer, because connecting is what issues the seven day trial in the first place.
- **What was wrong:** connecting writes a seven day trial key to `~/.clawmetry/license.key` so that signing in alone unlocks every runtime. Buying a cloud plan writes the plan somewhere else, and the resolver read the key first and kept reading it after it had expired. Seven days after connect, an install with a paid plan on it reported itself unpaid, and the trial paywall is on by default.
Expand Down
Loading