Skip to content

lint(unused): class f — nine orphans deleted, two tag-blind suppressions - #311

Merged
David-Noble-at-work merged 1 commit into
developfrom
lint/unused
Aug 2, 2026
Merged

David-Noble-at-work merged 1 commit into
developfrom
lint/unused

Conversation

@David-Noble-at-work

Copy link
Copy Markdown
Contributor

Final rung of the 4b-3 ladder, per the delete-all ruling. Nine orphaned symbols removed (~170 lines) — including the duplicated Go↔Starlark conversion pair superseded by the op.Convert cascade, and two functions whose features materialized but lost their call paths in the framework refactor. indexAgeOf/unknownIndexAge suppressed citing their Linux-tagged callers (the darwin analysis never compiles them). unused 11 → 0: the repo's full lint output is now exactly the 61 chartered complexity findings. Vet + full suite green. Plan: docs/plans/lint-unused.md.

The deletions (~170 lines): extensionsConfig.wrapAsStarlark; goast's
encodeScope and resolveGoSource; the makeHeading test helper; migrate's
parseEncryptionSystem (detection assigns enum constants from artifacts
and the string enum unmarshals natively); the function provider's
goToStarlark/starlarkToGo, superseded by the starlarkbridge/op.Convert
cascade — a duplicated-logic divergence risk retired; the pkg
provider's testActivation; and Subgraph.addEdge (edges materialize
through the promise/resource path). Per the ruling: these features had
materialized and lost their call paths in the framework refactor;
history keeps them.

The suppressions: indexAgeOf and unknownIndexAge are the platform
staleness gate's measurement and sentinel, called by the apt and pacman
leaves in linux_managers_linux.go — code the darwin analysis never
compiles. Not dead, just invisible; suppressed citing exactly that.

unused 11 -> 0. The repository's full lint output is now exactly the
61 chartered complexity findings; every other linter is at zero. make
vet and full make test pass; gofmt clean.
Plan: docs/plans/lint-unused.md.
@David-Noble-at-work David-Noble-at-work self-assigned this Aug 2, 2026
@David-Noble-at-work
David-Noble-at-work merged commit 22936e6 into develop Aug 2, 2026
2 checks passed
@David-Noble-at-work
David-Noble-at-work deleted the lint/unused branch August 2, 2026 21:47
David-Noble-at-work added a commit that referenced this pull request Aug 12, 2026
Ruling 2026-08-12: bindgen will not work well enough; remove it whole. Git
history keeps it — the rationale this repository recorded when PR #311 deleted
dead code.

The prototype generated Starlark bindings from cobra CLI source: an AST
extractor enumerated commands and flags (144 commands and 272 flags from
docker-cli v27.4.1 in its one recorded run, 2026-01-11), and a generator turned
the schema into receiver scaffolding. Its own README documents the ceiling that
ended it: AST extraction yields syntax without semantics — no positional
arguments, no valid flag combinations, wrong invocation forms — so every
generated command needed human refinement while fifteen hand-written ones were
production ready. The successor is AI-driven authoring against vendor
documentation: lore onboard today, the licensing draft's authoring-CAG
strategically, which gets the semantics extraction structurally cannot.

The tree was already dead by every mechanical measure, discovered when audit
phase 1b-iii went to decompose extractFromFunction: the extractor, its test,
and cmd/main.go all carry //go:build ignore; the extractor imports
internal/bindgen, which does not exist; nothing imports any of it; and go mod
tidy had already dropped golang.org/x/tools because its only consumer is
ignore-tagged. The two bare nolint directives in the extractor suppressed
nothing — golangci-lint never loads ignore-tagged files.

Phase 1b-iii of issue #365 is thereby resolved by deletion rather than
decomposition; bare nolint directives across the tree drop 5 -> 3, all of them
1b-iv/1b-v scope. Two audit-statement corrections ride in the plan: the claim
that no target path was excluded from the linter was false in effect for these
two functions (a build tag excludes as thoroughly as config, and the audit
never checked tags), and the repo-wide gocognit live-finding count was 9, not
11.

One more prediction fell to a guard during execution, and is recorded in the
plan: the verification bar said go mod tidy would be diffless, but
golang.org/x/text reclassifies from direct to indirect — a prototype file was
its last direct importer. Nothing leaves the graph; go.sum is unchanged; the
tidied go.mod rides here.

The learnings are preserved on issue #215, which this closes: the extraction
results, the README's comparison-table verdict, and this commit's SHA for
retrieval of any of it.

Verified before committing: no prototype package in go list, zero bindgen
references in Go source, exactly 3 bare nolint directives, go mod tidy
converged. The suite loses one green package (prototype/bindgen/internal) that
nothing imports.
Plan: docs/plans/remove-bindgen-prototype.md.
Issues: #215 (closed by this), #365 (phase 1b-iii)

Co-authored-by: David Noble <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant