Changelog

What shipped, when. Entries describe the software as released, not as planned.

2026-08-01
sourcelock 0.1.0

Hardening pass: the gate stops reporting green for free

An adversarial review of the shipped code, followed by an external code review, found a set of failures that shared one shape: the tool reporting success for something it had not verified. Every item below is a fix for that, and several of them made the claims on this site wrong until today.

  • +lock init refuses to write when any selected canary could not be observed, and never deletes a pin it could not re-observe. An offline run used to pin what it could reach and silently drop the rest, deleting exactly the pins that detect drift. --allow-partial opts in; the write is a temp file plus a rename
  • +Two new doctor statuses and two new exit codes: unpinned (3) for a canary observed but never pinned, stale (4) for a match against data the source stopped publishing. A missing lockfile used to report ok at exit 0 — a build that verified nothing, reporting green
  • +error split out from unreachable: “CMS is down” and “our adapter has a bug” need opposite fixes and used to print the same line
  • +A via column on every canary, so an ok answered by a fallback mirror while the authority is dark is visible rather than implied. Canary notes now reach the CLI, the JSON, and the CI annotations instead of being dropped
  • +Receipts stamp retrieved_at at the fetch boundary, so a cached answer no longer claims it was fetched when the receipt was printed; multi-fetch tools list every artifact's URL, status, hash and retrieval time
  • +Ed25519 manifest signing (manifest build|sign|verify), with --check-lock binding the signature to the lockfile doctor actually reads, plus a composite GitHub Action that annotates each failing canary with its remediation verbatim
  • +leie returns screen_result: indeterminate with the verdict fields absent when the snapshot is incomplete or a reinstatement date is populated. A malformed row used to produce a false miss, which reads as “not excluded”
  • +The CPT non-claim corrected and narrowed. No CPT or CDT record is vendored and no AMA/ADA descriptor text is reproduced, but 17 government-authored CMS Level-II descriptions cite CPT code numbers inside CMS's own definition text (G0317 references 99306 and 99310) and ship as CMS published them. The old key asserted the opposite of the shipped bytes; a test now re-derives the set on every run
  • +PHI guard hardened in both directions — bypasses closed, false positives fixed, an allowlist added — and reframed honestly as a structural best-effort refusal rather than a compliance control, with its unclosed evasion classes written down
  • +Input echo closed across CLI and MCP: rejection messages name the path and the detector, never the offending value
2026-08-01
sourcelock 0.1.0

All six source adapters live

The five route adapters landed the same day the skeleton shipped: provider (NPPES/PECOS), coverage (CMS MCD and Coverage API), codes (ICD-10-CM/HCPCS release trains), hcc (CMS-HCC V24/V28), and leie (OIG exclusions), alongside the packaged reference adapter. The committed source-lock.json pins 23 canary expectations across six sources, checked live.

  • +22 tools across six sources, each with typed public parameters, receipts, and non-claims — over the CLI and MCP
  • +codes and hcc vendor their derived tables as package data with recorded provenance and regeneration commands; answers work offline from the wheel
  • +doctor --source and lock init --source scope a run to specific sources; scoped pins never touch the rest of the lockfile
  • +Every canary declares an offline observation mode (vendored, sample-floor, advisory, or live), enforced by the test suite
2026-08-01
sourcelock 0.1.0

Initial release: the contract, the receipt, the gate

The skeleton is real and tested end to end: schemas, PHI guard, adapter interface, CLI, MCP server, and a working reference adapter. Route adapters for the real sources are in build against this interface.

  • +hc-source CLI: tools, call, receipt, lock init, doctor, mcp
  • +Evidence receipts on every call: source version, effective dates, raw-bytes SHA-256, transform version, fallback flag, and explicit non-claims
  • +source-lock.json: human-readable, reproducible pinning of every adapter's canaries
  • +hc-source doctor with distinct exit codes: 0 match, 1 drift or schema change with exact remediation, 2 unreachable; --json for dashboards and CI annotations
  • +PHI guard: public typed parameters only, patient-shaped input refused before any adapter runs, no payloads in logs
  • +MCP stdio server exposing every discovered tool to agents
  • +Adapter interface with auto-discovery: a new route is one module plus its tests and fixtures, no shared-file edits
  • +Reference adapter (demo.*) exercising the whole path: contract, canaries, receipts, lockfile, doctor, MCP