A question enters the stack at the top and evidence comes out at the bottom:
did:key verification method.Each step is somebody’s component. The semantic graph lives in Grust (and is queryable through Sail’s Cypher extension). The envelope machinery and the capability model are TypeSec. The tables come from a lakehouse whose catalog transitions LakeCat governs. And QueryGraph is the layer that makes them one system with one evidence chain.
A useful way to read that chain — the sentence the whole stack exists
to make true: the answer used OSI metric X, resolved to Sail table
Y, under capability C and odrl:read, emitting OpenLineage
run R anchored by attestation A — and source Z was denied, with a
receipt. No mainstream agent framework offers that sentence.
Stack releases are coordinated by codename, each repo keeping SemVer independently:
| Component | Version | Codename | Pool |
|---|---|---|---|
| QueryGraph (both languages) | 0.4.0 | Sentinel | birds of prey |
| Grust | 0.12.0 | Lobster | — |
| TypeSec | 0.12.0 | Torcello | Venetian landmarks |
| LakeCat | 0.3.0 | Ocelot | wild cats |
The 0.12 substrate wave landed together: Grust merged the Full39075
GQL profile, TypeSec shipped its agent-interoperability platform, and
LakeCat moved to both while proving stock-client Iceberg REST
conformance — with QueryGraph verified green against all three.
QueryGraph 0.4.0 “Sentinel” ships on top of that wave: where Goshawk
opened the doors (MCP, A2A, /v1, cross-language crypto),
Sentinel stands guard over what comes through them.
The repositories expect sibling checkouts:
~/src/
├── querygraph/ # meta-repo: README, FABLE-REVIEW-1, workspace map
│ ├── qg-rust/ # reference implementation (this guide lives here)
│ ├── qg-python/ # Pythonic mirror
│ ├── sail/ # fork, branch `grust`, Cypher extension
│ └── semantic/ # research: Polaris SemanticModel, OSI round-trips
├── grust/ # path dependency of qg-rust
├── lakecat/ # path dependency of qg-rust
└── typesec/ # consumed from crates.io