@@ -43,7 +43,8 @@ Live sample report:
4343- ** Clone detection** — function (CFG fingerprint), block (statement windows), and segment (report-only) clones
4444- ** Structural findings** — duplicated branch families, clone guard/exit divergence and clone-cohort drift (report-only)
4545- ** Quality metrics** — cyclomatic complexity, coupling (` CBO ` ), cohesion (` LCOM4 ` ), dependency cycles, dead code,
46- health score, and report-only ` Overloaded Modules ` profiling
46+ health score, type/docstring adoption coverage, public API surface diff, and report-only ` Overloaded Modules `
47+ profiling
4748- ** Baseline governance** — separates accepted ** legacy** debt from ** new regressions** and lets CI fail ** only** on
4849 what changed
4950- ** Reports** — interactive HTML, deterministic JSON/TXT plus Markdown and SARIF projections from one canonical report
@@ -141,8 +142,18 @@ codeclone . --fail-cycles --fail-dead-code
141142
142143# Regression detection vs baseline
143144codeclone . --fail-on-new-metrics
145+
146+ # Adoption and API governance
147+ codeclone . --min-typing-coverage 80 --min-docstring-coverage 60
148+ codeclone . --fail-on-typing-regression --fail-on-docstring-regression
149+ codeclone . --api-surface --update-metrics-baseline
150+ codeclone . --fail-on-api-break
144151```
145152
153+ In normal full-mode CLI output, CodeClone now surfaces adoption coverage
154+ (` params ` , ` returns ` , ` docstrings ` , ` Any ` ) in the main ` Metrics ` block, and it
155+ adds a ` Public API ` line when ` --api-surface ` facts are collected.
156+
146157### Pre-commit
147158
148159``` yaml
@@ -277,11 +288,11 @@ class Middleware: # codeclone: ignore[dead-code]
277288Dynamic/runtime false positives are resolved via explicit inline suppressions, not via broad heuristics.
278289
279290<details >
280- <summary >Canonical JSON report shape (v2.4 )</summary >
291+ <summary >Canonical JSON report shape (v2.5 )</summary >
281292
282293``` json
283294{
284- "report_schema_version" : " 2.4 " ,
295+ "report_schema_version" : " 2.5 " ,
285296 "meta" : {
286297 "codeclone_version" : " 2.0.0b5" ,
287298 "project_name" : " ..." ,
@@ -348,8 +359,16 @@ Dynamic/runtime false positives are resolved via explicit inline suppressions, n
348359 }
349360 },
350361 "metrics" : {
351- "summary" : {},
352- "families" : {}
362+ "summary" : {
363+ "..." : " ..." ,
364+ "coverage_adoption" : { "..." : " ..." },
365+ "api_surface" : { "..." : " ..." }
366+ },
367+ "families" : {
368+ "..." : " ..." ,
369+ "coverage_adoption" : { "..." : " ..." },
370+ "api_surface" : { "..." : " ..." }
371+ }
353372 },
354373 "derived" : {
355374 "suggestions" : [],
0 commit comments