From e2754809c0f5b6ff7804250ce764013a0381570b Mon Sep 17 00:00:00 2001 From: William Thorsen Date: Fri, 19 Jun 2026 07:11:35 -0700 Subject: [PATCH] tests: Use full timestamps in test fixtures, not bare dates Test fixtures across the `agents`, `kb`, `factory`, and `run-core` packages now use full seconds-granularity UTC timestamps for date fields instead of bare day-only dates, matching the format real notes are written with. Fixtures that deliberately exercise legacy day-only parsing or date validation keep their bare dates, with a brief note where the intent wasn't already evident. Converted values use varied, non-round times so the fixtures don't model a uniform placeholder. --- .../src/kb-add/__tests__/write-note.test.ts | 4 +-- .../custom-schema-vault/insight-note.md | 4 +-- .../malformed-schema-vault/plain-note.md | 5 ++-- .../fixtures/normalize/addressed-by-mixed.md | 4 +-- .../fixtures/normalize/addressed-by-scalar.md | 4 +-- .../fixtures/normalize/custom-record.md | 1 + .../__tests__/fixtures/normalize/cycle-a.md | 4 +-- .../__tests__/fixtures/normalize/cycle-b.md | 4 +-- .../__tests__/fixtures/normalize/dangling.md | 4 +-- .../__tests__/fixtures/normalize/malformed.md | 2 +- .../fixtures/normalize/unparseable-date.md | 4 +-- .../2024-archive/legacy-runbook.md | 4 +-- .../notes-vault/2026-05-01-meeting-notes.md | 4 +-- .../notes-vault/2026-06-01/daily-log.md | 4 +-- .../fixtures/notes-vault/mid-guide.md | 4 +-- .../fixtures/notes-vault/multi-match.md | 4 +-- .../fixtures/notes-vault/new-guide.md | 5 ++-- .../fixtures/notes-vault/old-guide.md | 4 +-- .../__tests__/fixtures/notes-vault/streams.md | 4 +-- .../fixtures/notes-vault/sub/hooks.md | 4 +-- .../fixtures/notes-vault/unrelated.md | 4 +-- .../adapters/__tests__/status-adapter.test.ts | 2 +- .../__tests__/fixtures/howto-typical.md | 4 +-- .../__tests__/fixtures/malformed-yaml.md | 2 +- .../__tests__/fixtures/unusual-whitespace.md | 4 +-- .../__tests__/fixtures/with-extra-fields.md | 6 ++-- .../__tests__/frontmatter-schema.test.ts | 4 +-- .../frontmatter/__tests__/parse-note.test.ts | 6 ++-- .../frontmatter/__tests__/round-trip.test.ts | 28 +++++++++---------- .../__tests__/write-frontmatter.test.ts | 12 ++++---- .../fixtures/parity-cross-note/notes/Links.md | 4 +-- .../fixtures/parity-cross-note/notes/Paths.md | 4 +-- .../parity-cross-note/notes/Target alpha.md | 4 +-- .../parity-cross-note/notes/sub-a/Shared.md | 4 +-- .../parity-cross-note/notes/sub-b/Shared.md | 4 +-- .../fixtures/parity/notes/01-clean-howto.md | 4 +-- .../fixtures/parity/notes/02-clean-concept.md | 6 ++-- .../parity/notes/03-clean-reference.md | 4 +-- .../parity/notes/04-clean-tutorial.md | 4 +-- .../fixtures/parity/notes/09-unknown-type.md | 4 +-- .../parity/notes/10-bad-date-format.md | 2 +- .../parity/notes/11-bad-date-calendar.md | 2 +- .../fixtures/parity/notes/12-tags-not-list.md | 4 +-- .../fixtures/parity/notes/13-aliased-tags.md | 4 +-- .../parity/notes/15-clean-with-optional.md | 6 ++-- .../fixtures/rule-cases/aliased-tag.md | 4 +-- .../__tests__/fixtures/rule-cases/bad-date.md | 2 +- .../fixtures/rule-cases/malformed-yaml.md | 2 +- .../fixtures/rule-cases/tags-not-list.md | 4 +-- .../rule-cases/unknown-record-type.md | 4 +-- .../rules/__tests__/frontmatter-rule.test.ts | 22 +++++++-------- .../kb/src/rules/__tests__/run-rules.test.ts | 4 +-- .../rules/__tests__/tag-alias-rule.test.ts | 8 +++--- .../parsers/__tests__/run-data-parser.test.ts | 2 +- 54 files changed, 132 insertions(+), 129 deletions(-) diff --git a/packages/agents/src/kb-add/__tests__/write-note.test.ts b/packages/agents/src/kb-add/__tests__/write-note.test.ts index d05f2235..32d44919 100644 --- a/packages/agents/src/kb-add/__tests__/write-note.test.ts +++ b/packages/agents/src/kb-add/__tests__/write-note.test.ts @@ -10,8 +10,8 @@ import { composeFilename, writeNote } from '../write-note.ts'; const baseFrontmatter: Frontmatter = { title: 'Sample', recordType: 'assertion', - created: '2026-05-24', - updated: '2026-05-24', + created: '2026-05-24T09:14:22Z', + updated: '2026-05-24T13:58:12Z', tags: ['sample'], extra: {}, }; diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/custom-schema-vault/insight-note.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/custom-schema-vault/insight-note.md index 13dddb21..d668d5c7 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/custom-schema-vault/insight-note.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/custom-schema-vault/insight-note.md @@ -1,8 +1,8 @@ --- title: A recurring insight recordType: insight -created: 2026-05-01 -updated: 2026-05-01 +created: 2026-05-01T08:14:22Z +updated: 2026-05-01T15:47:05Z captured-at: 2026-05-22T10:00:00.000Z repo: owner/repo-insight summary: A recurring flaky-timer insight diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/malformed-schema-vault/plain-note.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/malformed-schema-vault/plain-note.md index 84aefd09..4b7a8470 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/malformed-schema-vault/plain-note.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/malformed-schema-vault/plain-note.md @@ -1,8 +1,9 @@ --- title: A plain assertion recordType: assertion -created: 2026-05-01 -updated: 2026-05-01 +created: 2026-05-01T09:33:51Z +updated: 2026-05-01T16:02:38Z +# Deliberately bare to exercise the legacy YYYY-MM-DD age-parsing path of `computeAgeDays`. last-verified: 2026-04-20 tags: [plain] --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/addressed-by-mixed.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/addressed-by-mixed.md index 972f594a..58af2383 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/addressed-by-mixed.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/addressed-by-mixed.md @@ -1,8 +1,8 @@ --- title: A note with a mixed addressed-by list recordType: assertion -created: 2026-04-01 -updated: 2026-04-01 +created: 2026-04-01T07:41:36Z +updated: 2026-04-01T14:26:09Z addressed-by: - '#1' - 42 diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/addressed-by-scalar.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/addressed-by-scalar.md index 10060187..d80efab4 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/addressed-by-scalar.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/addressed-by-scalar.md @@ -1,8 +1,8 @@ --- title: A note addressed by a single reference recordType: assertion -created: 2026-04-01 -updated: 2026-04-01 +created: 2026-04-01T10:05:47Z +updated: 2026-04-01T17:08:44Z addressed-by: owner/repo#7 --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/custom-record.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/custom-record.md index b1d024d9..70de2787 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/custom-record.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/custom-record.md @@ -3,6 +3,7 @@ title: A custom insight record recordType: insight captured-at: 2026-05-22T10:00:00.000Z repo: owner/repo-custom +# Deliberately bare to exercise the legacy YYYY-MM-DD age-parsing path of `computeAgeDays`. last-verified: 2026-04-10 summary: A custom insight surfaced during review tags: [custom] diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/cycle-a.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/cycle-a.md index 682fcf8e..c4c14188 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/cycle-a.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/cycle-a.md @@ -2,8 +2,8 @@ title: Cycle node A recordType: assertion diataxis: concept -created: 2026-01-01 -updated: 2026-01-01 +created: 2026-01-01T08:49:16Z +updated: 2026-01-01T13:12:40Z tags: [cycle] superseded-by: cycle-b.md --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/cycle-b.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/cycle-b.md index ffc7478e..53986bc4 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/cycle-b.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/cycle-b.md @@ -2,8 +2,8 @@ title: Cycle node B recordType: assertion diataxis: concept -created: 2026-01-01 -updated: 2026-01-01 +created: 2026-01-01T09:52:18Z +updated: 2026-01-01T15:19:03Z tags: [cycle] superseded-by: cycle-a.md --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/dangling.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/dangling.md index 7cf2a367..99730585 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/dangling.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/dangling.md @@ -2,8 +2,8 @@ title: Note with a dangling successor recordType: assertion diataxis: reference -created: 2026-01-01 -updated: 2026-01-01 +created: 2026-01-01T07:28:53Z +updated: 2026-01-01T12:30:27Z tags: [orphan] superseded-by: does-not-exist.md --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/malformed.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/malformed.md index ee63e9e8..4a9cb0ce 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/malformed.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/malformed.md @@ -2,7 +2,7 @@ title: Malformed note diataxis: howto tags: [unterminated -created: 2026-01-01 +created: 2026-01-01T10:21:58Z --- A note whose frontmatter YAML cannot be parsed; it should degrade to a low-signal candidate. diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/unparseable-date.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/unparseable-date.md index 6160437e..b00c7b28 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/unparseable-date.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/normalize/unparseable-date.md @@ -2,8 +2,8 @@ title: Note with an unparseable last-verified recordType: assertion diataxis: reference -created: 2026-01-01 -updated: 2026-01-01 +created: 2026-01-01T08:03:44Z +updated: 2026-01-01T14:35:09Z tags: [meta] last-verified: not-a-date --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/2024-archive/legacy-runbook.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/2024-archive/legacy-runbook.md index 2ca10c78..d5760ab8 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/2024-archive/legacy-runbook.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/2024-archive/legacy-runbook.md @@ -2,8 +2,8 @@ title: Legacy archival runbook recordType: assertion diataxis: howto -created: 2024-03-01 -updated: 2024-03-01 +created: 2024-03-01T09:17:05Z +updated: 2024-03-01T15:58:33Z tags: [archive] --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/2026-05-01-meeting-notes.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/2026-05-01-meeting-notes.md index 3c347209..4b04fc4f 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/2026-05-01-meeting-notes.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/2026-05-01-meeting-notes.md @@ -2,8 +2,8 @@ title: Meeting notes recordType: assertion diataxis: note -created: 2026-05-01 -updated: 2026-05-01 +created: 2026-05-01T07:46:29Z +updated: 2026-05-01T13:41:50Z tags: [meeting] --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/2026-06-01/daily-log.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/2026-06-01/daily-log.md index 316995ca..c181bb2a 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/2026-06-01/daily-log.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/2026-06-01/daily-log.md @@ -2,8 +2,8 @@ title: Daily log recordType: assertion diataxis: note -created: 2026-06-01 -updated: 2026-06-01 +created: 2026-06-01T10:34:12Z +updated: 2026-06-01T17:22:08Z tags: [journal] --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/mid-guide.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/mid-guide.md index 0493aaad..064ad414 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/mid-guide.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/mid-guide.md @@ -2,8 +2,8 @@ title: Interim deployment guide recordType: assertion diataxis: howto -created: 2025-09-01 -updated: 2025-09-01 +created: 2025-09-01T08:58:37Z +updated: 2025-09-01T14:09:24Z tags: [deploy] superseded-by: new-guide.md --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/multi-match.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/multi-match.md index 54c86980..b0c0c25a 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/multi-match.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/multi-match.md @@ -2,8 +2,8 @@ title: Multi-match snippet fixture recordType: assertion diataxis: howto -created: 2026-03-01 -updated: 2026-03-01 +created: 2026-03-01T09:05:51Z +updated: 2026-03-01T16:13:47Z tags: [test] --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/new-guide.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/new-guide.md index 29171387..d2744bbc 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/new-guide.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/new-guide.md @@ -2,9 +2,10 @@ title: Current deployment guide recordType: assertion diataxis: howto -created: 2026-04-01 -updated: 2026-04-01 +created: 2026-04-01T07:39:18Z +updated: 2026-04-01T12:51:36Z tags: [deploy, stable] +# Deliberately bare to exercise the legacy YYYY-MM-DD age-parsing path of `computeAgeDays`. last-verified: 2026-04-15 --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/old-guide.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/old-guide.md index 9bc40fb6..7304a4de 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/old-guide.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/old-guide.md @@ -2,8 +2,8 @@ title: Old deployment guide recordType: assertion diataxis: howto -created: 2025-06-01 -updated: 2025-06-01 +created: 2025-06-01T10:12:40Z +updated: 2025-06-01T15:33:29Z tags: [deploy, deprecated] superseded-by: mid-guide.md --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/streams.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/streams.md index f8761562..43911aef 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/streams.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/streams.md @@ -2,8 +2,8 @@ title: Working with Node.js streams recordType: assertion diataxis: howto -created: 2026-01-10 -updated: 2026-01-10 +created: 2026-01-10T08:24:09Z +updated: 2026-01-10T14:47:55Z tags: [nodejs, streams] --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/sub/hooks.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/sub/hooks.md index 6e3885d4..60bc91b6 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/sub/hooks.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/sub/hooks.md @@ -2,8 +2,8 @@ title: React hooks reference recordType: assertion diataxis: reference -created: 2026-02-01 -updated: 2026-02-01 +created: 2026-02-01T09:41:33Z +updated: 2026-02-01T16:28:02Z tags: [react, hooks] --- diff --git a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/unrelated.md b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/unrelated.md index eefd5856..9c0df1b4 100644 --- a/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/unrelated.md +++ b/packages/agents/src/kb-retrieve/__tests__/fixtures/notes-vault/unrelated.md @@ -2,8 +2,8 @@ title: Brewing coffee recordType: assertion diataxis: howto -created: 2026-03-01 -updated: 2026-03-01 +created: 2026-03-01T07:53:16Z +updated: 2026-03-01T13:24:40Z tags: [kitchen] --- diff --git a/packages/factory/src/server/adapters/__tests__/status-adapter.test.ts b/packages/factory/src/server/adapters/__tests__/status-adapter.test.ts index b120b08b..22220880 100644 --- a/packages/factory/src/server/adapters/__tests__/status-adapter.test.ts +++ b/packages/factory/src/server/adapters/__tests__/status-adapter.test.ts @@ -558,7 +558,7 @@ describe('parseStatusFile', () => { projectRoot: '/test', branch: 'main', task: 'test', - startedAt: '2026-01-01', + startedAt: '2026-01-01T08:17:34Z', status: 'completed', // missing phases }); diff --git a/packages/kb/src/frontmatter/__tests__/fixtures/howto-typical.md b/packages/kb/src/frontmatter/__tests__/fixtures/howto-typical.md index 24df89bb..32144c8e 100644 --- a/packages/kb/src/frontmatter/__tests__/fixtures/howto-typical.md +++ b/packages/kb/src/frontmatter/__tests__/fixtures/howto-typical.md @@ -1,8 +1,8 @@ --- title: How to rebase onto main recordType: assertion -created: 2026-05-01 -updated: 2026-05-14 +created: 2026-05-01T09:22:35Z +updated: 2026-05-14T15:08:51Z tags: [git, rebase] --- diff --git a/packages/kb/src/frontmatter/__tests__/fixtures/malformed-yaml.md b/packages/kb/src/frontmatter/__tests__/fixtures/malformed-yaml.md index 264a7601..7e01d9bd 100644 --- a/packages/kb/src/frontmatter/__tests__/fixtures/malformed-yaml.md +++ b/packages/kb/src/frontmatter/__tests__/fixtures/malformed-yaml.md @@ -2,7 +2,7 @@ title: Broken note recordType: assertion tags: [unclosed, list -created: 2026-05-01 +created: 2026-05-01T10:48:16Z --- # Note with malformed YAML frontmatter diff --git a/packages/kb/src/frontmatter/__tests__/fixtures/unusual-whitespace.md b/packages/kb/src/frontmatter/__tests__/fixtures/unusual-whitespace.md index 5d416478..a1f5a0ca 100644 --- a/packages/kb/src/frontmatter/__tests__/fixtures/unusual-whitespace.md +++ b/packages/kb/src/frontmatter/__tests__/fixtures/unusual-whitespace.md @@ -1,8 +1,8 @@ --- title: Note with irregular spacing recordType: assertion -created: 2026-05-01 -updated: 2026-05-14 +created: 2026-05-01T08:05:47Z +updated: 2026-05-14T14:12:38Z tags: - git - whitespace diff --git a/packages/kb/src/frontmatter/__tests__/fixtures/with-extra-fields.md b/packages/kb/src/frontmatter/__tests__/fixtures/with-extra-fields.md index 3fed2bdc..b2f0cd3e 100644 --- a/packages/kb/src/frontmatter/__tests__/fixtures/with-extra-fields.md +++ b/packages/kb/src/frontmatter/__tests__/fixtures/with-extra-fields.md @@ -1,11 +1,11 @@ --- title: Note with optional fields recordType: assertion -created: 2026-05-01 -updated: 2026-05-14 +created: 2026-05-01T07:41:09Z +updated: 2026-05-14T16:53:24Z tags: [git, reference] type: reference -last-verified: 2026-05-10 +last-verified: 2026-05-10T11:34:09Z applies-to: [git 2.45+, Bitbucket Cloud] sources: [https://git-scm.com/docs/git-rebase] --- diff --git a/packages/kb/src/frontmatter/__tests__/frontmatter-schema.test.ts b/packages/kb/src/frontmatter/__tests__/frontmatter-schema.test.ts index 53a9405f..5d9dc7f0 100644 --- a/packages/kb/src/frontmatter/__tests__/frontmatter-schema.test.ts +++ b/packages/kb/src/frontmatter/__tests__/frontmatter-schema.test.ts @@ -5,8 +5,8 @@ import { frontmatterSchema } from '../frontmatter-schema.ts'; const validFrontmatter = { title: 'A note', recordType: 'assertion', - created: '2026-05-01', - updated: '2026-05-14', + created: '2026-05-01T10:17:29Z', + updated: '2026-05-14T14:39:58Z', tags: ['git', 'rebase'], extra: {}, }; diff --git a/packages/kb/src/frontmatter/__tests__/parse-note.test.ts b/packages/kb/src/frontmatter/__tests__/parse-note.test.ts index 59798d25..082721a9 100644 --- a/packages/kb/src/frontmatter/__tests__/parse-note.test.ts +++ b/packages/kb/src/frontmatter/__tests__/parse-note.test.ts @@ -15,8 +15,8 @@ describe(parseNoteContent, () => { expect(note.frontmatter).toEqual({ title: 'How to rebase onto main', recordType: 'assertion', - created: '2026-05-01', - updated: '2026-05-14', + created: '2026-05-01T09:22:35Z', + updated: '2026-05-14T15:08:51Z', tags: ['git', 'rebase'], extra: {}, }); @@ -62,7 +62,7 @@ describe(parseNoteContent, () => { expect(note.frontmatter?.extra).toEqual({ type: 'reference', - 'last-verified': '2026-05-10', + 'last-verified': '2026-05-10T11:34:09Z', 'applies-to': ['git 2.45+', 'Bitbucket Cloud'], sources: ['https://git-scm.com/docs/git-rebase'], }); diff --git a/packages/kb/src/frontmatter/__tests__/round-trip.test.ts b/packages/kb/src/frontmatter/__tests__/round-trip.test.ts index 6b7c2e98..b3942a69 100644 --- a/packages/kb/src/frontmatter/__tests__/round-trip.test.ts +++ b/packages/kb/src/frontmatter/__tests__/round-trip.test.ts @@ -50,8 +50,8 @@ describe('frontmatter round-trip idempotence', () => { const frontmatter: Frontmatter = { title: keyword, recordType: 'assertion', - created: '2026-05-01', - updated: '2026-05-14', + created: '2026-05-01T07:48:16Z', + updated: '2026-05-14T16:21:44Z', tags: [], extra: {}, }; @@ -92,8 +92,8 @@ describe('frontmatter round-trip idempotence', () => { const frontmatter: Frontmatter = { title: 'a note', recordType: 'assertion', - created: '2026-05-01', - updated: '2026-05-14', + created: '2026-05-01T07:48:16Z', + updated: '2026-05-14T16:21:44Z', tags: [], extra: { token: literal }, }; @@ -116,8 +116,8 @@ describe('frontmatter round-trip idempotence', () => { const frontmatter: Frontmatter = { title: 'a note', recordType: 'assertion', - created: '2026-05-01', - updated: '2026-05-14', + created: '2026-05-01T07:48:16Z', + updated: '2026-05-14T16:21:44Z', tags: [], extra: { note: value }, }; @@ -137,8 +137,8 @@ describe('frontmatter round-trip idempotence', () => { const frontmatter: Frontmatter = { title: 'a note', recordType: 'assertion', - created: '2026-05-01', - updated: '2026-05-14', + created: '2026-05-01T07:48:16Z', + updated: '2026-05-14T16:21:44Z', tags: [], extra: { count }, }; @@ -154,8 +154,8 @@ describe('frontmatter round-trip idempotence', () => { const frontmatter: Frontmatter = { title: 'a note', recordType: 'assertion', - created: '2026-05-01', - updated: '2026-05-14', + created: '2026-05-01T07:48:16Z', + updated: '2026-05-14T16:21:44Z', tags: [], extra: { flag }, }; @@ -170,8 +170,8 @@ describe('frontmatter round-trip idempotence', () => { const frontmatter: Frontmatter = { title: 'a note', recordType: 'assertion', - created: '2026-05-01', - updated: '2026-05-14', + created: '2026-05-01T07:48:16Z', + updated: '2026-05-14T16:21:44Z', tags: [], extra: { maybe: null }, }; @@ -187,8 +187,8 @@ describe('frontmatter round-trip idempotence', () => { const frontmatter: Frontmatter = { title: 'a note', recordType: 'assertion', - created: '2026-05-01', - updated: '2026-05-14', + created: '2026-05-01T07:48:16Z', + updated: '2026-05-14T16:21:44Z', tags: [], extra: { meta }, }; diff --git a/packages/kb/src/frontmatter/__tests__/write-frontmatter.test.ts b/packages/kb/src/frontmatter/__tests__/write-frontmatter.test.ts index e38aa1bb..82595bb4 100644 --- a/packages/kb/src/frontmatter/__tests__/write-frontmatter.test.ts +++ b/packages/kb/src/frontmatter/__tests__/write-frontmatter.test.ts @@ -13,8 +13,8 @@ describe(writeFrontmatter, () => { '---', 'title: How to rebase onto main', 'recordType: assertion', - 'created: 2026-05-01', - 'updated: 2026-05-14', + 'created: 2026-05-01T08:14:22Z', + 'updated: 2026-05-14T13:47:05Z', 'tags: [git, rebase]', ]); }); @@ -64,12 +64,12 @@ describe(writeFrontmatter, () => { it('emits extra fields after the required core in insertion order', () => { const frontmatter = makeFrontmatter({ - extra: { 'last-verified': '2026-05-10', 'applies-to': ['git 2.45+'] }, + extra: { 'last-verified': '2026-05-10T10:05:47Z', 'applies-to': ['git 2.45+'] }, }); const output = writeFrontmatter({ frontmatter, body: '' }); const lines = output.split('\n'); - expect(lines[6]).toBe('last-verified: 2026-05-10'); + expect(lines[6]).toBe('last-verified: 2026-05-10T10:05:47Z'); expect(lines[7]).toBe('applies-to: [git 2.45+]'); }); @@ -86,8 +86,8 @@ function makeFrontmatter(overrides: Partial = {}): Frontmatter { return { title: 'How to rebase onto main', recordType: 'assertion', - created: '2026-05-01', - updated: '2026-05-14', + created: '2026-05-01T08:14:22Z', + updated: '2026-05-14T13:47:05Z', tags: ['git', 'rebase'], extra: {}, ...overrides, diff --git a/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/Links.md b/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/Links.md index 558e4def..65f90b77 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/Links.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/Links.md @@ -1,8 +1,8 @@ --- title: Links recordType: assertion -created: 2026-05-01 -updated: 2026-05-01 +created: 2026-05-01T07:38:12Z +updated: 2026-05-01T16:08:41Z tags: [example] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/Paths.md b/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/Paths.md index 68c1d61d..7d6c25e5 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/Paths.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/Paths.md @@ -1,8 +1,8 @@ --- title: Paths recordType: assertion -created: 2026-05-01 -updated: 2026-05-01 +created: 2026-05-01T09:14:33Z +updated: 2026-05-01T14:55:02Z tags: [example] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/Target alpha.md b/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/Target alpha.md index e9540807..46c3fa22 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/Target alpha.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/Target alpha.md @@ -1,8 +1,8 @@ --- title: Target alpha recordType: assertion -created: 2026-05-01 -updated: 2026-05-01 +created: 2026-05-01T08:05:51Z +updated: 2026-05-01T15:19:33Z tags: [example] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/sub-a/Shared.md b/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/sub-a/Shared.md index 1d24e90c..f5c38e44 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/sub-a/Shared.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/sub-a/Shared.md @@ -1,8 +1,8 @@ --- title: Shared recordType: assertion -created: 2026-05-01 -updated: 2026-05-01 +created: 2026-05-01T07:52:09Z +updated: 2026-05-01T16:31:07Z tags: [example] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/sub-b/Shared.md b/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/sub-b/Shared.md index 660e697e..23c8afbe 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/sub-b/Shared.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity-cross-note/notes/sub-b/Shared.md @@ -1,8 +1,8 @@ --- title: Shared recordType: assertion -created: 2026-05-01 -updated: 2026-05-01 +created: 2026-05-01T09:41:26Z +updated: 2026-05-01T14:27:49Z tags: [example] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/parity/notes/01-clean-howto.md b/packages/kb/src/rules/__tests__/fixtures/parity/notes/01-clean-howto.md index 854c7016..55066da7 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity/notes/01-clean-howto.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity/notes/01-clean-howto.md @@ -1,8 +1,8 @@ --- title: How to rebase a feature branch recordType: assertion -created: 2026-04-12 -updated: 2026-05-08 +created: 2026-04-12T07:19:44Z +updated: 2026-05-08T16:44:25Z tags: [git, rebase] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/parity/notes/02-clean-concept.md b/packages/kb/src/rules/__tests__/fixtures/parity/notes/02-clean-concept.md index 22b82b40..a06feb6e 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity/notes/02-clean-concept.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity/notes/02-clean-concept.md @@ -1,10 +1,10 @@ --- title: What a monorepo buys you recordType: assertion -created: 2026-03-01 -updated: 2026-05-01 +created: 2026-03-01T09:08:17Z +updated: 2026-05-01T14:36:58Z tags: [monorepos, tooling] -last-verified: 2026-05-01 +last-verified: 2026-05-01T11:02:55Z --- # What a monorepo buys you diff --git a/packages/kb/src/rules/__tests__/fixtures/parity/notes/03-clean-reference.md b/packages/kb/src/rules/__tests__/fixtures/parity/notes/03-clean-reference.md index d0e5f9c3..58c5371f 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity/notes/03-clean-reference.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity/notes/03-clean-reference.md @@ -1,8 +1,8 @@ --- title: Git rebase flag reference recordType: assertion -created: 2026-02-15 -updated: 2026-05-10 +created: 2026-02-15T08:47:05Z +updated: 2026-05-10T15:07:31Z tags: [git, reference] applies-to: [git 2.45+] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/parity/notes/04-clean-tutorial.md b/packages/kb/src/rules/__tests__/fixtures/parity/notes/04-clean-tutorial.md index 658f4ca6..06f52483 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity/notes/04-clean-tutorial.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity/notes/04-clean-tutorial.md @@ -1,8 +1,8 @@ --- title: Build your first MCP server recordType: assertion -created: 2026-04-01 -updated: 2026-05-12 +created: 2026-04-01T07:26:39Z +updated: 2026-05-12T16:22:44Z tags: [mcp, tutorial] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/parity/notes/09-unknown-type.md b/packages/kb/src/rules/__tests__/fixtures/parity/notes/09-unknown-type.md index eb14a061..08da4d24 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity/notes/09-unknown-type.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity/notes/09-unknown-type.md @@ -1,8 +1,8 @@ --- title: Note with a record type outside the vocabulary recordType: postmortem -created: 2026-04-12 -updated: 2026-05-08 +created: 2026-04-12T08:56:03Z +updated: 2026-05-08T15:50:09Z tags: [incident] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/parity/notes/10-bad-date-format.md b/packages/kb/src/rules/__tests__/fixtures/parity/notes/10-bad-date-format.md index 01013857..fb6c91ba 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity/notes/10-bad-date-format.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity/notes/10-bad-date-format.md @@ -2,7 +2,7 @@ title: Note with a wrongly formatted date recordType: assertion created: 2026/04/12 -updated: 2026-05-08 +updated: 2026-05-08T16:03:42Z tags: [git] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/parity/notes/11-bad-date-calendar.md b/packages/kb/src/rules/__tests__/fixtures/parity/notes/11-bad-date-calendar.md index 6221810a..c584f193 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity/notes/11-bad-date-calendar.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity/notes/11-bad-date-calendar.md @@ -1,7 +1,7 @@ --- title: Note with an impossible calendar date recordType: assertion -created: 2026-04-12 +created: 2026-04-12T09:17:28Z updated: 2026-02-30 tags: [git] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/parity/notes/12-tags-not-list.md b/packages/kb/src/rules/__tests__/fixtures/parity/notes/12-tags-not-list.md index bae65a03..62b77d15 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity/notes/12-tags-not-list.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity/notes/12-tags-not-list.md @@ -1,8 +1,8 @@ --- title: Note whose tags field is a scalar recordType: assertion -created: 2026-04-12 -updated: 2026-05-08 +created: 2026-04-12T08:02:41Z +updated: 2026-05-08T15:26:14Z tags: git --- diff --git a/packages/kb/src/rules/__tests__/fixtures/parity/notes/13-aliased-tags.md b/packages/kb/src/rules/__tests__/fixtures/parity/notes/13-aliased-tags.md index cb1b6595..bce8f55d 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity/notes/13-aliased-tags.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity/notes/13-aliased-tags.md @@ -1,8 +1,8 @@ --- title: Note that uses alias tags recordType: assertion -created: 2026-04-12 -updated: 2026-05-08 +created: 2026-04-12T07:48:15Z +updated: 2026-05-08T16:39:55Z tags: [vcs, reactjs, git] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/parity/notes/15-clean-with-optional.md b/packages/kb/src/rules/__tests__/fixtures/parity/notes/15-clean-with-optional.md index 4f3614c9..e9af3c75 100644 --- a/packages/kb/src/rules/__tests__/fixtures/parity/notes/15-clean-with-optional.md +++ b/packages/kb/src/rules/__tests__/fixtures/parity/notes/15-clean-with-optional.md @@ -1,10 +1,10 @@ --- title: Note exercising the optional field set recordType: assertion -created: 2026-01-10 -updated: 2026-05-14 +created: 2026-01-10T08:24:53Z +updated: 2026-05-14T15:11:08Z tags: [git, reference] -last-verified: 2026-05-14 +last-verified: 2026-05-14T10:39:41Z applies-to: [git 2.45+, Bitbucket Cloud] sources: [https://git-scm.com/docs/git-rebase] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/rule-cases/aliased-tag.md b/packages/kb/src/rules/__tests__/fixtures/rule-cases/aliased-tag.md index 749c9a08..e8d35e03 100644 --- a/packages/kb/src/rules/__tests__/fixtures/rule-cases/aliased-tag.md +++ b/packages/kb/src/rules/__tests__/fixtures/rule-cases/aliased-tag.md @@ -1,8 +1,8 @@ --- title: Note with an aliased tag recordType: assertion -created: 2026-05-01 -updated: 2026-05-14 +created: 2026-05-01T08:21:47Z +updated: 2026-05-14T15:42:18Z tags: [vcs, react] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/rule-cases/bad-date.md b/packages/kb/src/rules/__tests__/fixtures/rule-cases/bad-date.md index bd4fd244..3c2e91d5 100644 --- a/packages/kb/src/rules/__tests__/fixtures/rule-cases/bad-date.md +++ b/packages/kb/src/rules/__tests__/fixtures/rule-cases/bad-date.md @@ -2,7 +2,7 @@ title: Note with a malformed date recordType: assertion created: 2026-13-40 -updated: 2026-05-14 +updated: 2026-05-14T16:08:41Z tags: [git] --- diff --git a/packages/kb/src/rules/__tests__/fixtures/rule-cases/malformed-yaml.md b/packages/kb/src/rules/__tests__/fixtures/rule-cases/malformed-yaml.md index b90acb46..d9ec53b4 100644 --- a/packages/kb/src/rules/__tests__/fixtures/rule-cases/malformed-yaml.md +++ b/packages/kb/src/rules/__tests__/fixtures/rule-cases/malformed-yaml.md @@ -2,7 +2,7 @@ title: Note with malformed YAML recordType: assertion tags: [unclosed, list -created: 2026-05-01 +created: 2026-05-01T08:05:51Z --- # Note with malformed YAML diff --git a/packages/kb/src/rules/__tests__/fixtures/rule-cases/tags-not-list.md b/packages/kb/src/rules/__tests__/fixtures/rule-cases/tags-not-list.md index 067dffed..fec9a308 100644 --- a/packages/kb/src/rules/__tests__/fixtures/rule-cases/tags-not-list.md +++ b/packages/kb/src/rules/__tests__/fixtures/rule-cases/tags-not-list.md @@ -1,8 +1,8 @@ --- title: Note with scalar tags recordType: assertion -created: 2026-05-01 -updated: 2026-05-14 +created: 2026-05-01T08:33:58Z +updated: 2026-05-14T15:58:12Z tags: git --- diff --git a/packages/kb/src/rules/__tests__/fixtures/rule-cases/unknown-record-type.md b/packages/kb/src/rules/__tests__/fixtures/rule-cases/unknown-record-type.md index 6315128c..903d1f1a 100644 --- a/packages/kb/src/rules/__tests__/fixtures/rule-cases/unknown-record-type.md +++ b/packages/kb/src/rules/__tests__/fixtures/rule-cases/unknown-record-type.md @@ -1,8 +1,8 @@ --- title: Note with an unknown record type recordType: postmortem -created: 2026-05-01 -updated: 2026-05-14 +created: 2026-05-01T07:19:44Z +updated: 2026-05-14T16:44:25Z tags: [git] --- diff --git a/packages/kb/src/rules/__tests__/frontmatter-rule.test.ts b/packages/kb/src/rules/__tests__/frontmatter-rule.test.ts index 1b56a64e..7ee1349f 100644 --- a/packages/kb/src/rules/__tests__/frontmatter-rule.test.ts +++ b/packages/kb/src/rules/__tests__/frontmatter-rule.test.ts @@ -92,8 +92,8 @@ describe('frontmatterRule', () => { '---', 'title: Relation field under test', 'recordType: assertion', - 'created: 2026-05-01', - 'updated: 2026-05-14', + 'created: 2026-05-01T08:33:51Z', + 'updated: 2026-05-14T15:42:18Z', 'tags: [git]', `${field}: a-single-ref`, '---', @@ -115,8 +115,8 @@ describe('frontmatterRule', () => { '---', 'title: Note with relation lists', 'recordType: assertion', - 'created: 2026-05-01', - 'updated: 2026-05-14', + 'created: 2026-05-01T08:33:51Z', + 'updated: 2026-05-14T15:42:18Z', 'tags: [git]', "addressed-by: ['abc1234', 'owner/repo#42']", "addresses: ['../problem.md']", @@ -134,8 +134,8 @@ describe('frontmatterRule', () => { '---', 'title: Valid note', 'recordType: assertion', - 'created: 2026-05-01', - 'updated: 2026-05-14', + 'created: 2026-05-01T08:33:51Z', + 'updated: 2026-05-14T15:42:18Z', 'tags: [git]', '---', '', @@ -203,8 +203,8 @@ describe('frontmatterRule', () => { const content = [ '---', 'title: Note with no recordType', - 'created: 2026-05-01', - 'updated: 2026-05-14', + 'created: 2026-05-01T08:33:51Z', + 'updated: 2026-05-14T15:42:18Z', 'tags: [git]', '---', '', @@ -334,9 +334,9 @@ describe('frontmatterRule across record types', () => { /** Builds a minimal valid assertion note with one date field overridden, then runs the frontmatter rule against it. */ function checkDateField(field: 'created' | 'updated' | 'last-verified', value: string): Finding[] { const defaults: Record<'created' | 'updated' | 'last-verified', string> = { - created: '2026-05-01', - updated: '2026-05-14', - 'last-verified': '2026-05-14', + created: '2026-05-01T08:33:51Z', + updated: '2026-05-14T15:42:18Z', + 'last-verified': '2026-05-14T11:09:47Z', }; const lines = { ...defaults, [field]: value }; const content = [ diff --git a/packages/kb/src/rules/__tests__/run-rules.test.ts b/packages/kb/src/rules/__tests__/run-rules.test.ts index 1b942edb..9f0b22e2 100644 --- a/packages/kb/src/rules/__tests__/run-rules.test.ts +++ b/packages/kb/src/rules/__tests__/run-rules.test.ts @@ -13,8 +13,8 @@ const VALID_NOTE = [ '---', 'title: Valid note', 'recordType: assertion', - 'created: 2026-05-01', - 'updated: 2026-05-14', + 'created: 2026-05-01T09:38:14Z', + 'updated: 2026-05-14T14:55:02Z', 'tags: [vcs]', '---', '', diff --git a/packages/kb/src/rules/__tests__/tag-alias-rule.test.ts b/packages/kb/src/rules/__tests__/tag-alias-rule.test.ts index 47768dcf..a264ee0f 100644 --- a/packages/kb/src/rules/__tests__/tag-alias-rule.test.ts +++ b/packages/kb/src/rules/__tests__/tag-alias-rule.test.ts @@ -41,8 +41,8 @@ describe('tagAliasRule', () => { '---', 'title: Canonical tags', 'recordType: assertion', - 'created: 2026-05-01', - 'updated: 2026-05-14', + 'created: 2026-05-01T07:52:33Z', + 'updated: 2026-05-14T16:08:41Z', 'tags: [git, react]', '---', '', @@ -57,8 +57,8 @@ describe('tagAliasRule', () => { '---', 'title: Multiple aliases', 'recordType: assertion', - 'created: 2026-05-01', - 'updated: 2026-05-14', + 'created: 2026-05-01T07:52:33Z', + 'updated: 2026-05-14T16:08:41Z', 'tags: [vcs, version-control, react]', '---', '', diff --git a/packages/run-core/src/parsers/__tests__/run-data-parser.test.ts b/packages/run-core/src/parsers/__tests__/run-data-parser.test.ts index 74c06f2c..5403f0bf 100644 --- a/packages/run-core/src/parsers/__tests__/run-data-parser.test.ts +++ b/packages/run-core/src/parsers/__tests__/run-data-parser.test.ts @@ -559,7 +559,7 @@ describe('parseStatusFile', () => { projectRoot: '/test', branch: 'main', task: 'test', - startedAt: '2026-01-01', + startedAt: '2026-01-01T09:42:11Z', status: 'completed', // missing phases });