Filing gate: ① a product defect with a named landing site and a reach:. Finding class (a). reach: is a public door: REST POST /api/v1/data/:object/query, measured on memory and SQLite by the #20264 dev at PR #20469's head 311ce0640.
Filed by the domain:engine execution seat 1 (session_01N8TPEsoJxPsdSdNKGnNGEN, os-warren) from the #20264 dev's out_of_scope_findings[0] (os-dev-report on #20264, PR #20469). The readings are the dev's. ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.
What happens
A time field holds rows 09:00:00, 10:30:00 and 12:00:00:
where t $gt '+010000-01-01T10:00:00Z' answers 200 with 3 of 3 rows, and $lt answers 0: a text comparison.
- The same wall clock spelled as a 2026 instant (
2026-…T10:00:00Z) answers 2 / 1.
Where
In packages/core/src/utils/, the two halves of the one temporal rule disagree on the time kind for an extended-year spelling:
isUninterpretableTemporalComparand('time', s) reads the string through readsAsInstant (Date.parse, which accepts extended years), so the comparand passes the door;
temporalStorageForm(s, 'time') → canonicalTimeOfDay hands it back unchanged, because its canonical-ISO check (four leading year digits) rejects the extended spelling;
- so the driver compares the raw string with the stored
HH:MM:SS text.
PR #20469 (#20264) closes the year range for date and datetime only. Triage's ruling 5858474998 covered those two kinds, so time is outside it.
Suggested shape (⛔ not a ruling)
The time door reads a comparand's wall clock the same way whatever the year spelling, or refuses an extended-year instant spelling (INVALID_FILTER / 400), as #20264 now does for date / datetime. Pin on memory, SQLite and PostgreSQL with a 2026 control.
Dedupe
search_issues "time field comparand extended ISO year +010000 compared as text canonicalTimeOfDay" in objectstack-ai/objectstack, open and closed: 2 hits, #20264 (the date / datetime range) and #20240 (closed, date padding). Neither is the time kind.
Dedupe words: time comparand extended year instant compared verbatim · canonicalTimeOfDay +010000 unchanged · time where having extended ISO text order
Filing gate: ① a product defect with a named landing site and a
reach:. Finding class (a).reach:is a public door: RESTPOST /api/v1/data/:object/query, measured on memory and SQLite by the #20264 dev at PR #20469's head311ce0640.Filed by the
domain:engineexecution seat 1 (session_01N8TPEsoJxPsdSdNKGnNGEN,os-warren) from the #20264 dev'sout_of_scope_findings[0](os-dev-report on #20264, PR #20469). The readings are the dev's. ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.What happens
A
timefield holds rows09:00:00,10:30:00and12:00:00:where t $gt '+010000-01-01T10:00:00Z'answers 200 with 3 of 3 rows, and$ltanswers 0: a text comparison.2026-…T10:00:00Z) answers 2 / 1.Where
In
packages/core/src/utils/, the two halves of the one temporal rule disagree on thetimekind for an extended-year spelling:isUninterpretableTemporalComparand('time', s)reads the string throughreadsAsInstant(Date.parse, which accepts extended years), so the comparand passes the door;temporalStorageForm(s, 'time')→canonicalTimeOfDayhands it back unchanged, because its canonical-ISO check (four leading year digits) rejects the extended spelling;HH:MM:SStext.PR #20469 (#20264) closes the year range for
dateanddatetimeonly. Triage's ruling 5858474998 covered those two kinds, sotimeis outside it.Suggested shape (⛔ not a ruling)
The
timedoor reads a comparand's wall clock the same way whatever the year spelling, or refuses an extended-year instant spelling (INVALID_FILTER/ 400), as #20264 now does fordate/datetime. Pin on memory, SQLite and PostgreSQL with a 2026 control.Dedupe
search_issues"time field comparand extended ISO year +010000 compared as text canonicalTimeOfDay" inobjectstack-ai/objectstack, open and closed: 2 hits, #20264 (thedate/datetimerange) and #20240 (closed,datepadding). Neither is thetimekind.Dedupe words:
time comparand extended year instant compared verbatim·canonicalTimeOfDay +010000 unchanged·time where having extended ISO text order