The real definition of done.

A typechecker for your issue tracker.

>npx ztrack
ztrack — zsh
user@machine ~/acme-platform $ ztrack ingest linear imported 24 issues from Linear (workspace: acme) user@machine ~/acme-platform $ ztrack check 18 closed issues checked ✓ 13 backed by verified evidence ✗ 5 closed on prose — no real commit cited ✗ ACME-318 "ship billing v2" marked Done · 0 evidence ✗ ACME-456 "fix payment gateway race condition" marked Done · 0 evidence ✗ ACME-591 "update privacy policy link" marked Done · 0 evidence ztrack: 5 of 18 "done" tickets are unverifiable. exit 1

How it works

Evidence-gated “done”

A checked box has to cite a commit that's actually in git — or the ticket fails.

ztrack — check
$ ztrack check ✓ ACME-140 api auth 7d4f1e2 · PR #88 ✓ ACME-141 rate limiter a2e8a2d · PR #91 ✗ ACME-142 dashboard widget cites a1b2c3d — not in git ✗ 1 failed exit 1

Works with your tracker

Point it at Linear, Jira, or GitHub Issues. Only verified state syncs back.

ztrack — sync
$ ztrack ingest linear imported 24 issues (workspace: acme) $ ztrack sync ✓ pushed 19 verified issues to Linear ~ 5 held back — "done" with no evidence

Gradual rigor

Green on day one with git + a PR host. Ratchet up the rigor when you're ready.

ztrack — check
$ ztrack check level: sourced 1 · code 2 ✓ verified at your level ~ 14 claims unverified at higher rigor (visual, behavioral) — opt in when ready

Works with the tools you already use

A verification layer in front of your tracker — no migration.

Linear Jira GitHub
agents
claim done
dev/01 done
"implemented…"
Ztrack
verify
commit ✓
PR head ✓
evidence ✓
your tracker
verified state
✓ verified

Categories & depth

Like gradual typing — independent categories, each with a depth dial keyed to the instrumentation it costs.

wellformed
on
the tracker
always on
sourced
d1
a source
sourced:1
code
d2
git + a PR host
code:2
visual
d1
screenshots
visual:1
behavioral
d2
a deployable QA stack
behavioral:2

Start with git + a PR host. Claims above your level are counted, never silently dropped.

Built for agents

Agents fix-and-retry a typechecker until it passes — turns out that's the right loop.

ztrack — log
agent> marking dev/01 done — "implemented the endpoint" ztrack stop-hook → check… ✗ checked_dev_ac_commit_hash_missing (turn blocked) agent> committed 7d4f1e2, opened PR #88, re-checking… ✓ all acceptance criteria verified ✓ turn may end
MCP server CI gate Stop hook

Block an agent's turn until check is green. Wire it as a CI gate, or drive the full loop over MCP.

Track or verify — Ztrack does both

Every other tool records what the agent claims, or scores outputs and forgets. Ztrack is the system of record where “done” is verified.

 Records claimValidates structureVerifies evidence of done
Linear / Jira✓shape only✗
Beads✓—✗
spec-kit / OpenSpec✓✓✗
Eval / observability——scores output
Ztrack✓✓✓
Credibility

It's not a mockup.

Ztrack runs our own autonomous agent fleet in production.

CI re-proves a fabricated SHA fails — every release
Sigstore-signed releases
Apache-2.0

FAQ

Does it replace Linear/Jira?

No — it's a verification layer. Only validated state syncs back to the tracker you already use.

Do I need new infrastructure?

No. The default is green with just git + a PR host. Screenshots and video are opt-in higher tiers.

Won't agents game it?

The hard checks are zero-false-positive facts — a SHA that's actually in git, a file that resolves. You can't pass without doing the work.

How is it different from spec-kit?

spec-kit validates the shape of spec prose. Ztrack verifies evidence of completion, deterministically.

Is it just for AI agents?

It shines with agents (MCP, stop-hook), but the checks work for any team that wants “done” to mean something.

Open source?

Apache-2.0, local-first, no SaaS dependency.

Make done
mean something.

>npx ztrack
View on npm →
Copied npx ztrack