Skip to content

MDS Roadmap — Post-v0.1.0 Progress Tracker #69

Description

@dean0x

MDS Roadmap

Master tracking issue for all planned work after the v0.1.0 release. Each item links to a detailed issue with its own PRD.

Status Key

  • ✅ Complete
  • 🚧 In Progress
  • ⚪ Not Started

Checkbox convention. A checked box means the referenced issue is closed. Partial
progress is recorded as a prose bullet with no checkbox, naming what landed and what
remains. This exists because (partial) / (doc half) qualifiers previously allowed
incomplete work into sections headed "landed" — readers scan checkboxes and section
headings before qualifier text.

v0.2.0 — Language Enrichment ✅

The core language gets the features users will hit first. Focus: make templates self-sufficient without external preprocessing.

Released: 2026-06-06v0.2.0


v0.3.0 — Production Readiness ✅

Bridge MDS from "template language" to "production LLM input format." Add the developer workflow tooling that makes daily use pleasant.

Released: 2026-06-28v0.3.0

Headline Features (Complete)

Tech-Debt Sweep (Complete)

Do-set — all 11 landed in PR #117 (88ddbcc):

Already Closed (verified done): #98, #101, #80, #77


v0.4.0 — Ecosystem Expansion ✅ SHIPPED

Expand reach beyond JS/TS. Add the quality-of-life tooling that mature languages provide.

Released: 2026-09-02 — tag v0.4.0 at 6673dc3,
cut by release run 33569514359 (attempt 2, after a
crates.io token rotation). Published and independently verified: mds-core and mds-cli at 0.4.0 on crates.io
(not yanked); all 15 @mdscript/* npm packages at 0.4.0 with SLSA provenance (8 published packages + 7 native
platform packages); the GitHub Release is live. The v0.4.0 milestone is closed (0 open / 18 closed).
Wave 1 closed in PR #308 (339df37), watch-correctness in PR #323 (b34d8ac), the dogfood defect sweep in
PR #335 (0cd08d6), release prep in PR #338 (df2fe71), the version bump in PR #343 (c0aa732), and the
CI-history gate fix in PR #344 (6673dc3).

Ship gate — cleared ✅

  • Fix the CHANGELOG LintConfig::from_rules entry — it documented a deprecation with migration path for a function REMOVED in 339df37. Nothing published ever exposed LintConfig::from_rules since lint/config.rs did not exist at v0.3.0, so it was not breaking; the entry now sits under ### Removed with the migration text dropped.
  • Clean the working tree: uncommitted .gitignore edit (+!.devflow/conventions.md). RELEASING.md pre-flight requires a clean working tree.
  • node scripts/bump-version.mjs 0.4.0, landed via CI-gated PR chore(release): v0.4.0 #343 (c0aa732), verified with node scripts/verify-pr-checks.mjs (PF-017) and merged with the exact printed command.
  • git tag -a v0.4.0 -m v0.4.0 && git push origin v0.4.0

Two release-prep fixes landed on main before the tag: PR #338 (df2fe71) — aarch64-musl link flag, linux-x64-musl now genuinely musl-linked behind a readelf gate, setup-zig pin, verifier allowance — and PR #344 (6673dc3) — the CI-history gate now asserts from the CI workflow run rather than branch protection. The release run itself needed a second attempt after a crates.io token rotation; recovery was a rerun of the staged run, never a re-tag. The run's gates all passed at 6673dc3: version-gate (synchronized versions, live credential probe, CI-history assertion), the A3 napi name↔loader gate, and the readelf musl-linkage assertion on both musl legs.

Headline Features — landed ✅

Fix / hardening waves — landed ✅

Wave 1 — pre-tag set ✅ all 12 closed in PR #308 (339df37)

Wire format — bytes consumers parse; cheap today, a semver event after the tag

Decisions resolved

Deprecation window

TS public surface

Community / release hygiene

Release-safety gates

Unplanned, forced during the wave

Watch correctness — landed ✅ PR #323 (b34d8ac)

New CI job watch-startup-race (ci.yml:395) runs the suite with the startup-race probe enabled.

✅ Did not block the tag — since resolved

⚪ Deferred past v0.4.0

Everything here was out of scope for the v0.4.0 tag and remains open. Items that have since
been scoped to v0.4.3 are listed in the v0.4.3 section below and are not repeated here.

Stale-open resolved:

Issue Status Evidence
#199 — stale .map sidecar on --inline landed in 85a4c05 (PR #183) build.rs:1326-1347 "Stale sidecar reconciliation (AC-FUNC-10)" calling verify_then_delete_map; test sm13_inline_build_removes_stale_sidecar at cli_source_map.rs:556-583 asserting !map_path.exists()

Closed as duplicate — tracked by the survivor:

Closed Survivor
#115 #114
#159 #136
#174 #235
#258 #157

#178 and #210 are likewise closed as duplicates; their analysis now lives in the surviving issues.


v0.4.1 — Release-Infrastructure Follow-ups ✅ (crates.io + npm 2026-09-03)

Shipped to crates.io and npm on 2026-09-03. The PyPI publish failed: pypa/gh-action-pypi-publish
was pinned to the SHA of an annotated tag object, which has no corresponding GHCR image, so the
publish step could not resolve its container. The GitHub Release was backfilled on 2026-09-04 with
--latest=false. v0.4.2 is the recovery release. The v0.4.1 milestone is closed and carries
no issues: every follow-up originally scoped to this section moved to v0.4.3 and is listed there.


v0.4.2 — First PyPI publication ✅ SHIPPED 2026-09-03

The recovery release for v0.4.1's failed PyPI step, and the first publication of markdown-script
to PyPI
: 8 distributions (7 cp311-abi3 wheels + 1 sdist) with PEP 740 attestations via OIDC
trusted publishing. The v0.4.2 milestone is closed.


v0.4.3 — Pipeline hardening + correctness batch 🚧

Milestone v0.4.3 is open with 23 issues (0 closed). Execution order is
housekeeping → pipeline hardening → correctness batch → release, one step per session.

Pipeline

Correctness

Docs


v0.5.0 — Advanced Features

Enable sharing and reuse across projects and teams.

The headline features are listed above. The v0.5.0 milestone (22 open / 3 closed) additionally
carries the tech debt and review deferrals catalogued under "Deferred past v0.4.0" — notably #182,
#222 and the Wave-1 deferrals #309#312 and #314. (#292 was closed as satisfied by v0.4.2.)


v1.0.0 — Editor Experience (Deferred)

Full editor integration. Intentionally last — language features and production readiness come before distribution overhead. These items require significant DevOps, testing, and maintenance investment beyond the code itself.


Completed Milestones

v0.4.0 (2026-09-02) ✅

v0.3.0 (2026-06-28) ✅

  • mds watch, template inheritance (@extends / @block), HMR across all four bundler plugins
  • Intrinsic output format (breaking): template content decides Markdown vs JSON message array
  • Full 11-item tech-debt sweep

v0.2.0 (2026-06-06) ✅

  • 18 built-in functions, default args, logical operators
  • Expression support in @for and @if directives
  • Frontmatter imports
  • wasm-opt re-enabled (Binaryen v129, -Oz)
  • Published to crates.io, npm (with SLSA provenance), and GitHub Releases

v0.1.0 (2026-05-31) ✅

  • Core compiler (lexer, parser, resolver, validator, evaluator)
  • CLI: build, check, init
  • JS/TS ecosystem: WASM bindings, napi-rs, universal package, Vite/Rollup/Webpack plugins
  • Automated release pipeline (workflow dispatch)
  • 591+ tests, full CI/CD
  • Published to crates.io, npm, and GitHub Releases

Notes

  • Editor experience (v1.0.0) is intentionally deferred. Language enrichment and production readiness take priority — we want to ship features users can use before investing in distribution and tooling overhead.
  • The v0.4.0 pre-tag set was deliberately biased toward things that become expensive after the tag: wire formats, exported type names, and deprecation windows. Pure-quality tech debt was listed but never treated as a blocker.
  • Release path is tag-push, and it is the path v0.4.0 shipped on: node scripts/bump-version.mjs X.Y.Z → land on main via CI-gated PR → git tag -a vX.Y.Z && git push origin vX.Y.Z. The workflow_dispatch -f version= path was deleted in chore: harden release machinery (5 independent fixes) #287; bare gh workflow run release.yml is now the dry-run. A staged run that fails mid-publish is recovered with gh run rerun --failed, never by re-tagging.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    trackingProgress tracking issues

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions