From 4935b46dfa20da2b216a1ee48536ac9b64657ac5 Mon Sep 17 00:00:00 2001 From: quantamixsol Date: Sun, 26 Jul 2026 22:40:30 +0200 Subject: [PATCH] =?UTF-8?q?Release=200.81.0=20=E2=80=94=20Enterprise:=20se?= =?UTF-8?q?crets=20providers=20(R5)=20+=20gateway=20backend=20(R4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Version bump for the CR-010 Enterprise Enhancement Program's first two P0 requirements, both already merged to master and additive/backward-compatible: - R5 secrets provider abstraction (graqle/config/secrets.py) — env|file| keychain|command, $SECRETS_PATH mounted files, SecretStr masking, fail-closed, behind GRAQLE_USE_SECRETS_RESOLVER (default off). - R4 enterprise-gateway LLM backend (GatewayBackend) — org/RPC headers (Authorization reserved), sidecar base_url, client-side model_allowlist, 401->refresh-once via the R5 command provider. Bumps: pyproject.toml + graqle/__version__.py 0.80.0 -> 0.81.0; CHANGELOG entry. Release coordination: 0.81.0 = R4+R5 (CR-010 lane); the monetisation session takes 0.82.0 next (owner decision 2026-07-26). No competing bump. Governance: version bump merged BEFORE tag (private-first); v0.81.0 tag pushed only after this + its public cherry-pick are merged; CI publishes to PyPI via Trusted Publishing on the tag. TS-1..TS-4 screen: 0 hits. Co-Authored-By: Claude Opus 4.8 --- CHANGELOG.md | 25 +++++++++++++++++++++++++ graqle/__version__.py | 2 +- pyproject.toml | 2 +- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f87996a..a9525a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,31 @@ All notable changes to GraQle are documented in this file. --- +## 0.81.0 (2026-07-26) — [Enterprise: secrets providers + gateway backend] + +> First two P0 requirements of the Enterprise Enhancement Program (CR-010). Both are additive and +> backward-compatible — existing configs and credential handling are unchanged. + +### Enterprise (CR-010 Enterprise Enhancement Program) + +- **Secrets provider abstraction (R5)** — new `secrets:` config resolution supporting + `env | file | keychain | command` providers via `graqle.config.secrets.resolve_secret`. The `file` + provider natively reads `$SECRETS_PATH/`-style mounted secret stores, so moving from a developer + laptop (keychain) to a hosted environment (mounted file) is a one-line config change. Resolved values + are wrapped in `SecretStr` (never logged, printed, or embedded in errors); resolution is fail-closed + (a present-but-empty mounted secret file raises rather than silently returning empty). Behind + `GRAQLE_USE_SECRETS_RESOLVER` (default off) — no change to existing environment-variable behaviour. +- **Enterprise-gateway LLM backend (R4)** — new `GatewayBackend` for any corporate OpenAI-compatible + gateway: an `organization` header, custom RPC `extra_headers` (the `Authorization` header is reserved + and cannot be overridden by config), a localhost sidecar `base_url`, a client-side `model_allowlist` + (disallowed models are refused before any network call), and an `on_auth_error` hook that on a 401 + refreshes the token once via the R5 `command` provider and retries exactly once. `CustomBackend` gains + extracted `_build_headers()` / `_build_payload()` (behaviour unchanged for existing callers). New + `graqle.backends.providers.create_gateway_backend()` factory for the + `backend: {type: openai-compatible, ...}` config stanza. + +--- + ## 0.80.0 (2026-07-18) — [Plugin bundles + node-limit visibility (warn-only)] > Distribution: repo-scoped plugin bundles for Claude Code diff --git a/graqle/__version__.py b/graqle/__version__.py index 5663a42..17c1d6a 100644 --- a/graqle/__version__.py +++ b/graqle/__version__.py @@ -5,4 +5,4 @@ # constraints: none # ── /graqle:intelligence ── -__version__ = "0.80.0" +__version__ = "0.81.0" diff --git a/pyproject.toml b/pyproject.toml index 44e8fad..3419b1f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ name = "graqle" # (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.80.0" +version = "0.81.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"}