A storage-neutral TypeScript domain engine for milestone definition, revision,
evaluation, acceptance, completion, reopening, and auditing. It integrates with
the canonical @elqora/artifacts protocol through explicit immutable contexts.
The normative behavior is specified in OVERVIEW.md.
import {
FixedMilestoneClock,
MilestoneEditor,
SequenceMilestoneIdGenerator,
} from "@elqora/milestones";
const ids = new SequenceMilestoneIdGenerator("demo");
const clock = new FixedMilestoneClock("2026-08-15T00:00:00.000Z");
const created = MilestoneEditor.create(
{
profile,
definition: { title: "Release candidate" },
criteria: [{ title: "Tests pass", required: true, state: "submitted" }],
},
{ ids, clock },
);
const editor = new MilestoneEditor(created.milestone, profile, { ids, clock });
editor.criteria.verify(created.milestone.criteria[0]!.id, { id: "reviewer" });
const result = editor.commit();The package performs no persistence, network, authorization, notification, provider, Git, or artifact-storage operations.
- Architecture
- Host and Project Manager-style integration
- Lifecycle examples
- API stability and subpaths
- Stabilization and contract freeze
- Artifact Protocol integration
- Serialization and migrations
- Node.js 20 or newer is the supported release runtime.
- The published ESM contains no Node-specific runtime imports and is designed
to work in modern ESM runtimes and browsers that provide
structuredClone. - Bun 1.3.x is a tested first-class runtime. CI runs typecheck, build, the full Vitest suite, lifecycle serialization smoke, and packed-package import under Bun 1.3.14.
@elqora/milestones 0.1.x supports @elqora/artifacts >=0.1.0 <0.2.0
and Artifact Protocol >=1.0 <2.0.
Released under the Unlicense.