Stage 0: the package datekeys and its test data at spec-v0.11
A pure Dart package, without Flutter, for the app that the author will
write in Flutter (docs/PLAN_dart.md, stage 0):
- pubspec.yaml: the package datekeys, unpublished, for Dart 3.13; at run
time only package:crypto, and in development only package:test, which
the author approved on 5 October.
- testdata/ vendored from datekeys-go at the tag spec-v0.11 (ae33434),
124 files, with the same testdata/SOURCE.json that datekeys-ts writes for
that commit.
- tool/sync_testdata.dart, the port of scripts/sync-testdata.mjs, and
test/testdata_test.dart, which checks the copy and that every file names
specVersion; test/version_test.dart keeps pubspec.yaml and
lib/src/version.dart in step.
- tool/check.sh, the local gate: format, analysis with every info fatal,
tests, and the copy against ../datekeys-go.
- The licence, Apache-2.0, as the other two implementations.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 days ago
|
|
|
{
|
|
|
|
|
"spec": "0.14",
|
Stage 0: the package datekeys and its test data at spec-v0.11
A pure Dart package, without Flutter, for the app that the author will
write in Flutter (docs/PLAN_dart.md, stage 0):
- pubspec.yaml: the package datekeys, unpublished, for Dart 3.13; at run
time only package:crypto, and in development only package:test, which
the author approved on 5 October.
- testdata/ vendored from datekeys-go at the tag spec-v0.11 (ae33434),
124 files, with the same testdata/SOURCE.json that datekeys-ts writes for
that commit.
- tool/sync_testdata.dart, the port of scripts/sync-testdata.mjs, and
test/testdata_test.dart, which checks the copy and that every file names
specVersion; test/version_test.dart keeps pubspec.yaml and
lib/src/version.dart in step.
- tool/check.sh, the local gate: format, analysis with every info fatal,
tests, and the copy against ../datekeys-go.
- The licence, Apache-2.0, as the other two implementations.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 days ago
|
|
|
"profile": "datekeys:quicknet:v1",
|
|
|
|
|
"description": "Quicknet date to round resolution (spec §15, §16, §65), generated by the reference implementation.",
|
|
|
|
|
"vectors": [
|
|
|
|
|
{
|
|
|
|
|
"name": "genesis exactly: round 1",
|
|
|
|
|
"requested": "2023-08-23T15:09:27Z",
|
|
|
|
|
"round": 1,
|
|
|
|
|
"effective": "2023-08-23T15:09:27Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "genesis + 1ns: next round",
|
|
|
|
|
"requested": "2023-08-23T15:09:27.000000001Z",
|
|
|
|
|
"round": 2,
|
|
|
|
|
"effective": "2023-08-23T15:09:30Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "genesis + 1s",
|
|
|
|
|
"requested": "2023-08-23T15:09:28Z",
|
|
|
|
|
"round": 2,
|
|
|
|
|
"effective": "2023-08-23T15:09:30Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "genesis + one period: round 2",
|
|
|
|
|
"requested": "2023-08-23T15:09:30Z",
|
|
|
|
|
"round": 2,
|
|
|
|
|
"effective": "2023-08-23T15:09:30Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "genesis + one period + 1ns: round 3",
|
|
|
|
|
"requested": "2023-08-23T15:09:30.000000001Z",
|
|
|
|
|
"round": 3,
|
|
|
|
|
"effective": "2023-08-23T15:09:33Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "genesis - 1s: before the profile",
|
|
|
|
|
"requested": "2023-08-23T15:09:26Z",
|
|
|
|
|
"error": "ERR_DATEKEY_INVALID"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "round 1000 boundary exactly",
|
|
|
|
|
"requested": "2023-08-23T15:59:24Z",
|
|
|
|
|
"round": 1000,
|
|
|
|
|
"effective": "2023-08-23T15:59:24Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "one second before the round 1000 boundary",
|
|
|
|
|
"requested": "2023-08-23T15:59:23Z",
|
|
|
|
|
"round": 1000,
|
|
|
|
|
"effective": "2023-08-23T15:59:24Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "one second after the round 1000 boundary",
|
|
|
|
|
"requested": "2023-08-23T15:59:25Z",
|
|
|
|
|
"round": 1001,
|
|
|
|
|
"effective": "2023-08-23T15:59:27Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "1ns after the round 1000 boundary",
|
|
|
|
|
"requested": "2023-08-23T15:59:24.000000001Z",
|
|
|
|
|
"round": 1001,
|
|
|
|
|
"effective": "2023-08-23T15:59:27Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "half a second after the round 1000 boundary",
|
|
|
|
|
"requested": "2023-08-23T15:59:24.5Z",
|
|
|
|
|
"round": 1001,
|
|
|
|
|
"effective": "2023-08-23T15:59:27Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "normative vector 2030-01-01 (spec §16)",
|
|
|
|
|
"requested": "2030-01-01T00:00:00Z",
|
|
|
|
|
"round": 66884212,
|
|
|
|
|
"effective": "2030-01-01T00:00:00Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "1ns after 2030-01-01",
|
|
|
|
|
"requested": "2030-01-01T00:00:00.000000001Z",
|
|
|
|
|
"round": 66884213,
|
|
|
|
|
"effective": "2030-01-01T00:00:03Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "normative vector round 66432123 (spec §16)",
|
|
|
|
|
"requested": "2029-12-16T07:15:33Z",
|
|
|
|
|
"round": 66432123,
|
|
|
|
|
"effective": "2029-12-16T07:15:33Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "offset timezone equals UTC instant",
|
|
|
|
|
"requested": "2026-10-22T19:00:00.001+02:00",
|
|
|
|
|
"round": 33295013,
|
|
|
|
|
"effective": "2026-10-22T17:00:03Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "last representable round time",
|
|
|
|
|
"requested": "9999-12-31T23:59:57Z",
|
|
|
|
|
"round": 83903165811,
|
|
|
|
|
"effective": "9999-12-31T23:59:57Z"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "after the last representable round",
|
|
|
|
|
"requested": "9999-12-31T23:59:59Z",
|
|
|
|
|
"error": "ERR_DATEKEY_INVALID"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|