Repository navigation
Releases: watany-dev/chokkin
Releases · watany-dev/chokkin
Release list
v0.7.11
What's Changed
- chore: label app-mode precision hits and retune CHK001/CHK006 floors by @watany-dev in #1243
- ci: move the oss-metrics run-time baseline to v0.7.10 by @watany-dev in #1246
- fix: stop CHK008 for CLIs provided by the project, isolated hooks or prek by @watany-dev in #1247
- feat(django): find the settings module in env files and --ds, and read split-settings include() by @watany-dev in #1248
- feat(rules/deps): use the drivers Django backend settings load (#1240, #1002) by @watany-dev in #1249
- feat(symbols): count settings names and dotted-path strings as CHK006 uses (#1238) by @watany-dev in #1251
- feat(symbols): treat registry decorators and ansible doc strings as CHK006 uses (#1238, #698, #1223) by @watany-dev in #1252
- feat: shared command-line scanner for arguments, installs, and command files across the tree by @watany-dev in #1250
- fix: stop CHK005 false positives from find_spec flags, install checks, management commands, integrations and python_files (#1242) by @watany-dev in #1253
- feat: find the files Django, Sphinx and examples load by name (#1239, #1091) by @watany-dev in #1254
- chore: raise the corpus precision floors to the v0.7.11 measurements (#862) by @watany-dev in #1263
- chore: release v0.7.11 by @watany-dev in #1264
Full Changelog: v0.7.10...v0.7.11
v0.7.10
What's Changed
- fix: celery -A package submodule, pipx run scripts, pretix package-map names by @watany-dev in #1228
- fix: read -r URL/${VAR} includes and one-line setup.cfg requirements like pip/setuptools by @watany-dev in #1229
- fix(release): gate the GitHub Release on a tag check and approval; pin maturin, syft and build images by @watany-dev in #1227
- fix(plugins/django): read INSTALLED_APPS additions and MIGRATION_MODULES packages by @watany-dev in #1231
- fix: warn on unreadable inputs and percent-encode SARIF URIs by @watany-dev in #1230
- fix: accept py38 target_version and skip imports no allowed Python runs by @watany-dev in #1232
- fix(sources): apply ignore rules in git's order everywhere (#1220, #1135) by @watany-dev in #1226
- feat(plugins/django): follow URLconf include() and raise the CHK001 precision gate by @watany-dev in #1233
- Fill test gaps, stop two certain CHK001 false positives, label intended CHK010 by @watany-dev in #1234
- fix(sources): expand pytest testpaths globs like pytest (#998) by @watany-dev in #1236
- chore: release v0.7.10 by @watany-dev in #1237
Full Changelog: v0.7.9...v0.7.10
v0.7.9
What's Changed
- feat: read entry points declared by Poetry, setup.cfg and setup.py by @watany-dev in #1066
- fix: make server apps in nested Dockerfiles entry roots by @watany-dev in #1068
- feat: read module names that loader APIs take as strings (#493) by @watany-dev in #1075
- feat: treat Django installed-app conventions as entries (#399) by @watany-dev in #1077
- fix: make every file under Airflow dags directories a DAG entry by @watany-dev in #1071
- feat: report per-project precision next to the pooled one in oss-metrics by @watany-dev in #1070
- feat: read Airflow 3 local DAG bundles as DAG folders by @watany-dev in #1074
- fix: root datamodel-codegen custom formatters as dev entries (#1063) by @watany-dev in #1072
- fix: lower CHK001 for wheel orphans of a member a metapackage root distributes (#1060) by @watany-dev in #1073
- fix: skip setup.py-only nested projects like a nested [project] (#1078) by @watany-dev in #1079
- fix: read Sphinx extensions of star-imported conf modules and conf.py beside a root document by @watany-dev in #1076
- fix: keep sourced Poetry group dependencies out of the CHK005 move (#1041) by @watany-dev in #1082
- Fail the oss-metrics release gate on a medium or large slowdown by @watany-dev in #1081
- fix: namespace portions, path sources outside the root, and over-deep ASTs (#1022, #1042, #1045) by @watany-dev in #1083
- fix: index sys.path hint lookups and bench the #1080 regression by @watany-dev in #1084
- fix: rewrite IPython escapes only on lines that start a statement (#994) by @watany-dev in #1085
- fix: count only the public modules tests reach as --production CHK006 evidence (#950) by @watany-dev in #1095
- test: measure CHK001 on an app-mode corpus and floor its precision by @watany-dev in #1093
- ci: fail the oss-metrics gate on cumulative drift against the last release by @watany-dev in #1097
- test: add Dagster/Prefect/Scrapy user projects to the OSS corpus by @watany-dev in #1099
- fix: give Sphinx extensions the sys.path of their conf.py (#1086) by @watany-dev in #1096
- fix: cut per-file scan costs added since v0.7.7 (#1087) by @watany-dev in #1098
- perf: lighter uv.lock scan and FxHash name sets in the parse walk (#760, #1047, #1087) by @watany-dev in #1100
- perf: cut reconcile clones, CHK009 pairing and include-chain blowup (#1092, #1048, #1046) by @watany-dev in #1101
- ci: lint Python helpers with ruff and shell scripts with shellcheck by @watany-dev in #1102
- test: reference models for entry roots, workspace CHK002, stdlib windows and --fix convergence (#1109) by @watany-dev in #1122
- fix: normalize dependency ignore patterns and drop ignored CHK005 sites before weighing (#1106, #1107) by @watany-dev in #1115
- test: reference-model / monotonicity PBTs for CHK006/007, gaps, python_range and the cache (#1103) by @watany-dev in #1116
- ci: close the gaps in what cargo-mutants checks (#1117, #1118, #1119, #1120, #1123) by @watany-dev in #1124
- test: add PBT for wheel, depth, reporters, plugins, maps, init and --fix containment (#1105) by @watany-dev in #1110
- fix: add the five new prop tests to TEST_TARGETS by @watany-dev in #1194
- docs: state --init prerequisites and exit-2 cases in README (#1162) by @watany-dev in #1177
- docs: regenerate the README sample report from the binary (#1161) by @watany-dev in #1193
- docs: describe which console scripts make a project an app (#1155) by @watany-dev in #1178
- docs: explain which findings make chokkin exit 1 by @watany-dev in #1176
- test(pbt): extractor roundtrips, cross-format equivalence and metamorphic properties (#1104) by @watany-dev in #1111
- fix: print the cause behind fatal errors and reject a doubled BOM (#1160) by @watany-dev in #1188
- fix(parser): count names in match case patterns as references (#1141) by @watany-dev in #1174
- ci: reuse main's bench baseline and trim build jobs on PRs by @watany-dev in #1212
- fix: count augmented assignment targets as reads (#1142) by @watany-dev in #1179
- fix(action): stop args from repeating flags the action adds (#1147) by @watany-dev in #1180
- fix: hint the top-level form when a standalone config uses [tool.chokkin] by @watany-dev in #1190
- fix: mark --fix/--baseline companions in --help and align columns by @watany-dev in #1185
- fix(parser): count m.X in string annotations and attributes of import_module results (#1144) by @watany-dev in #1181
- ci: benchmark the base on the PR's runner again by @watany-dev in #1214
- fix: split requirements files on every Python line boundary (#1154) by @watany-dev in #1191
- ci: do not create the cross-compiled wheel jobs on PRs that skip them by @watany-dev in #1215
- fix(sources): skip non-UTF-8 source paths with a warning instead of exiting 2 by @watany-dev in #1195
- fix(cache): key stat-only fingerprints on inode and ctime too by @watany-dev in #1192
- fix(config): separate file and key in validation errors and qualify pyproject keys by @watany-dev in #1196
- fix: count literal getattr/hasattr/setattr/delattr on a module as a reference (#1143) by @watany-dev in #1173
- fix: read backslash in config path globs as a separator on every OS by @watany-dev in #1197
- fix: split -e path names on both / and \ regardless of host OS (#1171) by @watany-dev in #1198
- fix(cli): reject --probe combined with issue-only flags by @watany-dev in #1202
- fix(resolver/venv): pick site-packages by pyvenv.cfg version, not read_dir order by @watany-dev in #1201
- fix: match fixed manifest names against the directory listing (#1163) by @watany-dev in #1200
- fix: normalize ./ and \ in config entry paths and ./ in path globs by @watany-dev in #1203
- fix(sources): read
.gitignorebraces literally, as git does by @watany-dev in #1199 - fix: add Python 3.15 to the bundled stdlib table by @watany-dev in #1206
- fix(cli): reject unknown rule codes in --include/--exclude by @watany-dev in #1189
- fix: resolve modules whose extension is uppercase, like
helper.PYby @watany-dev in #1207 - fix: count every bundled minor as stdlib when no lower bound is known by @watany-dev in #1205
- fix: normalize distribution names in --explain selectors by @watany-dev in #1204
- chore(deps): bump the cargo-minor-and-patch group with 3 updates by @dependabot[bot] in #1216
- chore(deps): bump the actions-minor-and-patch group with 3 updates by @dependabot[bot] in #1217
- chore: add formal-spec-extraction skill for Claude Code, Cursor and Codex by @watany-dev in #1213
- fix(sources): read root entry scripts in src and flat layouts by @watany-dev in #1210
- fix(resolver): map opencv, msgpack, psycopg2 and Pillow variants to their import by @watany-dev in #1183
- fix: resolve absolute and cwd-relative --trace paths against the project root by @watany-dev in #1187
- fix: keep the UTF-8 BOM when --fix edits a manifest by @watany-dev in #1184
- fix: keep examples member entries out of skipped-entry gaps by @watany-dev in #1175
- fix: read CJK PEP 263 sources and UTF-16/32 requirements files by @watany-dev in https://github.c...
v0.7.8
What's Changed
- fix: read Flask --app / FLASK_APP file paths as prepare_import does by @watany-dev in #1018
- chore: release v0.7.7 by @watany-dev in #1020
- fix: escape project text in
--probe,--trace,--explain, errors and baseline (#996) by @watany-dev in #1017 - fix: read broad handlers, function boundaries, raise guards and more platform tests (#967, #968, #958, #957) by @watany-dev in #1028
- feat: make
__main__blocks entry roots and lower files named by dotted strings (#1026) by @watany-dev in #1029 - fix: resolve 3.8/3.9 stdlib and backports, read invalid eggs, setup.py list indexes and implied python markers (#939, #940, #929, #868, #919) by @watany-dev in #1030
- docs: add v0.7.x uvx regression and improvement report by @watany-dev in #1021
- chore: port kick and its dependencies to Codex by @watany-dev in #1033
- fix(entry): recognize root and workspace setup.py build scripts by @watany-dev in #1032
- chore: add manual Cloudflare security audit for Claude Code and Codex by @watany-dev in #1037
- fix: follow dotted module references in Django settings by @watany-dev in #1039
- ci: fail Semgrep checks on findings by @watany-dev in #1034
- ci: suppress Semgrep non-literal RegExp findings in the audit validator by @watany-dev in #1052
- fix: share runtime peers with PEP 723 scripts by @watany-dev in #1051
- fix: discover root examples, docs and notebooks in every layout by @watany-dev in #1050
- fix: read plugin entries outside the source globs by @watany-dev in #1053
- feat: make server apps run by commands entries by @watany-dev in #1054
- feat: discover Airflow, Dagster, Prefect and Scrapy definitions by @watany-dev in #1056
- feat: make scripts and -m modules task commands run entries by @watany-dev in #1055
- fix: make CHK001 a warning in every mode as spec §3 says by @watany-dev in #1059
- chore: release v0.7.8 by @watany-dev in #1067
Full Changelog: v0.7.7...v0.7.8
v0.7.7
What's Changed
- test: check auto mode, file context and import flags against reference models (#952, #953, #954) by @watany-dev in #969
- fix: read requirements lines and setuptools values as pip and setuptools do by @watany-dev in #990
- fix: read IPython notebooks, resolve relative imports in unnamed packages, keep Django migrations by @watany-dev in #995
- chore: stop the kick skill from filing an issue per observation by @watany-dev in #1005
- fix: resolve the v0.7.6 uvx findings (#987) by @watany-dev in #1006
- ci: cut per-mutant cost in the Mutants job by @watany-dev in #1007
- ci: pin the lint toolchain, gate coverage at 95%, stop running benches as tests by @watany-dev in #1008
- chore(deps): bump jsonschema from 0.58.4 to 0.58.6 in the cargo-minor-and-patch group by @dependabot[bot] in #1009
- chore(deps): bump the actions-minor-and-patch group with 5 updates by @dependabot[bot] in #1010
- perf: cut the cold run by about 28% (#944) by @watany-dev in #1011
- refactor: give local trees, library members and the public surface one owner each by @watany-dev in #1014
- fix: share list and dict values between aliases in setup.py evaluation by @watany-dev in #1013
- fix: close the remaining #888 gaps that left findings certain by @watany-dev in #1012
- feat: read
__all__concatenation, block assignments, loops and match (#876, #906, #875) by @watany-dev in #1015 - fix: say why a root uv path source is no member and lower findings under one without [project] (#1000) by @watany-dev in #1016
- chore: release v0.7.7 by @watany-dev in #1019
Full Changelog: v0.7.6...v0.7.7
v0.7.6
What's Changed
- fix: record star-import references only in modules that bind the name (#803) by @watany-dev in #812
- fix: report deferred imports of optional packages as info in CHK005 by @watany-dev in #813
- feat: treat Sphinx themes, namespace extensions and pytest-* plugins as used by @watany-dev in #815
- chore: add kick skill by @watany-dev in #816
- fix: treat PEP 517 build backend modules as entry roots by @watany-dev in #817
- fix: follow Sphinx extensions through conf.py's imported constants by @watany-dev in #818
- fix: count build script imports as uses for CHK002 (#783) by @watany-dev in #820
- fix: treat build environment pins in a build group as used for CHK002 (#819) by @watany-dev in #821
- docs: add #803, #808 and #809 to the Unreleased changelog by @watany-dev in #823
- fix(resolver): map Sphinx and MkDocs extensions named unlike their distribution (#822) by @watany-dev in #831
- test: cover namespace packages shipped by path and workspace members by @watany-dev in #825
- feat(metrics): split Downgraded into Recontexted and Demoted by @watany-dev in #824
- refactor(resolver): merge the five stdlib lists into one annotated table by @watany-dev in #832
- chore: make ponytail skill manual-invocation only by @watany-dev in #833
- ci: run the formal models and TLC on PRs that touch their targets by @watany-dev in #854
- ci: fail PRs on missed mutants and cover src/fix and src/graph by @watany-dev in #842
- ci: gate determinism, schema and crashes on every PR and run OSS metrics on src changes by @watany-dev in #845
- test: cover setup.cfg fix, fix containment, shell-script apps and --trace output by @watany-dev in #852
- perf: share parsed ignore files across workspace walks and normalize declared names once by @watany-dev in #841
- ci: test the shipped wheels and dist profile before release by @watany-dev in #847
- ci: run the benchmark regression gate on pull requests by @watany-dev in #856
- test: unit-test the OSS and bench gate scripts by @watany-dev in #849
- ci: rustup instead of dtolnay/rust-toolchain, seconds-long TLC run, and an MSRV sdist test (#857, #853, #846) by @watany-dev in #859
- feat(metrics): per-rule precision floors; chore(release): trim the sdist (#701, #858) by @watany-dev in #863
- fix(trace): print an auto entry root's rule once (#850) by @watany-dev in #864
- fix(manifest): setup.py subscript assignments we cannot follow; move the requirement-table idiom out (#827, #554) by @watany-dev in #870
- fix(plugins): treat bare celery -A / flask --app modules as entry roots by @watany-dev in #867
- fix(rules/symbols): entry-point re-exports are not CHK007; share the import binding rule (#743, #811) by @watany-dev in #874
- feat(parser): read
__all__ +=,.extendand.appendinto exports (#567) by @watany-dev in #878 - fix: give plugin module references their string line and name the setting (#830) by @watany-dev in #883
- fix(rules/symbols): attribute-path entry targets and re-exported host hooks are used (#872, #873) by @watany-dev in #885
- fix(manifest): read
===specifier lists like packaging (#572) by @watany-dev in #881 - fix(parser): skip sources with a syntax error like undecodable ones by @watany-dev in #886
- docs: add ADR 0005, the unknown input contract by @watany-dev in #887
- fix(manifest): only space and tab separate PEP 508 tokens (#879) by @watany-dev in #891
- feat: route dropped pipeline signals to every reporter (#888 step 1) by @watany-dev in #897
- feat: surface the remaining Step 1 input gaps (#892–#895) by @watany-dev in #901
- feat: close the last Step 1 input gaps (#898–#900) by @watany-dev in #904
- feat: give all, entry symbols and setup.py extras a Partial state (ADR 0005 step 2) by @watany-dev in #907
- Lower findings for unread input in one gap stage; add the unread-notebook-cells gap by @watany-dev in #908
- Install CI toolchains with rustup; read requires-python empty items as SpecifierSet does by @watany-dev in #918
- perf: keep the tests the --production walk drops instead of walking again (#844) by @watany-dev in #921
- feat: #888 step 4 — report and scope the remaining manifest and source gaps by @watany-dev in #920
- feat: lower findings when imports, commands, Django settings, .gitignore or requires-python cannot be read (#888) by @watany-dev in #922
- fix: read PEP 508 whitespace and requirements-file markers the way Python and pip do by @watany-dev in #930
- fix: align CHK002 evidence and gap lowering on the usage set (#550) by @watany-dev in #943
- test: property-based coverage for the v0.7 logic (#861) by @watany-dev in #959
- refactor: derive the layout kind from the package root by @watany-dev in #949
- feat: lower findings for skipped entries, assumed target version, unread Django settings and invalid requirement lines (#888) by @watany-dev in #941
- fix: let a partial all hand on any name through import * (#951) by @watany-dev in #961
- test: check CHK005, CHK009, CHK010, CHK001 and derived reachability against reference models by @watany-dev in #955
- chore: release v0.7.6 by @watany-dev in #966
Full Changelog: v0.7.5...v0.7.6
v0.7.5
What's Changed
- docs: fold v0.7.4 tag contents into the 0.7.4 changelog and tag the release commit by @watany-dev in #788
- fix(metrics): exclude info-severity findings from the CHK003 growth gate by @watany-dev in #789
- fix(resolver): read each workspace member's pytest pythonpath for its tests by @watany-dev in #790
- fix(manifest/setup_py): collapse identical strings within one evaluated setup.py list by @watany-dev in #791
- fix(mode): judge a multi-member workspace root like any other root by @watany-dev in #792
- feat(rules): report deprecation shim modules at info for CHK001 / CHK006 (#778) by @watany-dev in #794
- fix(resolver): map faiss, griffe and llama_index.core in the bundled package map (#780) by @watany-dev in #793
- chore(metrics): re-measure at 3406814, drop stale labels and top up CHK001 / CHK004 (#785) by @watany-dev in #795
- docs: add the #726 setup.py CHK009 fix to Unreleased and merge the package-map entries by @watany-dev in #796
- fix: declare context-named extra requirements files in that context (#786) by @watany-dev in #798
- docs: record the v0.7.4 → v0.7.5 release validation at 293533a by @watany-dev in #801
- fix: name setup.py requirement-table and tests/requirements packages (#749) by @watany-dev in #799
- fix: treat opt-in integration and is_x-guarded imports as info for CHK005 (#781) by @watany-dev in #800
- fix: keep library CHK005 Likely when only public subpackages reach it by @watany-dev in #804
- feat: treat host-called hook names as used in CHK006 by @watany-dev in #805
- fix: treat scripts commands run by path as dev entries by @watany-dev in #806
- chore: release v0.7.5 by @watany-dev in #807
Full Changelog: v0.7.4...v0.7.5
v0.7.4
What's Changed
- fix(sources): align test/package detection with what Python and pytest see by @watany-dev in #685
- refactor(sources): derive Default for LayoutInfo and fold literals by @watany-dev in #690
- test(manifest): pin uv.lock strip and scanner to real uv output by @watany-dev in #691
- fix(rules/symbols): keep wheel-shipped all re-exports out of CHK007 in app mode by @watany-dev in #687
- fix(manifest): keep poetry version constraints as specifiers for CHK009 by @watany-dev in #686
- fix(resolver): resolve imports declared outside fixed requirements files by @watany-dev in #688
- fix(rules/deps): keep already-imported, main and example-notebook imports off CHK005 runtime by @watany-dev in #689
- feat: count tox, nox, member and wrapper declarations as CHK008 providers by @watany-dev in #692
- docs: add v0.7.2/v0.7.3 release validation and precision improvement plan by @watany-dev in #704
- docs(dev): add release validation procedure with finding-level diff by @watany-dev in #705
- docs: backfill CHANGELOG for #678, #679, #681, #682 and #685 by @watany-dev in #708
- chore(deps): bump the cargo-minor-and-patch group with 4 updates by @dependabot[bot] in #706
- chore(deps): bump anchore/sbom-action from 0.24.2 to 0.24.3 in the actions-minor-and-patch group by @dependabot[bot] in #707
- fix(entry): keep examples and nested projects out of dependency checks by @watany-dev in #709
- feat: treat imports behind package availability checks as optional by @watany-dev in #710
- fix(deps): match member trees from the member's own files by @watany-dev in #711
- fix(parser): resolve import by its level, not a package argument by @watany-dev in #717
- fix(rules/deps): report a runtime repeat in a group or extra as CHK009 info by @watany-dev in #718
- fix(rules/deps): walk a member import's lock edges from the member's declarations (#649) by @watany-dev in #736
- fix(sources): keep PEP 723 scripts inside skipped nested projects (#714) by @watany-dev in #738
- fix(parser): count only package checks before an import as its guard (#713) by @watany-dev in #737
- fix(resolver): pick the declared distribution among candidates sharing a root (#732) by @watany-dev in #739
- chore(metrics): update OSS labels and expectations after #713/#714 by @watany-dev in #740
- feat(metrics): separate downgrades from vanished findings with --with-strict (#700, #716) by @watany-dev in #741
- fix(rules/symbols): treat shipped all as public and infer member surfaces from layout by @watany-dev in #742
- fix(rules/deps): broaden CHK008 providers for docs requirements, tox configs and CI installs by @watany-dev in #745
- chore(metrics): drop labels and refresh expectations after #742/#745 (#697) by @watany-dev in #746
- docs: rewrite README for users by @watany-dev in #744
- chore(metrics): top up CHK004/CHK006/CHK010 precision labels to >=20% coverage (#699) by @watany-dev in #747
- fix(rules/symbols): treat classes fetched by computed getattr on prefix imports as used by @watany-dev in #750
- fix(entry): treat .github scripts and hatch build scripts as entry roots by @watany-dev in #752
- fix(deps): parse uninventoried member files for workspace source usage by @watany-dev in #751
- docs: add v0.7.3 to main release validation with downgrade/vanish split by @watany-dev in #755
- fix(resolver): resolve build-time modules instead of reporting CHK010 (#720) by @watany-dev in #753
- fix(resolver): resolve imports from directories sys.path edits add (#719) by @watany-dev in #754
- fix(resolver): demote dead stdlib fallbacks in except ImportError to CHK010 info (#721) by @watany-dev in #756
- chore: release v0.7.4 by @watany-dev in #762
- fix(manifest): read python_requires from setup.cfg and setup.py (#764) by @watany-dev in #765
- fix(resolver): stop sys.path hints from re-statting candidate directories (#763) by @watany-dev in #766
- fix(chk005): treat sniffio results read from a variable and host-loaded modules as non-runtime (#731) by @watany-dev in #769
- fix(chk005): treat
except ImportError: x = Noneguards as optional imports (#730) by @watany-dev in #768 - fix(chk006): treat names star-imported into config entries as used (#729) by @watany-dev in #767
- fix(parser): count names in string types of cast and TypeVar as read (#577) by @watany-dev in #770
- fix(resolver): Pyodide ランタイム提供 module(
js/pyodide)を CHK010 にしない (#722) by @watany-dev in #772 - fix(resolver): map import names of declared mismatched distributions by @watany-dev in #774
- fix(chk006): treat names used through a package star import as uses of the defining module (#576) by @watany-dev in #771
Full Changelog: v0.7.3...v0.7.4
v0.7.3
What's Changed
- fix(scripts): emit unclassified CHK003 as deferred instead of failing (#661) by @watany-dev in #665
- Refine app mode detection to exclude package-internal CLIs by @watany-dev in #664
- fix(rules/deps): use a workspace member's own lockfile for CHK004 (#653) by @watany-dev in #668
- feat(rules/symbols): skip protoc output, modular_*.py, and alembic revision names in CHK006 (#655) by @watany-dev in #669
- fix(rules/symbols): report optional unresolved imports as CHK010 info (#654) by @watany-dev in #670
- feat(plugins): root alembic migrations from script_location (#667) by @watany-dev in #671
- fix(entry): treat examples/ and docs/ scripts as entries (#666) by @watany-dev in #672
- docs: refresh roadmap gap analysis for v0.7.2 by @watany-dev in #674
- test(metrics): re-measure per-rule precision on 8ebad05 and label CHK003/005/007/008/009 samples by @watany-dev in #676
- refactor(config/workspace): share one pyproject walk and gate auto-detection in resolve_workspace_members by @watany-dev in #677
- test(metrics): drop 27 stale CHK003 labels (#660) by @watany-dev in #675
- docs: add precision gap analysis from OSS 35-project survey by @watany-dev in #683
- chore: release v0.7.3 by @watany-dev in #684
Full Changelog: v0.7.2...v0.7.3
v0.7.2
What's Changed
- test(metrics): label CHK001/CHK004/CHK006/CHK010 samples and record per-rule precision (#656) by @watany-dev in #659
- refactor(scripts): rewrite oss-metrics.sh in Python on oss_corpus by @watany-dev in #658
- chore: release v0.7.1 by @watany-dev in #651
- fix(config): honor [tool.uv.workspace] exclude (#568) by @watany-dev in #662
- chore: release v0.7.2 by @watany-dev in #663
Full Changelog: v0.7.1...v0.7.2