Skip to content

docs: fix pre-tag CHANGELOG and doc blockers before v0.4.0 - #305

Merged
dean0x merged 1 commit into
wave/v0.4.0-wave1from
ticket/wave-release-notes
Aug 17, 2026
Merged

docs: fix pre-tag CHANGELOG and doc blockers before v0.4.0#305
dean0x merged 1 commit into
wave/v0.4.0-wave1from
ticket/wave-release-notes

Conversation

@dean0x

@dean0x dean0x commented Aug 16, 2026

Copy link
Copy Markdown
Owner

Summary

  • Corrects three false statements in CHANGELOG that would ship with the v0.4.0 tag
  • Lifts the lint JSON wire-contract ledger to its own ### **BREAKING** heading so consumers skimming ### headings find wire changes without reading interpolation prose
  • Merges duplicate ### Fixed, ### Added, ### Changed sections and reorders to Keep a Changelog order
  • Widens LintDiagnostic.help and .span TypeScript types to include null (matching actual wire format) and flags the semver event in CHANGELOG
  • Fixes stale basePath: required documentation (code defaults to cwd, not required)
  • Fixes seven additional factual/cosmetic issues (rule count, wasm size, missing c9265b4 entry, ci.yml budget ledger, citation drift in Rust source)

Changes

A - Three CHANGELOG false statements corrected

  • A1: Browser entry point claim: exports lint, lintVirtual, LINT_RULE_NAMES; only lintFile is absent
  • A2: Stdin lint code frames use <stdin> as source label (not "input.mds") since cbb11d4
  • A3: check() accepts { vars?, basePath? } not only { vars? }

B - Wire ledger lifted to its own BREAKING section

#### Lint JSON wire contract was nested as a child of ### **BREAKING** — Interpolation syntax. Lifted to ### **BREAKING** — lint JSON wire contract as a sibling.

C - Duplicate sections merged

Merged the two ### Fixed, two ### Added, and two ### Changed sections in [Unreleased]; reordered to Added, Changed, Deprecated, BREAKING, Fixed, Security.

D1 - TypeScript type widening (semver event)

LintDiagnostic.help?: string | null and span?: LintSpan | null -- the JSON wire format has always emitted null for these fields; only the declared type was narrower. Matching the already-correct fix_edits?: ... | null pattern. Flagged in CHANGELOG. Updated crates/mds-napi/README.md and packages/mds/README.md.

D2 - basePath documentation corrected

Changed "required when..." to "defaults to cwd when omitted" with a caution about silent wrong-directory resolution.

E - Five smaller factual fixes

  • E1: examples/linting/README.md "nine" -> "ten" rules
  • E2: CHANGELOG wasm size "~808 KB" -> CI-measured 836,126 bytes (Binaryen v129)
  • E3: Added CHANGELOG entry for c9265b4 (wasm-opt flags + rustc 1.96.0 pin)
  • E4: ci.yml budget ledger updated from local estimate 841,937 to CI-measured 836,126
  • F: Replaced stale line-number citations in output.rs and cli_lint.rs with symbolic function-name references

Breaking Changes

D1 type widening is technically a semver event for TypeScript consumers checking diag.span !== undefined. After this change both undefined and null indicate no span. See CHANGELOG entry.

Reviewer Focus Areas

  • CHANGELOG structure: Added section is now first, Changed second, deprecated third, BREAKING sections in their natural order, Fixed near end, Security last
  • Wire ledger at its own ### **BREAKING** — lint JSON wire contract heading
  • No content was dropped from any merged section
  • TypeScript build passes (tsc -p tsconfig.json exits 0)
  • cargo fmt --all --check exits 0, verify-versions.mjs exits 0, verify-no-control-bytes.mjs exits 0

A — Three CHANGELOG claims falsified by wave commits:
- A1: browser entry point now exports lint, lintVirtual, LINT_RULE_NAMES;
  lintFile is intentionally absent (no node:fs in browser environments).
- A2: stdin lint code frames use <stdin> as source label (not "input.mds")
  since cbb11d4.
- A3: check() / checkFile() accept { vars?, basePath? }, not only { vars? }.

B — Lift lint JSON wire-contract ledger to its own ### **BREAKING** heading
as a sibling of the interpolation section, not a child. Consumers skimming
### headings can now find the wire changes without reading interpolation prose.

C — Merge duplicate ### Fixed, ### Added, ### Changed sections in [Unreleased]
and reorder into Keep a Changelog order (Added, Changed, Deprecated,
BREAKING sections, Fixed, Security).

D1 — Widen LintDiagnostic.help and .span to include null (types.ts, READMEs):
- packages/mds/src/types.ts: help?: string | null; span?: LintSpan | null
- packages/mds/README.md: note that help, span, fix_edits are always-present
  JSON keys whose value is null when absent
- crates/mds-napi/README.md: same correction
Semver event flagged in CHANGELOG: consumers checking diag.span !== undefined
must now also guard against null.

D2 — Fix "required" basePath language (code defaults to cwd):
- types.ts CheckOptions and LintOptions JSDoc
- packages/mds/README.md option tables
User-facing caution added: omitting basePath resolves against cwd, which
succeeds silently but may resolve against the wrong directory.

E1 — examples/linting/README.md line 3: "nine" -> "ten" rules.

E2 — CHANGELOG wasm size figure corrected from "~808 KB" to CI-measured
836,126 bytes (Binaryen v129).

E3 — Add CHANGELOG entry for c9265b4 (wasm-opt flag tuning + rustc 1.96.0
pin; the only wave commit previously missing a CHANGELOG entry).

E4 — ci.yml budget ledger: replace local estimate 841,937 with CI-measured
836,126 (Binaryen v129, CI run 31946611856); note local wasm-opt v117 reads
roughly 2-3 KB higher.

F — Replace stale line-number citations in output.rs and cli_lint.rs with
symbolic function-name references (avoids citation drift on line insertions).

Co-Authored-By: Claude <noreply@anthropic.com>
@dean0x
dean0x merged commit e23834d into wave/v0.4.0-wave1 Aug 17, 2026
16 checks passed
@dean0x
dean0x deleted the ticket/wave-release-notes branch August 17, 2026 00:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant