CoolFace
Datasetpublic

NagaYu/ingot-chrono

Ingot — Chrono Natural-language time expressions to an iCalendar RRULE + ISO-8601 start + IANA timezone exception rules, as strict JSON. Every label in this dataset was constructed before its sentence existed. A schedule object is generated from an integer seed, then rendered into prose. No model, judge or annotator ever decided what the answer was, so the label cannot be wrong -- it is the input to the pipeline. Splits split rows verified easy / medium /… See the full description on the dataset page: https://huggingface.co/datasets/NagaYu/ingot-chrono.

sourceHugging Faceapache-2.0updated 1mo agoView on Hugging Face
0likes12downloads
Dataset Card

Ingot — Chrono

Natural-language time expressions to an iCalendar RRULE + ISO-8601 start + IANA timezone

  • —exception rules, as strict JSON.

Every label in this dataset was constructed before its sentence existed. A schedule object is generated from an integer seed, then rendered into prose. No model, judge or annotator ever decided what the answer was, so the label cannot be wrong -- it is the input to the pipeline.

Splits

splitrowsverifiedeasy / medium / hardja / en
train48,000100.00%10039 / 13920 / 2404128878 / 19122
val1,200100.00%234 / 344 / 622737 / 463
test2,000100.00%424 / 553 / 10231163 / 837
unseen_combo2,000100.00%0 / 106 / 18941241 / 759
unseen_template2,000100.00%493 / 546 / 9611192 / 808
probe128100.00%29 / 27 / 7276 / 52

verified is the share of rendered sentences that passed round-trip verification against the constructed label. Rows that failed were discarded, never repaired -- repairing one would mean inferring a label from text, which is the thing this dataset exists to avoid.

Contamination control

Splits occupy disjoint integer seed bands, so a training item and an evaluation item were never produced by the same generator call:

splitseed startseed stop
train024,000
val1,000,000,0001,000,001,200
test2,000,000,0002,000,002,000
unseen_combo3,000,000,0003,000,002,000
unseen_template6,000,000,0006,000,002,000
probe5,000,000,0005,000,000,064

unseen_template renders evaluation items using reserved renderer templates that never appear in training. It exists because of a measurement: a blind, hand-written 1,600-line rule parser reaches ~93% exact match on the ordinary test split. That is the ceiling you should expect when the surfaces are themselves rule-generated, so "the specialist beats hand-written rules" is not a claim test can support. Holding surfaces out asks the question the data can answer: does the model generalise to wordings it has never seen? Note the asymmetry -- the rule baseline was developed with all templates visible, so this comparison is biased against the specialist.

unseen_combo is the stronger test of label composition. It draws only from feature combinations that the train/val/test generator is forbidden to emit. Every individual feature value is common in training; only the conjunction is new, which isolates compositional generalisation from memorisation. Reserved combinations (freq, byday_kind, end_kind, holiday_kind):

  • —DAILY|none|count|after
  • —DAILY|none|until|skip
  • —MONTHLY|last|until|after
  • —MONTHLY|setpos|count|skip
  • —WEEKLY|multi|until|before
  • —WEEKLY|single|until|skip
  • —YEARLY|nth|until|after
  • —YEARLY|single|count|before

Rendered-sentence collisions with train after generation: val: 2, test: 2, unseen_combo: 0, unseen_template: 0, probe: 0 (rows dropped: 4).

Note that unseen_combo skews hard by construction -- the reserved combinations involve end dates and holiday policies, which score high on the rubric. Compare it against the difficulty- matched slice of test, not against test overall.

Fields

fieldmeaning
textthe rendered sentence (the model's input)
target_jsonthe constructed label, canonical compact JSON
reference_datethe "today" relative expressions resolve against
default_tzworkspace default timezone shown in the prompt
difficulty, difficulty_scorederived from the published rubric below
tag_*structural feature tags
next_occurrencesthe next 10 real instants, the oracle for semantic scoring
rrule, dtstart, tzidthe components scored by exact match
verified, verify_moderound-trip verification outcome

Difficulty rubric (published, so the hard slice is auditable)

axisvaluepoints
freqDAILY0
freqWEEKLY0
freqMONTHLY1
freqYEARLY2
interval_kind10
interval_kind21
interval_kind3plus1
byday_kindnone0
byday_kindsingle0
byday_kindmulti1
byday_kindnth2
byday_kindlast2
byday_kindsetpos3
monthday_kindnone0
monthday_kindfixed1
monthday_kindlast2
end_kindnever0
end_kindcount0
end_kinduntil2
dst_kindnone0
dst_kindcrosses4
holiday_kindnone0
holiday_kindbefore3
holiday_kindafter3
holiday_kindskip3
exdate_kindnone0
exdate_kindsome2
style_kindpolite0
style_kindcasual0
style_kindterse0
style_kindbullet1
style_kindemail1
relative_refno0
relative_refyes1

easy = score ≤ 1 · medium = 2–3 · hard = score ≥ 4

Prompt

Prompt version chrono-v1. Training and every evaluation condition share one prompt builder (ingot.prompts), so comparisons measure capability rather than prompt engineering.

Convert the recurring-schedule description into JSON.
Keys, in order: dtstart, tzid, rrule, duration_minutes, exdate, holiday.
- dtstart: local wall time, "YYYY-MM-DDTHH:MM:SS", no timezone suffix. It is the first occurrence on or after today.
- tzid: IANA zone name (e.g. Asia/Tokyo). Use the default unless the text names another.
- rrule: RFC 5545 recurrence rule without the "RRULE:" prefix. UNTIL must be UTC in basic format ending with Z.
- duration_minutes: integer.
- exdate: list of local wall times excluded from the series; [] if none.
- holiday: {"calendar": "JP"|"US"|null, "shift": "none"|"before"|"after"|"skip"}.
Output JSON only.

Reproduce

bash
pip install ingot
python3 scripts/build_dataset.py --n 24000 --variants 2

Generation is a pure function of the seed, so this reproduces the corpus byte for byte.

Limitations

The renderer is rule-based. A sufficiently engineered parser could in principle invert it, so this dataset does not claim that the task is unsolvable by rules. It claims that the labels are strict by construction, that the splits are contamination-free by construction, and that the hard and unseen_combo slices are where general-purpose systems degrade.