docs: the ambiguous-date heuristic is a ruled limit, not an open question
improvise-l8rh carries the user's ruling of 2026-09-20: leave the first-match heuristic as it is and track it as a known limit. The prose still read as a filed-and-open question, and it did not record what the ruling rests on -- that a day-first default only moves which half of the world imports silently wrong, that the honest fix changes FieldProposal's shape, and that the limit is tolerable chiefly because improvise-7yx made it deterministic. No behaviour change; the two pinning tests are unchanged. improvise-l8rh Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FC2jVn8Au7E9JPkw6bwXXH
This commit is contained in:
@@ -424,7 +424,21 @@ and the derived `_Month`/`_Quarter` categories inherit the error. What makes it
|
||||
tolerable is that the wizard shows the detected format and lets the user change
|
||||
it — the same argument two-digit years already rested on. It is pinned by a test
|
||||
so that changing the answer is a decision somebody makes rather than a side
|
||||
effect of reordering the table. Filed as **improvise-l8rh**.
|
||||
effect of reordering the table.
|
||||
|
||||
**Ruled a known limit** (improvise-l8rh, the user, 2026-09-20). Two things the
|
||||
ruling rests on. Changing the default to day-first only moves which half of the
|
||||
world imports silently wrong; and the honest fix is larger than the heuristic —
|
||||
an ambiguous column should *surface* its ambiguity rather than resolve it, which
|
||||
changes `FieldProposal`'s shape and the wizard step that displays it, the way
|
||||
`Dataset::warnings` returns a decision the user should hear about as data. Worth
|
||||
doing deliberately, not as a patch.
|
||||
|
||||
What makes the limit reasonable to live with is that it is now *deterministic*:
|
||||
`analyze_records` iterated a `HashSet` until improvise-7yx, so the ten samples
|
||||
`detect_date_format` inspects were a different ten every run and a column whose
|
||||
eleventh value ruled out `%m/%d/%Y` detected a different format run to run. The
|
||||
ten-sample window itself is unchanged and is part of the limit.
|
||||
|
||||
### CSV parsing
|
||||
|
||||
|
||||
@@ -461,9 +461,10 @@ can override it. The same argument as the ambiguity below.
|
||||
nothing in the data can tell them apart. The heuristic is first-match over
|
||||
`DATE_FORMATS`, so the American reading wins — a European CSV imports with its
|
||||
days and months swapped, silently, and the derived `_Month`/`_Quarter`
|
||||
categories inherit the error. Filed as **improvise-l8rh**; pinned here so that
|
||||
changing the answer is a decision somebody makes rather than a side effect of
|
||||
reordering the table.
|
||||
categories inherit the error. **improvise-l8rh ruled this a known limit** rather
|
||||
than a defect, so this test is what makes changing the answer a decision
|
||||
somebody makes rather than a side effect of reordering the table. The argument
|
||||
is in `context/code/formula-and-io.md`.
|
||||
|
||||
The loop at the end is the precondition that makes this a statement about
|
||||
*ambiguity* rather than about one format merely fitting: the other reading has
|
||||
|
||||
Reference in New Issue
Block a user