refactor(kdl-specs)!: rename specgen -> kdl-specs / kdl_specs / kdlspecs (package, command, docs) #174
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#174
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?
Goal
Rename the build-time generator
specgento the kdl-specs family, applying the right casing per context (the maintainer's "depending on text" rule):kdlspecs- Go package name + import-path segment (Go package names are flat lowercase, no hyphen/underscore).package specgen->package kdlspecs; dirhttp/specgen/->http/kdlspecs/; import paths updated everywhere.kdl-specs- the CLI command / binary name and ALL prose, docs, and user-facing messages.cmd/specgen/->cmd/kdl-specs/; help text and theErrNoLock/ErrSkewstrings ("run 'specgen lock'" -> "run 'kdl-specs lock'");docs/specgen.md->docs/kdl-specs.md; mkdocs nav refs.kdl_specs- snake_case ONLY where the surrounding text is already snake (a generated identifier, a lock-file field key, a make var, a test-fixture name). Apply by context; if nothing snake exists, this form may not appear, which is fine.Why
specgenwas just unified under that prefix (#164, commit4afbbe5) but the name does not say what it generates - the artifact is the KDL spec surface, so kdl-specs is the speaking name.Scope (verified - the literal
specgenappears in ~18 files)http/specgen/specgen.go(package + dir),cmd/specgen/main.go(package main + command doc-comment + dir),http/specgen/codegen/*.go,http/specgen/cache.go,http/specgen/deplock.go,http/specgen/exec_unix.go,http/specgen/exec_other.go,http/specverb/prune.go, plus the_test.gopeers. Update package name, every import of the path segment, and the literalspecgenin comments/messages.docs/specgen.md->docs/kdl-specs.md; update refs indocs/specverb.md,docs/specverb-describe.md,docs/specverb-mixed-transports.md,docs/execverb.md,docs/FEATURES.md, and themkdocs.ymlnav.specgen.Keep CI green (the freshness gate)
godoc-current.txtvia./scripts/check-godoc-current.sh --update- the package rename changes every## <pkg>heading, and thegodoc-current.txt up to dateCI step (.forgejo/workflows/ci.yml) fails on drift.go mod tidy(CI doesgit diff --exit-codeon go.mod/go.sum), thengo build ./... && go vet ./... && go test -race ./...andgolangci-lint runall green.refactor(kdl-specs)!:commit (the import path changes), matching house style (seeba21df3,4afbbe5).Acceptance
specgenliteral in code or docs (grep -rl specgenclean except historical commit/changelog references).kdlspecs, the command iskdl-specs, docs/prose readkdl-specs, any snake contexts readkdl_specs.Files
The grep inventory above. Do this first - the keyword-index feature (#175) should land on the renamed surface, or rebase onto it.
When done
Run the gate, commit, push to canonical
main, updatedocs/FEATURES.md, and comment on #175 that the renamed surface is available.🔒 Reserved by
ward agent --driver claude— containerengineer-claude-cli-guard-174on hostkais-macbook-pro-2.localis carrying this issue (reserved 2026-07-01T04:45:52Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (2h0m0s TTL);--forceoverrides.— Claude (she/her), via
ward agentWARD-OUTCOME: done - renamed
specgen-> kdlspecs (package) / kdl-specs (command, docs, messages); landed on main as0359c55, closes #174.The interesting part of this one was resisting the urge to run a single blanket
sed. The "depending on text" rule means the same token splits three ways, so I ran it as ordered passes: import paths /packageclause / Go selectors (specgen.Foo) all went tokdlspecsfirst, then everything left over (message prefixes, help text, command name, doc paths) fell through tokdl-specs. The one trap wasspecgen.mdvsspecgen.Gen- both look like a dot-selector, so the selector pass had to anchor on an uppercase-letter/loadGroupfollow, not a bare dot. As predicted, no snake context existed, sokdl_specsnever appears.Confidence is high: the grep for
specgenis clean across code and docs (only historical commits mention it), godoc-current regenerated cleanly, and vet/lint/tidy/pre-commit are all green. Race tests pass except the pre-existingcli/sandboxseccomp/ptrace/jail cases, which fail identically on the untouched base - this container can't grant those kernel caps, so they're environmental, not mine.No follow-ups worth filing. I did notify #175 that the renamed surface is live so the keyword-index work can build on it rather than the old name.