Skip to content

Releases: quantamixsol/graqle

v0.56.0 — EU AI Act Wave 1 [CR-009]

15 May 08:52
9fb77dc

Choose a tag to compare

First developer reasoning SDK with EU AI Act–aligned compliance surface.

Seven articles documented (4, 12, 13, 14, 15, 25, 50) + explicit out-of-scope (5, 53, 55, 16–22, Annex VII).

New CLI surfaces

graq compliance status [--include-robustness --format json]
graq compliance export --since YYYY-MM-DD -o evidence.jsonl --sha256-sidecar

New runtime

  • GRAQLE_EU_AI_ACT_MODE=on arms Article 50(1) banner + machine-readable ai_disclosure envelope field.
  • GRAQLE_AI_DISCLOSURE=off suppresses banner only (machine field still emits for M2M pipelines).

Positioning discipline (enforced in code)

  • GraQle is NOT itself a high-risk AI system (no Annex III).
  • GraQle is NOT a GPAI provider under Article 51 (third-party LLMs).
  • We provide signals + audit primitives. We never say compliant or certified. TestNonClaimsInvariants blocks any release that introduces those strings.

Compatibility

  • Zero behaviour change when GRAQLE_EU_AI_ACT_MODE is off (default).
  • Additive contract: existing consumers see bit-for-bit unchanged envelopes.
  • No breaking changes from v0.55.0.

Tests

  • 218 new compliance-specific tests across 6 files.
  • 5,500+ total tests passing on Python 3.10 / 3.11 / 3.12.

Documentation

Provenance

Public rollup of CR-009 private PRs #102/#103/#104/#105/#106. Public PR #140. Private rollup PR #107.

Install

pip install graqle==0.56.0

Full changelog · EU AI Act docs

v0.55.0 — Reasoning Honesty + Cross-Project Reliability

14 May 22:18
96f7bb9

Choose a tag to compare

GraQle v0.55.0 — Reasoning Honesty + Cross-Project Reliability

Five CRs roll up into one release. Graph-health surfacing on every reasoning envelope (CR-004), the cross-project WRITE_COLLISION phantom-error fix that affected every Neo4j-backed graq_learn call (CR-008), the unified config resolver promoted to default-ON with 13 internal call sites migrated (CR-002), defensive guards against silent edge-loss regressions (CR-003), and a TOCTOU-safe stdout_path parameter on graq_bash that closes the long-standing cmd > file.log silent-failure ergonomics class (CR-005a). All shipped under the new BAU CR process.

Install

pip install --upgrade "graqle==0.55.0"

Breaking change

GRAQLE_USE_RESOLVER default flipped from OFF to ON (CR-002 PR-002c-2b). The resolver is now the canonical config-loading path; submodule-aware ancestor walk for graqle.yaml works automatically.

Soft revert: set GRAQLE_USE_RESOLVER=0 (or false / no, case-insensitive) to opt OUT and fall through to the legacy GraqleConfig.from_yaml() path. The resolver-compat helper has a try/except resolver→legacy fallback, so this flip is safe even in environments with a misconfigured resolver — worst case is silent fall-through to the prior behaviour.

Highlights

🩺 Reasoning Honesty — CR-004

Every graq_reason / graq_predict / graq_safety_check envelope now carries an explicit graph_health snapshot:

{
  "answer": "...",
  "confidence": 0.92,
  "graph_health": {
    "node_count": 1234, "edge_count": 8901,
    "chunks_unembedded": 0, "percent_stale": 0.0,
    "activation_mode": "semantic",
    "degraded": false, "reason": null,
    "schema_version": "1"
  }
}

When the graph is degraded, the CLI prints a yellow ⚠ degraded reasoning: … banner before the answer. Probe is contractually never-raises (3-deep defence), adds < 5 ms p95 to envelope build (CI fail-gate). Configurable thresholds: graph_health.stale_chunks_threshold (500), graph_health.edge_node_ratio_threshold (0.5), graph_health.zero_edges_is_degraded (true).

🛠️ Cross-Project WRITE_COLLISION Fix — CR-008

Every graq_learn call on a Neo4j-backed session was returning phantom WRITE_COLLISION even though no write was ever attempted. Replaced ambiguous tuple[bool, int] return with SaveGraphResult + SaveStatus enum (OK / NO_GRAPH_FILE / SHRINK_REFUSED / COLLISION / SAVE_FAILED). NO_GRAPH_FILE folds into recorded=True because the in-memory + backend write already happened. Every project using bolt://... in graqle.yaml benefits — no client migration needed.

🔧 Unified Config Resolver — CR-002

load_via_resolver_or_legacy helper introduced; 13 internal --config typer call sites migrated. GraqleConfig.from_yaml deprecation-warning block delegates to is_resolver_enabled() so both entry points stay in lock-step.

🛡️ Defensive Edge-Loss Guards — CR-003

Hardened guards against the silent edge-loss regression that affected installs between v0.46 and v0.53. Graqle.to_json refuses to shrink edge count by > 10% on graphs with > 100 baseline edges. Neo4j schema parity restored. New scripts/bisect_edge_loss.py utility.

📝 graq_bash stdout_path — CR-005a

graq_bash("cmd > file.log") used to produce empty files because the subprocess shell is sandboxed. New optional stdout_path parameter writes the FULL untruncated stdout to disk atomically. TOCTOU-safe validation (canonicalise → relative_to project_root → defence-in-depth dotdot check). Parent dirs auto-created. Failure isolation — file I/O OSError never masks the subprocess result.

Test count

5,500+ tests across Python 3.10 / 3.11 / 3.12. ~100 new tests this release.

Rollback

Every CR is independently revertable:

CR Soft revert (no code change)
CR-002 GRAQLE_USE_RESOLVER=0
CR-003 GRAQLE_ALLOW_EDGE_SHRINK=1
CR-004 graph_health.zero_edges_is_degraded: false
CR-005a Omit stdout_path from graq_bash calls
CR-008 Additive — back-compat shim accepts legacy (bool, int) tuples

What's next

  • EU AI Act Wave 1 kicks off immediately following this release — reasoning-honesty foundations from CR-004 will plug directly into Article 13 transparency obligations and Article 12 audit trail requirements.
  • Full release notes: CHANGELOG.md § 0.55.0

🤖 Built on the new BAU Change Request process.

v0.54.0 — Defensive Edge Guard + Config Resolver [bau-edge-guard-resolver]

12 May 12:39
7fb9a40

Choose a tag to compare

0.54.0 (2026-05-12) - [bau-edge-guard-resolver]

Defensive guards stop silent edge-loss + a unified config resolver lands behind a feature flag. First release under the new BAU (Business As Usual) Change Request process. Two surgical, additive changes from third-party sister-team feedback (BHG epic, 2026-05-09): a to_json guard that refuses to silently drop edges (the v0.46→v0.53 regression mode), and the foundation module for unifying 14+ scattered graqle.yaml resolution sites.

Added

  • EdgeShrinkError, GraphSchemaError, GraphFileTooLargeError in graqle/core/exceptions.py. Inherit from GraqleError. EdgeShrinkError carries old_edges, new_edges, threshold, and allow_flag attributes; division-by-zero-safe message formatting.

  • Symmetric links validation in _validate_graph_data (graqle/core/graph.py). Previously the validator checked nodes existence/type but ignored links entirely — the structural asymmetry that allowed the v0.46→v0.53 silent edge-loss regression to ship undetected. Now links (or its edges alias) must be a list, validated symmetrically with nodes. Refuses {"nodes": [N>0], "links": []} unless explicit metadata: {single_node: true} marker.

  • Edge-shrink guard on the Graqle.to_json write path. When the existing on-disk graph has more than 100 edges AND the new graph would drop edges by more than 10%, EdgeShrinkError is raised with a clear remediation message. The 100-edge floor avoids spurious raises on small graphs and legitimate sparse-graph workflows.

  • GRAQLE_ALLOW_EDGE_SHRINK environment variable as the audit-logged override. Strict allow-list: only 1, true, yes (case-insensitive). Invalid values log a warning and are treated as not-allowed. The override path emits a single logger.warning audit line (EDGE_SHRINK_ALLOWED file=<basename> old=<N> new=<N> user_hash=<sha256[:8]> pid=<N>) for SOC2 § 6.3 change tracking. OWASP A09:2021-safe: no raw USER/USERNAME in logs, no full filesystem path — only basename(path) and a SHA-256-truncated user hash.

  • graqle/config/resolver.py — new unified config resolver module behind the GRAQLE_USE_RESOLVER feature flag (default False — inert until callers migrate in a follow-up release). Provides:

    • resolve_config(start, max_depth=10) — ancestor walk for graqle.yaml with submodule fallback (when nested .graqle/ directory has no yaml, falls through to a parent's yaml and records both project_root and parent_root).
    • resolve_neo4j(cfg, **explicit) — explicit auditable priority chain: explicit > env > yaml > default with a source field on the returned Neo4jParams recording which layer won.
    • resolve_project_root(start, max_depth=10) — first ancestor with graqle.yaml or .graqle/.
    • is_resolver_enabled() — reads the feature flag.
    • ALLOWED_URI_SCHEMES = {bolt, neo4j, https, file} — positive allow-list (not deny-list) closing the case/encoding/Unicode-bypass class.
    • SecretStr — constant-time __eq__ via hmac.compare_digest, repr/str never reveal contents, __slots__ blocks accidental attribute assignment.
    • Frozen dataclasses ResolvedConfig + Neo4jParams.
  • graqle/config/exceptions.py — new file. 6 subclasses of GraqleConfigError: ConfigNotFoundError, ConfigPathError, ConfigYamlError, ConfigPermissionError, ConfigLockError, ConfigSchemeError.

  • _assert_not_uri_path in the resolver — detects both scheme://... and the scheme:opaque-data form (javascript:alert(1), data:text/html;base64,...) which urlparse correctly recognises as having a scheme even without //. Includes a Windows-drive-letter guard so C:\\Users\\... is not mis-parsed as a URI.

  • Ancestor walk safetymax_depth=10 bound, symlink-cycle detection via a seen: set[Path] of resolved paths, halt at Path.home() boundary, all paths canonicalised via Path.resolve(strict=False) before any disk access.

  • Round-trip property test suite (tests/test_core/test_persistence_round_trip.py) — 8 tests, parametrized across 5 graph fixture sizes (5, 50, 100, 500, 1000 nodes) verifying Graqle.from_json(p).to_json(p2) preserves node count, edge count, and entity-type distribution exactly.

  • Edge-shrink boundary tests (tests/test_core/test_validate_graph_data_edge_shrink.py) — 27 tests covering: symmetric validation, threshold boundary (exactly 10% loss = allowed, 10.1% = blocked), small-graph grace period, env-var allow-list (case-insensitive, whitespace-stripped, invalid-value warning), division-by-zero defence, OWASP A09 audit-log PII regression test (raw USER/USERNAME and full path must NOT appear in audit lines).

  • Resolver test suite (tests/test_config/test_resolver.py) — 71 tests across 14 classes covering SecretStr (masking, constant-time eq, __slots__), ResolvedConfig validation, Neo4jParams masking, URI safety (allow-list + bypass class with javascript:/data:/vbscript:/mailto:/ftp: without slashes), resolve_project_root ancestor walk, resolve_config including submodule fallback, resolve_neo4j full priority chain, feature-flag toggling, home-redaction helper, end-to-end integration.

Fixed

  • Silent edge-loss regression introduced between v0.46 and v0.53. Symptom (BHG epic 2026-05-09, feedback #10): a graqle.json with 22,516 nodes and 0 edges. Root cause is being bisected separately (PR-003b); this release adds the defensive guard that makes the failure mode loud rather than silent. A graph that legitimately needs to drop edges by more than 10% (e.g. graq scan --full on a dramatically-trimmed source tree) now requires GRAQLE_ALLOW_EDGE_SHRINK=1 and audit-logs the override.

Changed

  • Graqle.to_json write path now refuses silent edge loss. This is a behaviour change but only for the failure-mode CR-003 fixes. Existing healthy callers (where edge counts are stable or growing) see no behavioural difference.

Notes — BAU process

This is the first release shipped under the BAU (Business As Usual) Change Request process launched 2026-05-09. Every non-trivial change is now documented as a CR with explicit scope, evidence, PR strategy, test strategy, rollback procedure, and acceptance criteria. The full CR set for this release:

  • CR-001-bau-charter — the BAU process charter itself
  • CR-002-unified-config-resolution — the resolver work (PR-002a here; PR-002b follow-up migrates the 14 call sites)
  • CR-003-kg-persistence-schema-parity — the persistence guards (PR-003a here; PR-003b bisect, PR-003c root-cause fix, PR-003d schema parity in neo4j-import are follow-ups)
  • CR-004-reasoning-honesty — graph-health surfacing (next release)
  • CR-005-tool-ergonomicsgraq_bash improvements (next release)

Migration notes

If graq scan --full or graq grow returns EdgeShrinkError, run with GRAQLE_ALLOW_EDGE_SHRINK=1 once to record an audit line and proceed. If you see this on a graph you believed was healthy, run graq audit --fail-on-zero-edges to confirm whether you've been silently hit by the v0.46→v0.53 regression.


graqle v0.53.1 — Codex MCP Installer

04 May 06:35
6553660

Choose a tag to compare

graqle v0.53.1 — Codex MCP Installer

One command installs GraQle into Codex. Plus a full Neo4j import pipeline and a fix for the invisible permission dialog stalling VS Code sessions.

Install / Upgrade

pip install "graqle==0.53.1"

New: Codex One-Command Setup

graq mcp install codex
graq mcp doctor codex

graq mcp install codex auto-detects Codex CLI, resolves absolute graqle.yaml path (relative paths silently fail in global MCP entries), and runs codex mcp add graqle -- graq mcp serve --config <abs_path>. Supports --mode read-only for safe parallel Claude + Codex sessions. Env vars preserved with JSON-safe serialization.

graq mcp doctor codex runs an 8-point health checklist: Codex on PATH → version → graqle listed → graq binary → yaml exists → env JSON valid → server importable → serve responds.

New: MCP Management Commands

Command What it does
graq mcp tools [--json] Lists all 80+ MCP tools; queries live server or falls back to static registry
graq mcp sessions Running MCP server PIDs + versions
graq mcp locks KG write locks currently held

New: Neo4j Full Import

graq neo4j-import               # full KG → Neo4j with embeddings
graq neo4j-import --dry-run     # preview without writing

Bulk-transfers the KG in configurable batches: nodes with 1024-dim embeddings, edges, uniqueness constraint, cosine vector index. Validates counts and runs a live vector search after import.

Required env vars: NEO4J_URI, NEO4J_USERNAME, NEO4J_PASSWORD, NEO4J_DATABASE.

Fixed: VS Code Permission Dialog

The governance gate template now ships with permissions.allow pre-populated for all graq_* / kogni_* MCP tools. Previously Claude Code would silently wait for a permission dialog that never rendered in the VS Code extension, causing sessions to appear stuck.

Existing gate installations: run graq gate-install --force once to apply.


Full changelog: https://github.com/quantamixsol/graqle/blob/master/CHANGELOG.md

v0.52.0a3 - HOTFIX: restore missing graq_route schema (CG-19)

21 Apr 18:45
439ae6c

Choose a tag to compare

graqle 0.52.0a3 — HOTFIX for 0.52.0a2

--pre pre-release. Normal pip install graqle continues to install 0.51.6 stable. To pull this alpha: pip install --pre graqle==0.52.0a3.

What's fixed

0.52.0a2 shipped CG-19 half-implemented. The _handle_route handler contained the new validation + filter logic, but the graq_route tool schema in TOOL_DEFINITIONS was never updated — so MCP clients could not invoke the new available_tools / permission_tier parameters. This hotfix restores the schema so CG-19 is fully usable.

Changes

  1. Restored the CG-19 schema additions on graq_route:
    • available_tools — array of string (optional, advisory-only)
    • permission_tier — enum ADVISORY / ENFORCED (optional)
  2. Added 4 schema-shape regression tests in test_cg19_routing_gate.py that assert TOOL_DEFINITIONS["graq_route"]["inputSchema"]["properties"] has the new params with correct types — would have caught the original bug
  3. Version bump 0.52.0a20.52.0a3
  4. Build fix: re-removed the duplicate claude_gate force-include in pyproject.toml (private branch had still had it; causes PyPI wheel-dupe 400 otherwise)

Verification

  • Fresh pip install --pre graqle==0.52.0a3 in clean venv
  • TOOL_DEFINITIONS["graq_route"]["inputSchema"]["properties"] now = ['available_tools', 'permission_tier', 'question']
  • permission_tier.enum = ['ADVISORY', 'ENFORCED']
  • 21/21 scoped regression tests pass (17 original CG-19 + 4 new schema-shape)
  • Wheel build: 446 entries / 446 unique / 0 duplicates

Supersedes

graqle 0.52.0a2 is superseded by this release. Users on --pre should upgrade to 0.52.0a3 to use the CG-19 graq_route capability filter.

Root cause (captured as cross-session lesson)

graq_edit(strategy=literal) returned success: true on the original schema edit but silently did not persist to disk. Handler-only tests passed because they bypassed the schema entirely. Going-forward rule: every graq_edit is disk-verified before the next step; every MCP feature ships two tests (handler-behavior + schema-shape).

🤖 Generated with Claude Code

v0.52.0a1 - Wave 1 alpha (Pre-Reason Activation, Fast-Path, Release Gate, Memory/Bash/Read/Git gates, VSCE Check, Worktree GRAQ.md, Init CLI)

21 Apr 00:21
6d79a06

Choose a tag to compare

graqle 0.52.0a1 — Wave 1 alpha

First alpha pre-release for the v0.52.0 series. Invisible to default pip install graqle — this release requires --pre:

pip install --pre graqle==0.52.0a1

Users on the stable channel stay on 0.51.6.

What's new

Pre-reason activation layer

SemanticChunk scoring + safety gate + predictive subgraph activation runs before the LLM planner on every chat turn. ADVISORY tier emits an upgrade chip; ENFORCED tier hard-blocks low-safety turns. Flag pre_reason_activation_enabled defaults ON with a CI regression guard; env override GRAQLE_PRE_REASON_ACTIVATION=0 forces OFF.

Impact-radius fast-path

Chat intents classified as zero-impact file creates bypass the full reason/generate/review pipeline and dispatch directly through graq_write, dropping round-trip time from ~75 s to ~0.3 s. Flag fast_path_enabled defaults ON.

graq_release_gate MCP tool + CLI + GitHub Action

Composes review + reason into a single {CLEAR, WARN, BLOCK} verdict on diffs or target versions. Ships as a reusable GitHub Action in action/release-gate/.

graq_memory MCP tool

Governed read / write / update-index for memory-path files. Closes the native-Write bypass vector into ~/.claude/projects/*/memory/.

Bash gate (CG-09), Read gate (CG-10 global-scope), Git gate (CG-11)

Native Bash / Read / git calls are now routed through governed graq_* equivalents instead of bypassing the gate chain.

graq_vsce_check MCP tool

Queries the VS Code Marketplace API to prevent duplicate-tag CI failures before git push v*.

Worktree GRAQ.md inheritance

GraqMdLoader now walks the main-repo chain when invoked from a git worktree (detects .git as a file with a gitdir: pointer). Fail-closed on malformed inputs. Worktree-local GRAQ.md still wins by most-specific-rule precedence.

graq init CLI + auto-scaffold

Detects project type (Python, TS, JS, Rust, Go) and writes a project-local GRAQ.md policy file. Auto-fires from graq scan repo . when missing.

Wave-1 BLOCKER hardening

7 post-implementation review fixes spanning mcp_dev_server import fixes, tool-inventory version, engine threshold lookup, target normalization, activation contract, fast-path containment.

Alpha validation harness

tests/test_alpha_validation/ — 13 binary gates, one per Wave 1 feature. Each gate is independently verifiable using the public API only.

Release discipline

  • PEP 740 trusted-publisher OIDC (no PYPI_API_TOKEN secret)
  • Sigstore-signed wheel + sdist, CycloneDX SBOM, attached below
  • skip-existing: true on upload keeps the tag idempotent

Verification

  • Installed from PyPI in a fresh venv: graqle.__version__0.52.0a1
  • All Wave 1 import paths work: graqle.activation, graqle.release_gate, graqle.chat.fast_path
  • Fresh-venv Wave 1 scoped pytest: 319 passed, 4 skipped, 0 failures (12.12 s)
  • CI full test matrix on Python 3.10 / 3.11 / 3.12 + Ubuntu/Windows smoke: all green
  • MCP Registry auto-refresh: success

🤖 Generated with Claude Code

v0.51.6 - Neo4j first-class + chat MCP registration + KG-write self-race fix

16 Apr 19:02
0920aa3

Choose a tag to compare

v0.51.6 — Neo4j first-class + chat MCP registration + KG-write self-race fix

Grep-tag: unblocks-vscode-pivot

Correctness

  • Graqle.from_neo4j is read-only by default. Pre-v0.51.6 silently mirrored the loaded graph to cwd/graqle.json on every call — under some parity-testing setups this wrote over the live graph file. New default: mirror_to=None. Explicit opt-in with mirror_to=<path> + new mirror_overwrite=False guard raises FileExistsError rather than clobbering. Latent bug fixed: graph.save() (non-existent) → graph.to_json().
  • WRITE_COLLISION self-race eliminated. v0.51.5 retry envelope blamed "another MCP client" even on single-client sessions — the server was racing itself. Fix: module-level threading.RLock per absolute graph path acquired before the OS file lock; re-entrant so graq_predict → auto_grow → graq_learn chains no longer deadlock. Retry backoff jittered to random uniform [50, 250] ms. Error message rewritten to name the actual caller.
  • Neo4j migrator handles arbitrary node/edge properties (JSON-encodes nested values) and routes chunks to :Chunk nodes via [:HAS_CHUNK] edges instead of crashing.

New capabilities

  • graq_chat_turn / graq_chat_poll / graq_chat_resume / graq_chat_cancel MCP tools registered. Handlers shipped in graqle/chat/mcp_handlers.py since v0.51.4 but were dormant due to missing MCP registration. Unblocks VS Code extension v0.4.9 pivot. +4 kogni_chat_* aliases.
  • graq_kg_diag MCP tool. Returns recent KG-write latencies, attempts, caller stacks, and current lock holders. CG-01 exempt so it works before session_start. Read-only, no I/O.
  • ChatConfig dataclass in GraqleConfig. Optional chat: block in graqle.yaml. Backward-compat.

Build / docs

  • MCP tool inventory at build time. scripts/generate_mcp_inventory.py emits graqle/docs/mcp-tool-inventory-v0.51.6.md, shipped in the wheel. --check flag for CI drift gate.
  • Tool count 138 → 148 (+8 chat, +2 diag).

Testing

  • 693/693 passing on the scoped regression matrix (test_core + test_connectors + test_config + test_kg_writes + test_plugins + tests/integration). 30+ new tests added: self-race regression (100-call no-collision gate), read-only from_neo4j contract, ChatConfig defaults + YAML, migrator property-sanitization, backend parity harness.

Install

pip install graqle==0.51.6

Signed wheel + sdist + SBOM attached. Verify with graq trustctl verify or standard Sigstore tooling.

Hotfix included

  • hotfix(v0.51.6): TestMigrateJsonToNeo4j class now gated on neo4j driver availability so CI matrix entries without the graqle[api] extra skip cleanly instead of failing with ModuleNotFoundError.

v0.51.0 - governance hardening + systematic sanitization + 6 CLI commands

12 Apr 09:56
1c1f364

Choose a tag to compare

Complete SDK closure for VS Code extension team. See CHANGELOG.md for full details. Install: pip install --upgrade graqle

v0.50.1 - scrub-and-gate hotfix

12 Apr 00:55
ba38328

Choose a tag to compare

v0.50.1 — scrub-and-gate hotfix

Hotfix release closing every CRITICAL + HIGH finding from the v0.50.0 public-disclosure audit, plus the 3.11-CI jsonschema regression and PyPI packaging regression surfaced during the public merge.

Install

pip install --upgrade graqle

Fixes

Area Description
Governance module Sanitize graqle/core/governance.py pattern references. Internal helper renames (_check_ts_leakage_check_pattern_leakage, etc.) with backward-compat aliases so existing tests still import cleanly. 120/120 governance tests pass.
Chat floor template Scrub the ChatAgentLoop v4 built-in floor template and the TCG seed of internal-IP disclosures and internal tracker IDs. Structural invariants preserved (67 tools / 20 intents / 8 workflows / 20 lessons / 171 edges). Add a repo-root /GRAQ.md walk-up extension for SDK-local developer rules (not shipped in the wheel).
Star import Fix from graqle import * raising AttributeError. __all__ previously listed "GraQle" (mixed case) while the real class is Graqle.
Windows gate installer graq gate-install now probes for a working Python 3 interpreter (sys.executable → python3 → python → py -3), skips the Windows Store Python stub, and substitutes the resolved interpreter into the generated settings.json. New --fix-interpreter flag rewrites only the hook command on existing installs.
Gate install self-test After installing, the installer runs the hook with a synthetic Bash payload and requires exit 2 + "GATE BLOCKED" on stderr. Broken installs now fail loudly with a remediation hint instead of silently succeeding.
Gate hook fail-closed The shipped governance gate hook now fails closed on unknown write-class tools via a regex heuristic `^(Write
graq init auto-gate graq init now auto-installs the Claude Code governance gate when Claude Code is detected (.claude/ in project or home directory). Opt out with --no-gate or GRAQLE_SKIP_GATE_INSTALL=1.
Distribution lint New tests/test_distribution/test_no_internal_strings.py regression guard with a hard assertion on the four v0.50.1-sanitized files and a package-wide advisory baseline for the remaining pre-existing internal references, scheduled for systematic sanitization in v0.51.0.

Verification

  • CI green on ba383280 across Python 3.10 / 3.11 / 3.12, pip-audit, and smoke-test matrix
  • Post-publish dogfood smoke from a clean pip install graqle==0.50.1 venv: 12/12 checks green
  • from graqle import * → works
  • graq gate-install /tmp --force → installs + self-test exit=2 GATE BLOCKED
  • Installed hook on unknown DeleteDatabase → exit 2 (fail-closed)

See CHANGELOG.md for full details.

Published via OIDC Trusted Publishing on tag push.

v0.40.2 — Research Backlog + CI Fixes

01 Apr 13:53
2cf4224

Choose a tag to compare

v0.40.2

Complete research backlog (R2–R11) + CI fixes.

What's New (since v0.39.1)

  • R2 Cross-KG Bridge Edges
  • R3 MCP Protocol Domain
  • R5 Cross-Language MCP Linker
  • R6 Learned Intent Classification (2 patent claims)
  • R9 Federated Activation (2 patent claims)
  • R10 Embedding Space Alignment (2 patent claims)
  • R11 Confidence Calibration — 200-question benchmark (2 patent claims)

Fixes in v0.40.2

  • AGREEMENT_THRESHOLD: added missing import os, fixed default 0.0→1.0
  • TS-2: redacted proprietary values from test files
  • IP gate: workflow triggers on master + main branches
  • Repo: removed non-core content (marketing, docs, social-media)

Install

```bash
pip install graqle==0.40.2
```