Driver half of #16041, split by director ruling (decision batch #57, 2026-09-06, option A — contract first).
Blocked-by: #16041 (spec half — AnalyticsQuerySchema.dateRange string arm closes to the date-range-presets.ts vocabulary plus today; unrecognised strings are refused with the ADR-0112 envelope; the spec example is corrected). This card unblocks when the spec change lands.
Scope
Once the contract is closed:
driver-memory analytics: an unparseable / unrecognised dateRange string is refused with the ADR-0112 envelope emitted by the schema, never silently accepted as "matches everything".
- SQL drivers (postgres, sqlite, mysql — whichever implement the analytics path): same refusal, same envelope; the preset vocabulary lowers to the same window boundaries the memory driver uses, so results agree across drivers.
- Conformance: one shared test fixture that runs the preset list plus a handful of unrecognised strings through every analytics driver and asserts identical accept/refuse outcomes and identical window boundaries for the accepted presets.
Out of scope
Acceptance
Driver half of #16041, split by director ruling (decision batch #57, 2026-09-06, option A — contract first).
Blocked-by: #16041 (spec half —
AnalyticsQuerySchema.dateRangestring arm closes to thedate-range-presets.tsvocabulary plustoday; unrecognised strings are refused with the ADR-0112 envelope; the spec example is corrected). This card unblocks when the spec change lands.Scope
Once the contract is closed:
driver-memoryanalytics: an unparseable / unrecogniseddateRangestring is refused with the ADR-0112 envelope emitted by the schema, never silently accepted as "matches everything".Out of scope
driver-memoryanalytics silently accepts an unparseabledateRangeand matches EVERY row — and the platform's own documented spelling'Last 7 days'is one of them #16041 (spec).Acceptance
dateRangestrings with the ADR-0112 envelope