claudetool: improve codereview

Do a bunch of un-vibecoding and bug fixing.
Unfortunately, lots left.
Get rid of vet; gopls check covers it.

Add testing infrastructure and a bunch of fixtures.
diff --git a/claudetool/teststatus_string.go b/claudetool/teststatus_string.go
new file mode 100644
index 0000000..a5b159b
--- /dev/null
+++ b/claudetool/teststatus_string.go
@@ -0,0 +1,28 @@
+// Code generated by "stringer -type=testStatus -trimprefix=testStatus"; DO NOT EDIT.
+
+package claudetool
+
+import "strconv"
+
+func _() {
+	// An "invalid array index" compiler error signifies that the constant values have changed.
+	// Re-run the stringer command to generate them again.
+	var x [1]struct{}
+	_ = x[testStatusUnknown-0]
+	_ = x[testStatusPass-1]
+	_ = x[testStatusFail-2]
+	_ = x[testStatusBuildFail-3]
+	_ = x[testStatusSkip-4]
+	_ = x[testStatusNoTests-5]
+}
+
+const _testStatus_name = "UnknownPassFailBuildFailSkipNoTests"
+
+var _testStatus_index = [...]uint8{0, 7, 11, 15, 24, 28, 35}
+
+func (i testStatus) String() string {
+	if i < 0 || i >= testStatus(len(_testStatus_index)-1) {
+		return "testStatus(" + strconv.FormatInt(int64(i), 10) + ")"
+	}
+	return _testStatus_name[_testStatus_index[i]:_testStatus_index[i+1]]
+}