forge attest runs .forge/ci in a clean worktree of each commit and signs the result into refs/notes/ci: gofmt, go test, go test -race and go vet, the same checks as the GitHub workflow. Live API tests stay opt-in.
- commit
- bafee6809cf984070a2f22ee940f36437a50e6d3
- parent
- b86478c440b0f87928d457f9e83a6cd4674ecd6e
- author
- cat <admin@dev.site>
- ci
- ✓ passed in 5s, signed by cat
ci attestation
forge-attestation 1 type ci commit bafee6809cf984070a2f22ee940f36437a50e6d3 tree 873343bdd438d1a99740ae55b23705de1fe7cf3f script .forge/ci db58a73bea5bb2757944a2beeb5599b5aa3db235 result pass exit 0 started 2026-10-17T22:55:02Z duration 5s runner (not shown here; refs/notes/ci has it) system Darwin 25.5.0 arm64 env host log sha256:e2926e74dfe6868086d773e2ecab2c39ef766c4b06c853b7fc827e0afb31ba75 4 lines |ok github.com/FelineStateMachine/typesafe-go 0.259s |? github.com/FelineStateMachine/typesafe-go/examples/classify [no test files] |ok github.com/FelineStateMachine/typesafe-go 1.346s |? github.com/FelineStateMachine/typesafe-go/examples/classify [no test files]
Signature: good, cat
| A | .forge/ | 13 | +++++++++++++ |
@@ -0,0 +1,13 @@
1+2+# CI for src.rest: the checks CONTRIBUTING.md asks for before a pull request,3+# gofmt, go test, go test -race and go vet, all offline.4+set -eu5+unformatted=$(gofmt -l .)6+if [ -n "$unformatted" ]; then7+ echo "gofmt needed:" >&28+ echo "$unformatted" >&29+ exit 110+fi11+go test ./...12+go test -race ./...13+go vet ./...