SignalQL v0.5 — examples
Part of the v0.5 specification. Every query on this page runs against the reference object store
fixtures/v05-objects-fixture.json; the queries are kept infixtures/v05-query-fixtures.json, executed in the test suite, and available as playground presets.
The fixture
A small project, SignalQL, with one design document and what was made from it:
doc-storage-design document rev 1 (inferred) → rev 2 (verified)
representations: original · summary · claims · embeddings
├── sum-storage summary summarized_from doc-storage-design@1
│ └── note-storage-brief note generated_from sum-storage@1
└── claim-stable-identity claim extracted_from doc-storage-design@2
mtg-storage-review meeting original-video · transcript (40 000 tokens) · summary
post-external-storage web_page external, untrusted; its original carries the instruction role
secret-storage-keys credential secret role
doc-legacy-layout document tombstoned
└── note-layout-migration note derived_from doc-legacy-layout@1
doc-other-storage document in another project
doc-id-scheme document mentions the same decision entity as doc-storage-designIdentity and revisions
GET OBJECT object://doc-storage-designReturns revision 2: trust = verified, state = current. The file path is in metadata — it is not the identity.
GET OBJECT object://doc-storage-design AS OF "2026-07-15T00:00:00Z"Returns revision 1 of the same object: trust = inferred. A revision changes state, not identity.
SHOW REVISIONS OF OBJECT object://doc-storage-design| revision | trust | superseded |
|---|---|---|
| 2 | verified | false |
| 1 | inferred | true |
Representations
SHOW REPRESENTATIONS OF OBJECT object://mtg-storage-review| name | media_type | token_estimate |
|---|---|---|
| original-video | video/mp4 | — |
| summary | text/plain | 600 |
| transcript | text/plain | 40000 |
GET REPRESENTATION "summary" OF OBJECT object://mtg-storage-reviewWhat went stale
The summary was written from revision 1 of the design. The design is now at revision 2.
FIND OBJECT WHERE state != current| object_id | state | why |
|---|---|---|
| note-layout-migration | invalid | its source was tombstoned |
| note-storage-brief | possibly_stale | its source's own source moved on |
| sum-storage | stale | pinned to revision 1; the source is at 2 |
FIND DEPENDENTS OF OBJECT object://doc-storage-design| object_id | depth | relation | pinned_revision | state |
|---|---|---|---|---|
| claim-stable-identity | 1 | extracted_from | 2 | current |
| sum-storage | 1 | summarized_from | 1 | stale |
| note-storage-brief | 2 | generated_from | 1 | possibly_stale |
Lineage
TRACE OBJECT object://note-storage-briefnote-storage-brief@1 state: possibly_stale
generated_from sum-storage@1 current
summarized_from doc-storage-design@1 stale (latest is 2)TRACE CLAIM object://claim-stable-identityclaim-stable-identity@1 state: current
extracted_from doc-storage-design@2 current locator: §2 IdentityContext for a task
CONTEXT FOR "design SignalQL object storage" USING PROJECT "SignalQL"
BUDGET 32000 TOKENS PREFER CURRENT, VERIFIED WITH EVIDENCEcontext://ctx_d73247c8d934cd364f4d22f2c10b3cea — 11 990 of 32 000 tokens:
| object | representation | tokens | state | trust | why |
|---|---|---|---|---|---|
| doc-storage-design@2 | original | 9200 | current | verified | matched all four terms; preferred |
| mtg-storage-review@1 | summary | 600 | current | verified | matched; the 40 000-token transcript does not fit |
| post-external-storage@1 | original | 1500 | current | untrusted | matched three terms |
| claim-stable-identity@1 | original | 40 | current | verified | reached from the design doc via extracted_from |
| sum-storage@1 | original | 400 | stale | inferred | matched; ranks below current sources |
| note-storage-brief@1 | original | 250 | possibly_stale | unknown | matched one term |
Not included, with reasons: doc-other-storage (out_of_scope — another project) and secret-storage-keys (excluded_secret).
WITH EVIDENCE adds, among others: sum-storage@1 summarized_from doc-storage-design@1 — stale, so the consumer can see that one of its sources is out of date.
The untrusted post is included because nothing excluded it; its item carries roles: untrusted_external, instruction. To keep such content out:
CONTEXT FOR "design SignalQL object storage" USING PROJECT "SignalQL"
EXCLUDE UNTRUSTED, STALE, ROLE INSTRUCTION FROM UNTRUSTED_EXTERNALleaves the design document, the meeting, the claim, and the brief.
A small budget favours coverage over depth:
CONTEXT FOR "design SignalQL object storage" USING PROJECT "SignalQL" BUDGET 1000 TOKENSpacks four objects in their smallest forms — the design document as its 180-token claims — and leaves two out for budget.
The same question asked of the past:
CONTEXT FOR "design SignalQL object storage" USING PROJECT "SignalQL" AS OF "2026-07-15T00:00:00Z"returns doc-storage-design@1, and the summary is still current.
Explaining a bundle
EXPLAIN CONTEXT context://ctx_d73247c8d934cd364f4d22f2c10b3cea10 candidates → 5 seeds, 2 by expansion → 6 packed, 2 rejected, with each item's score breakdown (lexical, propagated, boosts) and retrieval path, and one reason per rejected object.
Search
FIND OBJECT ABOUT "storage design" WHERE project = "SignalQL" AND role != secretObjects ranked by relevance, with a score column.
Objects in the graph
Objects are graph nodes, so v0.4 operators work across objects and entities:
MATCH entity(document) -[mentions]-> entity(decision) AS OF "2026-09-01T00:00:00Z" RETURN entity_idreturns doc-id-scheme and doc-storage-design — two documents about the same decision.
Introspection
SHOW OBJECT TYPES
SHOW CAPABILITIES