Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Maintainer Calibration Samples

Sample collection date: July 9, 2026.

This is a dated maintainer calibration record, not a public benchmark or normative user reference. These anonymized samples are useful for checking report volume, detector balance, and runtime on large repositories, but they should not be treated as a default-threshold mandate.

Source identities and local collection paths are intentionally omitted. Raw reports were generated outside the committed documentation set.

This pass used reproducible static settings for threshold and scoring sanity-checks: --churn off --hotspot-model static --output json --progress never.

Commands

SampleCommandStatus
large-cli-areforge scan <large-cli-a> --output json --output-file target/calibration/large-cli-a.json --progress never --churn off --hotspot-model staticCompleted. Reported scan duration: 780,923 ms.
large-cli-breforge scan <large-cli-b> --output json --output-file target/calibration/large-cli-b.json --progress never --churn off --hotspot-model staticCompleted. Reported scan duration: 122,485 ms.

Sample Summary

SampleSource filesDirectoriesFunction candidatesRaw functionsRaw typesTest filesFindingsHotspotsSimilar function groups
large-cli-a3,2057157,17138,5347,5867374,8443,12669
large-cli-b2,17856311,29831,3822,1689543,7251,8854

Finding severity:

SampleCriticalWarningInfo
large-cli-a04,177667
large-cli-b03,148577

Top Finding Kinds

Kindlarge-cli-alarge-cli-b
complex_function869793
long_function706611
readability_risk555589
many_parameters55486
large_file364157
repeated_literal29254
deep_nesting291390
debt_marker26194
import_heavy_file18440
test_duplication122626
large_type6590

Static Hotspot Summary

Raw hotspot locations are omitted from this committed note. The top static hotspots were retained only as aggregate shape data so the note documents watchlist behavior without exposing sample-specific paths.

SampleTop hotspot priorityTop hotspot severityFile hotspotsFunction hotspotsType hotspots
large-cli-a100critical221
large-cli-b100critical041

Metric Percentiles

Metriclarge-cli-a p50large-cli-a p75large-cli-a p90large-cli-a p95large-cli-a maxlarge-cli-b p50large-cli-b p75large-cli-b p90large-cli-b p95large-cli-b max
file loc1283928811,44711,3961553266539925,430
file imports6183347524471014109
file public items139167581258209
function loc142954772,22882249903,911
function complexity1371144411510476
function nesting depth022310002315
function parameter count123434011219
type loc581422929717801943,427
type member count24710270361116492

Observations

  • Both samples were scanned with churn disabled, so hotspot ranking is entirely static. This makes the sample reproducible but does not calibrate hybrid ranking behavior.
  • The samples are large: 1,149,253 and 652,390 total scanned file LOC respectively. Debug scans are expensive on this scale.
  • Neither sample produced critical findings, but both produced many critical static hotspots. This supports keeping hotspots as a watchlist rather than a hard CI gate.
  • large_file default 800 sits near the upper decile for both samples: large-cli-a file LOC p90 is 881 and large-cli-b p90 is 653. That threshold is broadly plausible for large mixed repositories, but stricter teams may want 600 or lower.
  • max_function_lines=80 is close to large-cli-a p95 at 77 and below large-cli-b p95 at 90. It is a reasonable default, but expect many warnings in CLI/TUI orchestration code.
  • max_function_complexity=15 is above p95 for both samples, yet complex_function is the largest finding kind in both reports. The extreme max values suggest the detector is dominated by a long tail rather than by normal functions.
  • max_function_parameters=5 behaves differently across samples: large-cli-a has 554 many_parameters findings while large-cli-b has 86. This should stay configurable and should not be weighted as a universal style rule.
  • Test maintenance signals vary by project shape. large-cli-b has 954 test files and 626 test_duplication findings, while large-cli-a has 737 test files and 122 test_duplication findings. Teams may need separate presets for production-source gates and test-maintenance audits.
  • Similar-function detection produced 69 groups in large-cli-a but only 4 in large-cli-b under default thresholds. The current default appears conservative for TypeScript-heavy samples but can still be costly on very large trees.

Calibration Follow-Ups

  • Review a stratified sample of high-priority findings with maintainers to estimate false-positive rates by detector kind.
  • Calibrate the documented strict, balanced, and relaxed presets against smaller libraries and service applications before changing their thresholds.
  • For large repositories, consider a calibration mode or docs recipe that uses --exclude-tests and higher --min-function-tokens when the goal is structural threshold calibration rather than duplication analysis.

Cross-Project Core Pass

A second pass on July 10, 2026 added smaller libraries, frameworks, a service application, and a TypeScript monorepo. Sample identities, clone locations, and raw reports remain outside the committed documentation. Each source snapshot was frozen before scanning, and all samples used the same reproducible static settings as the large CLI pass.

SampleShapeSource filesFunction candidatesFindingsIssuesFindings merged into issuesHotspotsSimilar groupsDuration (ms)
core-rust-climulti-crate CLI10137818313625.7%99106,479
core-python-frameworksmall framework8368836225.3%400486
core-go-librarysmall HTTP library7882382534.2%410381
core-js-frameworkweb framework141747454.3%201,076
core-java-serviceservice application4810000.0%0096
core-ts-monorepoplugin monorepo1,45155693355640.4%31034,195

The pass exposed three instrumentation and model issues before the final figures above were recorded:

  • Python annotations and default expressions were initially traversed as if every identifier were a parameter. A representative eight-parameter function was measured as 30 parameters. Parameter extraction now counts the declared bindings only and excludes method receivers.
  • Java package-info.java files were initially treated as kebab-case business source, producing four naming-drift findings in the service sample. Java package and module metadata are now naming-neutral.
  • Dependency depth recursively enumerated simple paths in cyclic graphs. The TypeScript monorepo did not complete within 15 minutes. Depth is now computed once on the strongly connected component condensation DAG; the same complete static scan finishes in about four seconds on the calibration machine.

These corrections changed instrumentation and graph semantics, not default thresholds. The remaining large differences in report volume are therefore treated as project-shape evidence. In particular, the Java service is a useful zero-finding control for the balanced preset, while the TypeScript monorepo is a detector-balance and issue-clustering stress sample. The JavaScript framework’s happy-path test findings remain low-confidence review prompts and need maintainer labeling before any threshold or confidence change.