Skip to content
Architecture decisionsView source on GitHub ↗

0008: Independently version the frontmatter lint package

  • Status: Accepted
  • Date: 2026-10-21
  • Scope: Supersedes the two-package enumeration in ADR 0003 and ADR 0006; preserves their workspace discovery, ownership, and versioning decisions.
  • Issue: #343

Context

Frontmatter key ordering is a reusable lint contract. It must not require the Astro generator, Sveltia runtime, or content-model package to execute. A template snapshot cannot distribute an unpublished registry dependency safely.

Decision

Add @rm-industries/markdownlint-frontmatter under the existing packages/* workspace discovery. Give it its own semantic version, changelog, public export, MIT license, package allowlist, and markdownlint-frontmatter-v<version> tag. Apply ADR 0006’s pre-1.0 minor-breaking and post-1.0 major-breaking policy. Changes to rule names, configuration, diagnostic/fix guarantees, supported peers, or runtime minimums are public compatibility changes.

Keep the generic rule and structural model projection in this package. Model field insertion order remains the authoring authority; collection-specific CLI2 configuration derives its key list. Oxfmt owns formatting, this rule owns key order, and Astro/model validation owns schema semantics. The rule is neither a YAML formatter nor a schema validator.

Reuse the existing manual package-release registry and protected publication workflow. Manual dispatch only prepares artifacts; package tags require the npm-release environment and provenance. Do not add an automatic release source or a template synchronization event for this package. Browser formatter #349 can extend the same registry independently without becoming a prerequisite.

Consequences

Normal starters keep registry-only installs until a maintainer publishes the plugin. The isolated packed-artifact adoption fixture proves the handoff while explicitly leaving general distribution pending. Existing sites adopt reviewed source and configuration changes with rollback; regeneration is not an upgrade. Historical accepted ADR bodies remain unchanged.