Skip to content

Rewind to the last state of your code that actually passed.

superdetermine
Download for macOS

Green, with a warrant

An agent can write both the code and its check.

The check was written byno model, 3 ms

  • Independencesame authorno
  • Relevanceevery changed file5 of 5
  • Discriminationonly when the check changesunknown

Every state, graded

sdt captures your worktree continuously and grades it, so sdt green returns the last state that passed.

Nothing is ever unsaved

Capture starts at sdt init and never stops.

  • Automatic on macOS, sdt watch on Linux
  • No staging area, no stash
  • Any operation is reversible with sdt undo

git records what changed.
Nothing records what worked.

sdt is a separate version control system, and it grades every state, so nothing is left to search.

gitgit bisectsdtsdt green

History moves both ways, losslessly

.git.sdt
sdt importsdt exportsync.git

Red never leaves the machine

  • greenorigin
  • redstays home
sdt push --require-greensdt attest
Instant worktrees
Binaries, no LFS
Reversible rewrites
Sealed secrets
Shared verdicts
Blame with the prompt

Frequently asked questions

What to know before you run sdt init.

What is a moment, and how is it different from a change?

A moment is a content-addressed state of your working tree, captured on its own with a stable id and a timestamp. It is not a commit and never appears in sdt log. A change is the thing you name yourself with sdt save.

Does it replace git?

Yes. sdt is its own version control system, with its own object store, its own history model, and its own commands. The git interop is bidirectional and lossless, so full history, branches, and tags move both ways and sdt export <dir> writes a plain git repo whenever you want one. Adoption is reversible because of that interop, not because sdt is git underneath.

How does capture behave on Linux?

Automatic capture is macOS only, started by launchd after a file changes and stopping again when it is done. On Linux you run sdt watch in a terminal, which does the same work for as long as it runs.

What does grading cost me?

Nothing until you say what to run with sdt config checks.full "<command>". After that each check runs inside a throwaway copy-on-write clone, so your worktree is never touched and your terminal never waits.

What is a warrant, and why is a green not enough?

An agent can write both the code and the test, in which case a green only proves it agrees with itself. So sdt labels every verdict with a warrant on three axes: independence, relevance, and discrimination. Relevance comes from file access times and is a conservative over-approximation off APFS, and discrimination is measured only when the check itself changed, otherwise reading unknown.

What does sdt record that git does not?

git history is a sequence of commits, and a commit is too coarse a unit to answer which state broke this, which is why bisect has to go searching after a failure. sdt records every captured state with a graded verdict attached, so sdt green returns the last one that passed. Two history models, not a faster search.

Is my code sent anywhere?

No. There is no account, no server, and no telemetry. Sharing is peer to peer, and the optional relay is one you run yourself, which cannot read what passes through it.

What happens to secrets in a captured file?

sdt seal encrypts a file in place and records it in .sdtsealed, the manifest of what is sealed and who can read it. Only the ciphertext is captured and shared. sdt unseal writes the plaintext back out for anyone holding a key.

How do I install it, and is it stable?

Take a binary from GitHub Releases, then run sdt update to update in place. superdetermine is Apache-2.0 and lives at plyght/superdetermine. It is early and opinionated, and interfaces may still change.

Download for macOS

Free and open source. Already have it? Run sdt update.