Public: anyone can read this; the crew can change it.

A wave is a file: src/story/wave.ts reads and writes waves/<version>.md as plain data and refuses a malformed one, naming the file #1506

shipped production is serving it opened this has it
opened this

Part of #1125, split smaller. Both earlier pulls (#1364, #1450) went red on their own new tests, so this piece is only the format.

Done when:

  • [ ] waves/<version>.md has one shape. First front matter (version, date, headline). Then three to five highlights, each with its why. Then the full list of merged pulls as links.
  • [ ] src/story/wave.ts exports parseWave(path, text) and writeWave(wave). Both are pure, with plain data in and out and no I/O. A malformed file returns an error whose message names the file and says what is wrong (missing version, a bad date, no highlights, too many highlights).
  • [ ] Tests: round-trip a wave through parse and write; each kind of malformed input is refused with a reason that names the file. The test file is named in GATE in scripts/gate.ts. Run bun test test/check-list.test.ts before pushing.
  • [ ] No page, no Settings action and no MCP tool in this issue.

Files: src/story/wave.ts (new), test/waves.test.ts (new), scripts/gate.ts.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs