Changelog

Every release, straight from the changesets. Newest first.

v1.11.0
minor

Upgrade extraction pipeline to @openpkg-ts/sdk ^0.43.0 (+spec ^0.43.0): per-property description and @deprecated now survive alias flattening (Omit<Base, K> & {...}), underscore-prefixed members are no longer dropped, and wide types are no longer silently truncated. Restores the metadata needed for deprecation/inversion detection on flattened option types.

v1.10.0
minor

Agent-native hardening: deterministic output, exit-code taxonomy, MCP parity, config schema

  • Reproducible output: SOURCE_DATE_EPOCH (reproducible-builds convention) makes JSON byte-stable — meta.duration reports 0, spec/report generatedAt derives from the epoch. Extracted specs now carry $schema.
  • Exit codes now follow the grep convention: 0 = clean, 1 = findings/threshold missed/not found, 2 = usage or internal error. Previously all failures exited 1; scripts checking == 1 for errors should check >= 1 or == 2.
  • MCP parity: drift mcp gains drift_lint, drift_coverage, drift_health — the documented fix loop now works for MCP-only clients.
  • drift lint --annotations: emit GitHub Actions ::error file=…,line=… annotations for inline PR findings.
  • One config schema: SDK driftConfigSchema/DriftConfig now match the CLI's real config shape (entry, coverage, lint, docs.remote); JSON Schema ships at @driftdev/cli/schemas/drift.config.schema.json; drift init stamps $schema; $schema key allowed (and ignored) in drift.config.json.
  • New skills drift-fix and drift-enrich (previously dangling references from scan/lint next hints).
v1.9.0
minor

Bump @openpkg-ts/sdk to ^0.40.0: extraction now flattens mapped/conditional type aliases into members (with @deprecated recovered from conditional arm aliases), gives function-type aliases real signatures, and defaults to strict so T | undefined unions survive. Combined with 1.8's instance typing, prose-deprecated-reference now works on wasm/proxy surfaces — e.g. drift lint <clarinet-sdk> --docs guides/ deterministically flags simnet.runSnippet with "use simnet.execute(command) instead".

v1.8.0
patch

Instance typing for prose-deprecated-reference. The registry now maps callable exports to their named return types (Promise unwrapped), so const simnet = await initSimnet() types simnet as Simnet — deprecated members are judged against the actual type instead of being suppressed when an identically-named non-deprecated member exists elsewhere (the proxy-over-raw-class pattern: clarinet's runSnippet). Deprecation notes also flow from deprecationReason fields, not just @deprecated tags.

v1.7.0
patch

New prose drift type: prose-deprecated-reference (17 drift types total). Docs code blocks that import or call an API the spec marks deprecated are flagged — with the spec's deprecation note surfaced as the suggestion — unless the surrounding prose (±5 lines) already acknowledges the deprecation. Deterministic version of a finding class previously only agents caught (e.g. clarinet's runSnippet promoted while its types say @deprecated use execute). Registry now indexes deprecated exports/members; MarkdownDocFile carries raw content for prose-context checks.