You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c62f319
Browse filesBrowse the repository at this point in the historyBrowse files
E78 is T1.28b's on lane 1b, under review, so this package's decision
row, the register's DT-5 and PK-5 references, the design and tracker
rows, as-built, date-rules.md, dependencies.md and the parser's and the
adapter's comments name E79. as-built also says what no test holds: a
day-first literal read before a D8 one gives no warning when the run
ends with the core's error.
Signed-off-by: Adi Wadaskar <awadaskar@nvidia.com>
Copy file name to clipboardExpand all lines: docs/design/rust-core/phase-0/date-rules.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -156,7 +156,7 @@ In short:
156
156
The core reads a literal by these rules over its fields, written down from the reference's answers and held to them (`sdm-pql`'s `tests/dates.json`, `dates.rs`; decision E69); no pandas or `dateutil` code is ported.
157
157
158
158
- A literal whose every run of digits has four digits or fewer: D2's order; a year below 100 placed around the current year where no date field has three digits or more (D5); the year 0 only as a first field of exactly `0000`, a month and a day of one or two digits, and a time of day, if any, of fields of one or two digits (D7); a time of day by value, an hour to 23, a minute and a second to 59 (D6).
159
-
- A literal with a run of five digits or more (D8) is refused by name from T1.6c, before any field is read: `validate_query` ends with `INVALID_REQUEST` naming the rule `date_literal_packed` and the literal's span, never its text (`Reading::Packed`; Phase 1 decision E78, register DT-5, the owner's decision of 2026-10-12). The reference reads such a literal through `dateutil`, as the core did from T1.6b to T1.6c, by these rules, kept as the record of what is refused:
159
+
- A literal with a run of five digits or more (D8) is refused by name from T1.6c, before any field is read: `validate_query` ends with `INVALID_REQUEST` naming the rule `date_literal_packed` and the literal's span, never its text (`Reading::Packed`; Phase 1 decision E79, register DT-5, the owner's decision of 2026-10-12). The reference reads such a literal through `dateutil`, as the core did from T1.6b to T1.6c, by these rules, kept as the record of what is refused:
160
160
- a first field of six digits is a year, month and day of two digits each, in D2's order, the year placed by D5; of eight, a four-digit year, a month and a day; of twelve, then an hour and minutes; of fourteen, then seconds;
161
161
- after such a field, each of the other two date fields, in order: with `-` as the separator once an hour is known, a UTC offset west of Greenwich (`HHMM`, or one or two digits of hours), the later one overriding; otherwise two or four digits are an hour (and minutes) when no hour is known yet, six digits an `HHMMSS` time; anything else is refused;
162
162
- any other first field: the three date fields in D2's order, a field of three digits or more a year as written, two such refused (D9), the year placed by D5 only where no date field has three digits or more (the long run then is in the time of day);
Copy file name to clipboardExpand all lines: docs/design/rust-core/phase-1/as-built.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -402,12 +402,13 @@ The checks of T1.19's former exit, each with the seeded fault that fails it (fil
402
402
403
403
## T1.6c
404
404
405
-
D8 date literals refused by name (the owner's decision of 2026-10-12; decision E78; register DT-5 and PK-5), each claim with its mechanism.
405
+
D8 date literals refused by name (the owner's decision of 2026-10-12; decision E79; register DT-5 and PK-5), each claim with its mechanism.
406
406
407
407
- The refusal: `dates.rs`'s `Reader::read` answers `Reading::Packed` for a literal any of whose six runs of digits (the `DATE` token's three, the `TIME` token's three) has five digits or more, before any field is read, so it never needs the current year and is never `Unplaced`; `Reader::long` is gone, and with it the only reading that gave an offset (`Stamp::offset` stays, always none, since `PqlLiteral::Time` carries one). Every other literal goes to `Reader::plain` as before. Held by `dates.rs`'s own tests (D8's former examples packed with and without a year, the four-digit boundary read) and `sdm-pql`'s `tests/dates.rs` (`a_run_of_five_digits_is_refused_as_packed_and_needs_no_year`; all 7,749 D8 rows of `dates.json` and T0.6's four held to `Packed`, the reference's readings kept in the files; the plain rows still the reference's).
408
408
- Where it is refused: `ast::constant` turns `Packed` into `BuildError::Packed(location)`, carried up as `ParseError::Packed` and `Unparsed::Packed`, so the node the visitor builds first decides, as for any node refusal (`pql_adapter.rs`'s `an_earlier_refusal_wins_and_the_first_packed_literal_ends_the_parse`); a literal in an `IN` list is built the same way (`a_packed_date_in_an_array_is_refused_by_name`).
409
409
- The error: `sdm_core::pql`'s `packed` makes `INVALID_REQUEST` (kind `invalid_request`) with `operation``validate_query`, `rule``date_literal_packed` and the literal's `start_row`, `start_col`, `end_row`, `end_col`, as D4's warning places a literal, never its text (`the_packed_refusal_names_the_literal_s_place_as_d4_s_warning_does`; `dispatch.rs`'s `a_packed_date_literal_ends_validate_query_with_the_core_s_error`, and a packed date needing no resolvable local zone). The Python host raises it by its code, `StructuredDataError` with those `details` (`test_the_routing_seam.py`'s `test_a_packed_date_literal_is_refused_by_name_on_the_core`, through `materialize`); rust-host gives it through `HostRun` (`s0_cases.rs`'s `a_packed_date_literal_is_refused_by_name_on_the_pure_rust_host`). `python-old` still reads them (`test_the_old_route_still_reads_a_packed_date_literal`).
410
410
- What stays: D1 to D7 read, D4 warns and D9 is `PQL_VALUE_INVALID_LITERAL` as before, on both routes alike (`a_literal_with_no_run_of_five_digits_reads_as_before`, `test_a_literal_with_no_run_of_five_digits_answers_as_on_the_old_route`); the 417 corpus queries, none with a D8 literal, unchanged.
411
411
- The D8 literals the reference refuses (a year past 9999, an impossible value, two long fields) are refused by this rule in place of `PQL_VALUE_INVALID_LITERAL`: a refusal before and after, its diagnostic changed (DT-5's new behavior); the quirk rows `10000-01-01` and `date-digit-counts/long-year` hold it (`pql_quirks.rs`).
412
412
- The S0 cases: T1.6b's acceptance twins `s0.accept.date-packed` and `s0.accept.date-long-field` are removed with their two `python-ref` lines and baselines, under DT-5's `case_outcomes` (`removed` on `python-core`, `python-old` and `rust-host`, generated by `ratchet.py check`), since a changed case file no longer matches the identity its reference line records (`tests/test_contract_reference.py`); the proposed baselines are `ratchet.py accept`'s over the gate's observations, kept to the cases the checkpoint baselines, as at T1.6b. T1.12's diagnostic pair of the same inputs stays, held to the refusal by `s0_cases.rs` and `tests/test_contract_cases.py`.
413
+
- Not held: a day-first literal read before the D8 one in the same query gives its `DATE_LITERAL_DAY_FIRST` warning on the visitor's list, but the run ends with the core's error, which carries no warnings, so that warning is not shown; no test asserts it either way (the orchestrator's call, 2026-10-12).
413
414
- The tests are the test author's (`T1.6c tests:` commits); no implementer commit changes them.
0 commit comments