Skip to content

feat(topology): recover circular-deps, unused-code + coverage per sub-package (#78) - #120

Merged
maudlin merged 2 commits into
mainfrom
78-recover-package-script-checks
Jun 24, 2026
Merged

maudlin merged 2 commits into
mainfrom
78-recover-package-script-checks

Conversation

@maudlin

@maudlin maudlin commented Jun 24, 2026

Copy link
Copy Markdown
Owner

#78 Phase 2b, increment 1. Three project-built checks β€” circular-deps, unused-code, coverage β€” are package-script-based (run_profiled) exactly like the cluster A/B checks, but ran only at the scan root. On an undeclared fan-out (a thin orchestrator over real packages one level down) the root has none of those scripts, so each produced a single root-level skip and the sub-packages were never measured.

What changed (bin/checkup.sh)

  • circular-deps absorbed into cluster B β€” it is dependency-graph health and sits contiguously right after it; the loop-close just moves past it.
  • New cluster C wraps unused-code + coverage in the same recover loop.

Both now iterate the detected assessment roots, run in each sub-package, and record namespaced (backend/coverage, frontend/unused-code) via SLUG_NS β€” with honest skips where a package lacks the script, never a false pass.

Verification

  • Fan-out fixture: circular-deps/unused-code/coverage now emit per-package records (backend/*, frontend/*); packages without a given script skip honestly.
  • Single package: one iteration at ., SLUG_NS empty β†’ bare slugs (coverage.json, not ./coverage), no namespaced variants β€” byte-identical to before.
  • test/topology.test.sh (27), run-tool (43), detect (12) green; shellcheck --severity=error clean; bash -n clean.

Not in this PR

The scc/lizard measurement arms (complexity, duplication, codebase-stats) still run whole-tree β€” that's increment 2 (per-package off the single scc --by-file walk + per-package engine routing), tracked in #78.

Refs #78.

πŸ€– Generated with Claude Code

maudlin and others added 2 commits June 24, 2026 15:04
…-package (#78)

Phase 2b, increment 1. These three project-built checks are package-script-based
(run_profiled) exactly like the cluster A/B checks, but ran only at the scan root β€”
so on an undeclared fan-out (a thin orchestrator over real packages one level down)
they saw the root's missing scripts and produced a single root-level skip, never
measuring the sub-packages.

- circular-deps is absorbed into cluster B (it IS dependency-graph health, and sits
  contiguously after it).
- a new cluster C wraps unused-code + coverage in the same recover loop.

Both now iterate over the detected assessment roots, run IN each sub-package, and
record namespaced (backend/coverage, frontend/unused-code) via SLUG_NS β€” honest
skips where a package lacks the script, never a false pass. A single package /
declared workspace runs one iteration at "." with SLUG_NS empty β†’ bare slugs,
byte-identical to before (verified end-to-end).

The scc/lizard measurement arms (complexity, duplication, codebase-stats) remain
whole-tree β€” that's increment 2 (per-package off the single scc walk + per-package
engine routing).

Refs #78.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@maudlin
maudlin merged commit b45142e into main Jun 24, 2026
5 checks passed
@maudlin
maudlin deleted the 78-recover-package-script-checks branch June 24, 2026 15:12
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