Changelog

What each release changed.

Each release gets us closer to one general thing: a graph any domain can plug into, answering the same way whatever it holds. "Closer to a universal version of generality," as James puts it. Releases are tagged vX.Y.Z on GitHub and published as glia-py on PyPI the same day. Consumers pin the exact version; a release may change graph contents, and each change is declared in that release's handoff note. The on-disk .gmap format has been at version 3 since 0.5.1.

0.5.4in progress

Scale, distribution, a second domain

"More problems, more issues, more ideas. Can't stop, won't stop." In plain terms: 0.5.4 is about getting glia into more hands and more places. A binary anyone can install without a Rust toolchain, the agent skills in one place, embeddings beside the lexical answers, the first domain that is not code, and the audit that grades precision on real repositories instead of fixtures.

The bar it is judged against is James's: "Maybe by 0.5.7 we might catch up to my own expectations of a new era dev tool." And the thing he keeps coming back to, from the ranking experiments: "I can almost feel the shape of something like a person is missing, but I see the shadow of an idea." The graph maps the territory; nothing yet models the person walking it, from the task they had to what they touched and what came of it. Co-change is the fossil record of that walk. That is the work after 0.5.4.

A zero-install glia-cli package so uvx runs the binary without a Rust toolchain, on Linux, macOS and Windows. The repo-graph skills move into glia as the one Claude Code surface. Build-target graphs as the first non-code domain, incremental resolution for glia watch, local embeddings, and the edge-precision audit that grades real repos rather than fixtures.

0.5.32026-10-24

Ranking

Every ranked answer (blast-radius, diff-impact, review, pack) orders its files by co-change first when a history snapshot exists, then by Personalised PageRank over a kept index, so a long-lived holder builds the index once. Blast-radius answers gain a files table.

Intent: commit messages join the history snapshot (redacted, trailers dropped), BM25 over them, an id vocabulary for tickets and PR ids, and review --title and find --files route a free-text task to the files it is about.

Per-repo calibration: glia history calibrate replays the repo's own history leak-free and records which ranking wins for which seed shape; answers report selection with its source. A rank gate over six pinned public repos guards every ranked path against regression.

  • No registry id, no format change; the history snapshot moves to version 2 and a calibration record is added.
  • A calibrated answer is bound to the build that calibrated it, so every repo recalibrates after an upgrade.
0.5.22026-10-18

Rules, watch, identity, contract models

A Datalog evaluator and a GQL front end over the built graph (glia query); glia check evaluates declared rules, transitive forbids and the reflexion model through it. glia watch keeps one repo's build open and rebuilds only the language groups a change touched, byte-identical to a clean build.

Cross-repo identity: ten rules join packages, manifests, messages, contract ops, SCIP symbols and vendored copies into SAME_AS classes; seven answers collapse a class to one row and walk it as one node.

Contract models, from two real full-stack repos: TypeScript, Go, Dart and GraphQL models carry their fields; typed HTTP call sites and Go handlers record what they read and write; a models pass pairs client and server across the exchange, and contracts --fields, contract-breaks and review report the drift. NATS subjects, WebSockets inside HTTP routes, EVM contract clients (ethers, viem, wagmi, web3.js, go-ethereum) and GraphQL root fields pair too.

Dead-symbol precision: every remaining row on the two repos was audited by hand (103 false, 73 truly dead) and each false mechanism fixed; the rows left are exactly the audited set.

  • One registry id allocated: edge category 37, SAME_AS. The 0.5.1 Package and MessageSchema resolvers are replaced by identity classes.
  • The coverage matrix closes every blind and partial cell: 346 full over 419 graded fixtures.
0.5.12026-10-02

The catch-up leap

New answers: pack (context for a task within a token budget), review (the PR report in one call), flags, contract-breaks, hotspots, cochange, the reflexion model in check. Graph algorithms over the generic layer: communities, splits, hubs, duplicate-flows, timeline.

External inputs: SCIP import as FACT-tier edges, a shared parse cache over a directory or HTTPS store, the overlay loop (propose, try, accept), Notion, MediaWiki and wiki-directory doc sources. Swift and C++ call scope, Go route mounts, C/C++ include roots, client host narrowing, a Kotlin row in the matrix.

  • .gmap format 3: interned evidence, code cells stored as spans into the source, an lz4 parse-cache frame, a timeline sidecar.
0.5.02026-09-20

The leap

The one breaking release: every id, qualified name, .gmap format and API break at once, so glia, repo-graph and Engram move together. The crates, binary and Python package take the glia name (glia-py, module glia_py).

Cross-domain preparation: header registries, domain container sections, the domain profile, pass composition, the generic activation::algo layer and a test-only toy domain proving the seam. The answer surface grows to its present shape: find, flows, implementors, serves, why, delta, diff-impact, tests-for, effects, cycles, check, spec-status, gaps, patterns, with edges carrying evidence cells and answers carrying FACT-tier absences.

0.4.xto 2026-09

Substrate

The tree-sitter parsers, the zero-copy store, the CLI, the pyo3 wheel (then repo-graph-py) and the first answer primitives: blast-radius, trace, resolve, coverage, docs-for. The fixture-graded substrate-gap evaluation that still gates extraction.