Pre-commit gate is red on main: pre-existing specverb lint + execverb comment debt, and missing golangci-lint/trufflehog in the container #165
Labels
No labels
burndown-2026-06
sunday-sprint
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/cli-guard#165
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Surfaced while landing #164 (the
specgenrename): the pre-commit gate is currently red onmainfor reasons unrelated to any one feature, so landing work means selectivelySKIP-ing hooks. Worth a dedicated cleanup pass.Pre-existing lint findings on
maingolangci-lint run(the pinned v2.12.2) reports 6 issues, all in thespecverbrun-time engine:http/specverb/action.go:778,http/specverb/describe.go:197,http/specverb/describe.go:344- gocriticifElseChain(rewrite toswitch)http/specverb/action.go:102- gocyclo:resolveActioncomplexity 13 (> 12)http/specverb/action_collect.go:154- unparam:buildCollectRequestresult body always nilhttp/specverb/action_collect.go:192- unparam:resolveCollectArgValueresult 2 (error) always nilPre-existing code-comments finding
cli/execverb/guardfile.go:145- a 3-line contiguous comment block (cap is 2). Move the explanation to a doc or trim.Tooling gap in the ward container
golangci-lintandtrufflehogare not on PATH in the feature container, so those twolanguage: systemhooks fail with "executable not found" regardless of the code. Either the container image should ship them, or pre-commit should tolerate their absence locally and lean on CI for the authoritative run. Note there is currently no CI lint workflow (.forgejo/workflows/has onlyrelease.yml).Net effect: a clean local commit today requires
SKIP=golangci-lint,trufflehog,code-comments. None of these block correctness, but they erode the gate's signal.🔒 Reserved by
ward agent --driver claude— containerward-cli-guard-issue-165-claude-1e592d32on hostkais-macbook-pro-2.localis carrying this issue (reserved 2026-06-25T05:14:01Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (2h0m0s TTL);--forceoverrides.— Claude (she/her), via
ward agentDone: the six golangci-lint findings and the comment debt are cleared, and the whole pre-commit suite runs green locally now (with the tools on PATH). Landed on
mainas2cf2917.How it felt: the lint fixes themselves were mechanical and pleasant. The ifElseChain -> switch rewrites and the resolveAction extraction were obvious, and the two unparam fixes were the satisfying kind, deleting return values that were genuinely always nil rather than papering over them.
What fought back: the tooling gap was real. golangci-lint's official install script failed checksum verification on this arm64 container, so I fell back to
go install. The sneakier one: the code-comments hook passed on mypre-commit run --all-filesdry run but then failed at commit time, because an untracked file is invisible to--all-files. An inline YAML comment underenv:slipped through until it was staged. Lesson re-learned.A couple of notes for whoever reads this next:
main(the hook passes), so the line-145 reference had just drifted since filing. Nothing to do there.cli/sandboxtests fail in this nested container (seccomp/ptrace/jailing unavailable). That is environment, not regression, and is orthogonal to this issue.Confidence: high on the lint/comment debt. Medium on the new
.forgejo/workflows/ci.yml. I verified every install step and the gate commands locally, but the Forgejo docker runner is amd64 and I could not actually execute the workflow from here, so its first real run on this push is the proof. The arm64 checksum snag should not bite there.Follow-up worth filing: the underlying container tooling gap (golangci-lint and trufflehog absent from PATH) is really a provisioning fix in the ward/infra layer, not cli-guard. This CI workflow makes the gate reliable server-side, but it does not put those binaries in a contributor's local feature container.