Skip to content

v0.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 24 Mar 12:25

v0.3.0 — Organization Identity Resolution

canon now resolves entities that appear under different names across documents.

What's new

canon org — deterministic multi-stage identity resolution

The same entity appears as "Wells Fargo & Company" in one document, "Wells Fargo Bank, N.A." in another, and "WFB" in a third. canon org resolves these via a YAML-driven pipeline:

  • Block — candidate neighborhood generation (exact view, rare token overlap, shared anchor, registry alias match)
  • Edge — typed evidence scoring (must-link, support, cannot-link)
  • Solve — staged solver with backbone merges, attachments, and reconciliation
  • Audit — validate against frozen evaluation suites with holdout and perturbation stability gates
  • Promote — write back to registry aliases and escrow sidecars
  • Explain — proof traces for any row, entity, or escrow decision

7 new subcommands: org run, org block, org edge, org solve, org audit, org promote, org explain

6 new refusal codes: E_ORG_INPUT_CONTRACT, E_ORG_BAD_STRATEGY, E_ORG_BAD_SUITE, E_ORG_FIXTURE_INVALID, E_ORG_VERSION_BUMP_REQUIRED, E_ORG_STALE_REGISTRY

Quick start

brew upgrade cmdrvl/tap/canon

# Full pipeline:
canon org run rows.csv \
  --strategy strategy.yaml \
  --registry registries/org/ \
  --suite eval/holdout/

# Or stage-by-stage:
canon org block rows.csv --strategy strategy.yaml --registry registries/org/ > blocks.jsonl
canon org edge rows.csv --strategy strategy.yaml --candidates blocks.jsonl --registry registries/org/ > edges.jsonl
canon org solve rows.csv --strategy strategy.yaml --edges edges.jsonl --registry registries/org/ > result.json
canon org explain result.json --canon-id IC-00042

Binaries

Pre-built for 5 targets, signed with cosign, SBOM included:

  • aarch64-apple-darwin (Apple Silicon)
  • x86_64-apple-darwin (Intel Mac)
  • x86_64-unknown-linux-gnu
  • aarch64-unknown-linux-gnu
  • x86_64-pc-windows-msvc