Repository navigation
v1.4.7
Release Notes 1.4.7
Released: 2026-10-08
A performance and hardening release. The graph page's cold proof drops from roughly 25s to 12s on a 12K-entity graph by proving each node once and decoding SurrealDB responses in C, Next.js moves to 16.3.8 to clear a high-severity SSRF advisory, and the docs site finally renders a real social card when links are shared.
Highlights
Graph page cold proof roughly 2x faster
The cold proof on a real 12K-entity graph goes from about 25s to 12s with an identical proven set. The old path burned 87% of its time in Python CPU on the API's event loop: it ran the full entity availability proof three times over the same rows and decoded every response with the SurrealDB SDK's pure-Python CBOR decoder.
Nodes proved once, then reused by the edge proof
available_graph_view in graph_view_availability.py now proves its nodes first and passes them to available_graph_relationships through a new proven_endpoints argument. The edge proof compares each snapshot against those rows instead of re-proving endpoints, and decodes each snapshot row once regardless of how many edges share it. The semantics of the proof are unchanged: an edge whose endpoint moved after the node proof is still dropped, the final capture still drops anything that changed afterwards, and the #770 malformed-edge test still reaches the final capture's ValidationError branch.
C-backed CBOR decoding for SurrealDB responses
New sibyl_core/backends/surreal/fast_cbor.py routes the SDK's decode through cbor2's C build while keeping the SDK's own tag decoder, thawing frozen tag contents back to lists and dicts so values match byte for byte. Real frames and 20,000 fuzzed frames decode identically, 2.2x faster. Installation via install_fast_cbor() is explicit and idempotent, and is a no-op when a C build of cbor2 is not present, so the SDK keeps its own decoder.
Next.js 16.3.8 closes a high-severity SSRF
apps/web pinned Next.js 16.3.6, which is affected by GHSA-cjq9-62q9-8jv4, a server-side request forgery in image optimization present in 16.0.0 through 16.3.7. The pin moves to 16.3.8; CI's shipped-dependency audit, which failed on every change while the old pin stood, passes again.
Performance
available_graph_relationshipsacceptsproven_endpoints: Mapping[str, Entity] | Noneand raisesValueErrorwhen bothproven_endpointsand a read memo are supplied, since the two settle the same rows twice.- Endpoint comparison moved into a shared
endpoint_evidencehelper that excludesembedding(vectors are storage, not evidence) and memoizes evidence per endpoint across a snapshot. install_fast_cbor()is wired intoinstall_core_runtime_ports()inapps/api/src/sibyl/core_runtime_ports.py, so the API and worker both pick it up.- Compact datetime and duration tags skip the thaw path: the SDK only indexes their two numbers, and they dominate tag volume in a response.
Dependencies
cbor2>=6.1.5,<7added toapps/apidependencies (asibylddependency only) and to thesibyl-coredev group. The cap keeps the build below cbor2 7.nextmoved from16.3.6to16.3.8inapps/web/package.json. The lockfile moves onlynext, its@nextplatform packages, and packages keyed on it.
Documentation Site
- Added a 1200x630 social card at
docs/public/og-image.pngwith absoluteog:imageandtwitter:imageURLs, explicit width, height, type, and alt text. og:urlis now emitted per page throughtransformPageDataindocs/.vitepress/config.mts, since head tags cannot use VitePressbase.- Site title and description updated to the current positioning: cross-agent memory for AI coding tools rather than knowledge graph plus task workflow.
- Favicon switched to
docs/public/favicon.png; the previous SVG reference 404'd.
Testing
- New
packages/python/sibyl-core/tests/test_fast_cbor.pychecks that the C decoder returns exactly what the SDK's decoder does across record IDs, tables, decimals, durations, datetimes, UUIDs, ranges, and every geometry type, plus the raw tag forms the server sends. It also covers idempotent installation and the no-cbor2fallback. test_graph_view_availability.pygains coverage for the shared-endpoint path through a new_two_edgesfixture helper.
Upgrade Notes
- Version references bump to 1.4.7 across
VERSION,apps/api,apps/cli,charts/sibyl,charts/surrealdb,docker-compose.quickstart.yml, the Ansible role defaults and compose file, and the deployment docs. Pull the1.4.7images or setSIBYL_IMAGE_TAG=1.4.7. - Helm users:
charts/sibylandcharts/surrealdbare both at chart version 1.4.7;charts/surrealdbkeepsappVersion3.2.4. - Anyone calling
available_graph_relationshipsdirectly must not pass bothproven_endpointsandmemo; the combination now raisesValueError. - No action is required to get the faster decode path. If
cbor2is unavailable or installed as a pure-Python build, the SDK decoder is used and behavior is unchanged. - Self-hosted web deployments should rebuild to pick up Next.js 16.3.8.
Install
Local server
curl -fsSL https://raw.githubusercontent.com/hyperb1iss/sibyl/main/install.sh | sh -s -- --version 1.4.7Remote CLI
curl -fsSL https://raw.githubusercontent.com/hyperb1iss/sibyl/main/install.sh | sh -s -- --remote --version 1.4.7
sibyl init --remote https://sibyl.example.com
sibyl auth loginHomebrew
brew install hyperb1iss/tap/sibyl
sibyl upArch Linux (AUR)
paru -S sibyl
sibyl upHeadless server
curl -fsSL https://raw.githubusercontent.com/hyperb1iss/sibyl/main/install.sh | sh -s -- --version 1.4.7 --no-openKubernetes (Helm)
helm repo add sibyl https://raw.githubusercontent.com/hyperb1iss/sibyl/gh-pages
helm repo update sibyl
helm upgrade --install sibyl sibyl/sibyl --version 1.4.7Artifacts
This release includes Python wheels and sdists, the generated
Homebrew formula, the generated AUR PKGBUILD, Helm charts, Docker
SBOMs, aggregate dual-registry cosign receipts, and a SHA256 checksum
manifest.