Repository navigation
ntkit v2.5.0
ntkit v2.5.0
/forward-pass-nt now checks code structure, not only dead code. /autopilot-nt builds the end state when it cleans that structure up, and stops before breaking a caller outside the repo. /windup-nt deletes branches already merged to main and asks about the rest. Ideas from jnsahaj/skills zero-tech-debt; adapted from mattpocock/skills codebase-design (MIT).
[2.5.0] — 2026-10-02
Added
/windup-ntsweeps stray branches.windup-nt/bin/branches.shclassifies every local andoriginbranch and changes nothing:merged(an ancestor of the default branch, or a squash or rebase merge whose merge changes no file),hold(merged, but a long-lived name, a remote or same-name local branch with unmerged commits, or named inpending.mdorworkplan.md), orunmerged. Windup deletesmergedbranches locally and on the remote, records each tip SHA in the day summary, and asks about the rest in one Open question./resume-ntruns the same script read-only and names the counts in its brief.tests/branches.test.sh.- Eval cases
forward-pass-nt-structure(four planted structure findings, with a legitimate injected payment gateway as bait) andautopilot-nt-external-caller(a Stray item that would delete a published export).
Changed
/forward-pass-nttests live structure. The Stray lens adds three tests: no caller (callers outside the repo count), deletion (a pass-through is Stray), and two adapters (one implementation and no test stand-in is Stray). Security gains a fourth habit: a permission, flag or gate rule written in two places is a finding, ranked by what the weaker copy lets through. The map ranks files by churn, and structure items in busy files come first. A fix that would undo a recordedhistory.mddecision quotes it and defers to/decide-nt.- Dependency categories decide which stand-in a test may use (
test-value.md,SUBSTANCE.md§6.3): the real code for in-process logic, a local stand-in for a database or filesystem, an injected port with a test adapter for owned remote and third-party services, the clock and randomness. An injected payment client is no longer a test-only seam; a mock of in-process code is Mock-as-subject. /autopilot-nt: a bug still gets the smallest fix. A Stray item or refactor goal writes its end state in one sentence and deletes compatibility paths with no caller; its checker greps each deleted name for a remaining caller. Removing a published export, a persisted data shape, a public route, or a documented flag or config key is a new stop-line.
Verified
sh tests/run.sh: 14 passed, 0 failed, 0 skipped.evals/run.sh: all 10 model evals pass on Claude Opus 5.5 (about $6.07 in estimated usage). The two new cases check that/forward-pass-ntflags the planted structure and leaves the real seam alone, and that/autopilot-ntdeletes a private helper but parks the published export.