Found by the docs audit of the first-run path (#10563).
What is wrong
content/docs/data-modeling/index.mdx:41 — the Data Modeling module's landing
page — advertises the query surface as:
A compiled query AST — queries are JSON documents validated against the
protocol, then compiled by a driver into native queries with joins,
aggregations, window functions, HAVING, and subqueries.
Two of those five were retired in protocol 17 and are tombstoned:
| Claim | Reality |
|---|
joins | Removed in @objectstack/spec 17 (#4286, ADR-0049). Authoring it is a tsc error, and a query carrying it — even joins: [] — fails to parse. JoinNode/JoinType/JoinStrategy left with it. Migration entry: packages/spec/src/migrations/entries/semantic/17.query-joins-retired.ts |
window functions | Removed from the request surface in 17 (#4286). ObjectQL.find() / .aggregate() and POST /api/v1/data/:object/query never routed it. Tombstoned. Migration entry: .../17.query-window-functions-retired.ts |
HAVING is fine (packages/spec/src/data/query.zod.ts:548).
The module's own child page already documents both removals, under the headings
"Joins — removed" (content/docs/data-modeling/queries.mdx:432-441) and
"Window Functions — removed from the request surface" (queries.mdx:566-575).
The landing page still sells them, so the front door of the module contradicts the
page it links to.
Window functions do survive as a SQL-driver door — SqlDriver.findWithWindowFunctions(),
not on the IDataDriver contract (packages/drivers/driver-sql/src/sql-driver.ts:3648) —
which queries.mdx explains. If the landing page wants to keep mentioning them, that
is the accurate framing.
Back-link: #10563
Found by the docs audit of the first-run path (#10563).
What is wrong
content/docs/data-modeling/index.mdx:41— the Data Modeling module's landingpage — advertises the query surface as:
Two of those five were retired in protocol 17 and are tombstoned:
joins@objectstack/spec17 (#4286, ADR-0049). Authoring it is atscerror, and a query carrying it — evenjoins: []— fails to parse.JoinNode/JoinType/JoinStrategyleft with it. Migration entry:packages/spec/src/migrations/entries/semantic/17.query-joins-retired.tswindow functionsObjectQL.find()/.aggregate()andPOST /api/v1/data/:object/querynever routed it. Tombstoned. Migration entry:.../17.query-window-functions-retired.tsHAVINGis fine (packages/spec/src/data/query.zod.ts:548).The module's own child page already documents both removals, under the headings
"Joins — removed" (
content/docs/data-modeling/queries.mdx:432-441) and"Window Functions — removed from the request surface" (
queries.mdx:566-575).The landing page still sells them, so the front door of the module contradicts the
page it links to.
Window functions do survive as a SQL-driver door —
SqlDriver.findWithWindowFunctions(),not on the
IDataDrivercontract (packages/drivers/driver-sql/src/sql-driver.ts:3648) —which
queries.mdxexplains. If the landing page wants to keep mentioning them, thatis the accurate framing.
Back-link: #10563