fensu-cli 0.28.2__tar.gz → 0.29.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/Cargo.lock +2 -2
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/PKG-INFO +1 -1
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/Cargo.toml +1 -1
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/policy.rs +4 -1
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/preparation_ownership.inc +5 -4
- fensu_cli-0.29.0/crates/fensu-cli/src/command/main/_help.rs +3 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/inputs/arguments.rs +6 -1
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/report/build.rs +1 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/report/rendering.rs +4 -2
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/constants.rs +1 -1
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/main/run_dupes.rs +21 -8
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/models.rs +2 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_check_policy.rs +95 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/dupes/test_config.rs +2 -2
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/dupes/test_reporting.rs +107 -1
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/dupes/test_types.rs +10 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/roles/paths.rs +1 -5
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/Cargo.toml +1 -1
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/pyproject.toml +1 -1
- fensu_cli-0.28.2/crates/fensu-cli/src/command/main/_help.rs +0 -3
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/Cargo.toml +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/README.md +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/build.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/analyzer.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/_helpers/arguments.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/_helpers/loading.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/_helpers/options.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/_helpers/policy.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/_helpers/rendering.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/data/catalogue.json +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/main/resolve_native_options.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/main/rule_catalogue.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/main/rule_metadata.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/main/rule_output.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/main/validate_config_selectors.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/cache.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/cleanup.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/evaluation.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/exceptions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/execution.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/options.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/preparation.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/project.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/repository_custom_facts.inc +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/rule_policy.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/web.inc +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/web_custom_facts.inc +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/web_policy.inc +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/check_output_options.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/check_routing.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/clean_caches.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/discover_target_sources.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/execute_check.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/execute_structured_check.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/prepare_cleanup.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/python_version.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/render_check_results.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/repository_python_targets.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/required_thresholds.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/_helpers/check_partition/execution.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/_helpers/check_partition/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/_helpers/map/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/_helpers/map/parsing.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/main/_check.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/main/_dupes.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/main/_init.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/main/_map.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/main/_rule.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/main/_run_cli.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/main/_skills.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/main/_target.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/main/execute_cli.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/command/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/_helpers/discovery.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/_helpers/exception_targets.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/_helpers/exceptions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/_helpers/loading.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/_helpers/native_rules.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/_helpers/parsing.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/_helpers/roots.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/_helpers/scopes.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/_helpers/selectors.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/_helpers/validation.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/configuration_directory.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/expand_path_pattern.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/is_rule_code.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/is_rule_selector.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/load_config_section.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/load_optional.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/load_repository_rule_config.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/load_repository_rule_policy.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/load_target.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/load_targets.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/render_target_config.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/resolve_target_root.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/rust_exception_symbols.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/validate_document.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/main/validate_exception_targets.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/configuration/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/contracts/classes.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/contracts/forced.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/contracts/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/inputs/changes.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/inputs/config.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/inputs/globs.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/inputs/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/inputs/sources.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/matching/clustering.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/matching/fingerprints.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/matching/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/matching/pairs.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/matching/sequence.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/report/diff.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/report/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/units/collection.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/units/lines.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/units/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/units/python.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/units/rust.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/units/web.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/hosting/_helpers/authoring.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/hosting/_helpers/interpreter.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/hosting/_helpers/metadata_exchange.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/hosting/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/hosting/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/hosting/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/hosting/main/run_custom_check_host.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/hosting/main/run_repository_custom_rule_host.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/hosting/main/run_rust_custom_rule_host.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/hosting/main/run_skills_metadata_host.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/hosting/main/run_web_custom_rule_host.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/hosting/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/init/_helpers/arguments.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/init/_helpers/discovery.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/init/_helpers/layout.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/init/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/init/_helpers/packages.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/init/_helpers/reporting.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/init/_helpers/validation.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/init/_helpers/writing.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/init/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/init/data/python.gitignore +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/init/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/init/main/run_init.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/init/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/init/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/lib.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/main.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/_helpers/cache.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/_helpers/decoding.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/_helpers/execution.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/_helpers/identity.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/_helpers/index.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/_helpers/project.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/_helpers/render.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/_helpers/tree.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/_helpers/tree_policy.inc +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/main/map.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/mapping/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/reporting/_helpers/faults.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/reporting/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/reporting/_helpers/text.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/reporting/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/reporting/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/reporting/main/report.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/reporting/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/reporting/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/repository_io/_helpers/files.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/repository_io/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/repository_io/main/acquire_operation_lock.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/repository_io/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/repository_io/main/open_repository.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/repository_io/main/read_optional.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/repository_io/main/relative_path.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/repository_io/main/write_if_unchanged.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/repository_io/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/repository_io/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/command/execution.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/command/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/content/discovery.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/content/fingerprint.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/content/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/content/option_rendering.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/content/rendering.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/content/rule_rendering.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/content/sections.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/context/build.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/context/exceptions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/context/identity.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/context/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/context/option_validation.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/context/options.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/context/selection.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/installation/filesystem.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/installation/freshness.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/installation/install.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/installation/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/installation/plan.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/installation/publication.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/installation/transaction.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/data/skills_invariant.json +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/main/catalogue.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/main/core_freshness.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/main/execute.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/main/skills.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/skills/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/target_command/_helpers/addition.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/target_command/_helpers/arguments.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/target_command/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/target_command/_helpers/paths.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/target_command/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/target_command/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/target_command/main/run_target.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/target_command/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/target_command/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/tests/helpers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/tests/test_analyzer.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/tests/test_dupes.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/tests/test_policy.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/tests/test_render.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/tests/test_rule_catalogue.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/tests/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/tests/test_web_analysis.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/tests.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/check/helpers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/check/test_dead_code.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/check/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/check.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/helpers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_check_cleanup.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_check_exceptions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_check_mixed_targets.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_check_repository_custom.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_check_rust.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_check_rust_exceptions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_check_validation.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_check_web.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_check_web_boundaries.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_check_web_custom.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_check_web_layout.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_rule.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_rust_file_placement.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command/web_policy_fixtures.inc +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/command.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/dupes/helpers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/dupes/test_contracts.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/dupes/test_detection.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/dupes.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/init/helpers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/init/test_commands.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/init/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/init.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/mapping/commands.inc +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/mapping/helpers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/mapping/test_commands.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/mapping/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/mapping.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/skills/commands.inc +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/skills/helpers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/skills/test_commands.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/skills/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/tests/skills.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/Cargo.toml +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/dead_code/_helpers/graph.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/dead_code/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/dead_code/main/analyze.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/dead_code/main/evaluate_graph.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/dead_code/main/extract.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/dead_code/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/dead_code/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/dead_code/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/conversion/annotations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/conversion/contracts.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/conversion/declarations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/conversion/functions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/conversion/harness.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/conversion/hygiene.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/conversion/mapping.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/conversion/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/conversion/references.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/conversion/rule_authoring.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/conversion/state.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/facades/facades.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/gateway/bindings.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/gateway/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/gateway/model_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/gateway/repository_bindings.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/gateway/rule_authoring_bindings.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/_helpers/queries/owner_symbols.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/main/register_module.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/extension/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/annotations/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/annotations/visitor.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/contracts/category.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/contracts/display.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/contracts/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/contracts/returns.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/contracts/rows.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/control/conditionals.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/control/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/declarations/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/declarations/rows.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/harness/calls.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/harness/dimensions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/harness/functions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/harness/imports.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/harness/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/hygiene/checks.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/hygiene/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/metrics/functions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/metrics/lookups.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/metrics/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/metrics/mutations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/naming/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/naming/names.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/project/calls.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/project/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/references/events.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/references/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/references/test_shape.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/rule_authoring/literals.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/rule_authoring/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/rule_authoring/mutations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/rule_authoring/ownership.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/rule_authoring/references.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/state/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/state/resolution.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/state/scopes.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/wording/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/_helpers/wording/text.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/enumerate_nodes.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_annotations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_class_declarations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_comments.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_control_flow.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_dataclasses.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_evaluate_rule_calls.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_function_contracts.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_functions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_hygiene.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_module_declarations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_outer_state_mutations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_parameter_mutation_occurrences.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_parameter_mutations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_project_facts.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_references.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_rule_calls.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_rule_references.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_test_functions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/extract_test_module.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/facts/types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/lib.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/mapping/_helpers/classes.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/mapping/_helpers/expressions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/mapping/_helpers/extraction.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/mapping/_helpers/functions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/mapping/_helpers/imports.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/mapping/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/mapping/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/mapping/main/extract_mapping_declarations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/mapping/main/extract_mapping_facts.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/mapping/main/extract_runtime_imports.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/mapping/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/mapping/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/mapping/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/parsing/_helpers/failures.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/parsing/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/parsing/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/parsing/main/parse_expression_strict.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/parsing/main/parse_strict.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/parsing/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/parsing/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/positions/_helpers/line_index.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/positions/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/positions/main/index_lines.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/positions/main/locate_offset.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/positions/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/positions/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/positions/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/snapshot/_helpers/matching.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/snapshot/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/snapshot/_helpers/observation_index.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/snapshot/_helpers/repository_observation_index.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/snapshot/_helpers/repository_paths.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/snapshot/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/snapshot/main/build_repository_observation_index.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/snapshot/main/hash_files.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/snapshot/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/snapshot/main/walk_python_files.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/snapshot/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/snapshot/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/_helpers/breadth.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/_helpers/children.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/_helpers/expression_children.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/_helpers/nodes.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/_helpers/references.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/_helpers/spans.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/_helpers/statement_children.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/main/breadth_first_from.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/main/breadth_first_nodes.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/main/breadth_first_with_parents.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/main/children.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/main/kind_name.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/main/push_clause_orelse.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/main/span.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/main/start_of.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/main/strict_reference_parts.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/src/syntax/types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/dead_code/helpers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/dead_code/test_reachability.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/dead_code/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/dead_code.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/facts/test_enumerate.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/facts/test_mapping.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/facts/test_rule_authoring.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/facts/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/facts.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/parsing/test_strict.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/parsing/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/parsing.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/positions/test_locate.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/positions/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/positions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/snapshot/helpers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/snapshot/test_hashing.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/snapshot/test_observations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/snapshot/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/snapshot/test_walk.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-facts/tests/snapshot.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/Cargo.toml +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/_helpers/bindings/bindings.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/_helpers/bindings/generation_bindings.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/_helpers/bindings/python_rows.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/_helpers/generation/generation.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/_helpers/generation/replay.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/_helpers/persistence/database.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/_helpers/persistence/storage.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/_helpers/publication/publication.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/_helpers/publication/publication_merge.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/_helpers/records/records.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/_helpers/records/schema.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/_helpers/records/schema_values.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/main/_dependency_kinds.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/main/_replay_generation.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/main/register_cache.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/tests/helpers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/tests/test_records.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/tests/test_replay.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/tests/test_storage.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/tests/test_subject_schema.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/tests/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/tests.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/cache/types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/extension/_helpers/evaluation/execution_planning.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/extension/_helpers/evaluation/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/extension/_helpers/evaluation/python_rows.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/extension/_helpers/evaluation/reachability_bindings.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/extension/_helpers/evaluation/rule_bindings.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/extension/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/extension/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/extension/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/extension/main/register_module.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/extension/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/lib.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/annotations/annotations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/dagster/assets.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/dagster/autoload.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/dagster/boundaries.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/dagster/dagster.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/dagster/definitions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/dagster/source.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/dead_code/dead_code.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/execution_planning/execution_planning.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/hygiene/hygiene.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/layers/layers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/layers/local.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/layers/project.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/naming/naming.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/naming_globs/naming_globs.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/policy/generated_policy.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/project_queries/project_queries.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/roles/declarations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/roles/project_layout.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/roles/project_layout_paths.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/roles/project_layout_queries.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/roles/roles.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/roles/surfaces.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/shape/shape.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/tests/function_conventions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/tests/layout.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/tests/names.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/_helpers/tests/tests.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/main/evaluate_core_rules.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/main/evaluate_dead_code.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/main/generated_policy_owners.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/main/parse_dead_code.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/main/plan_core_rule_queries.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/main/plan_execution_owners.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/src/rules/types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/tests/rules/fixtures/README.md +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/tests/rules/fixtures/core_rules.jsonl +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/tests/rules/fixtures/generated_rules.jsonl +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/tests/rules/fixtures/project_rules.jsonl +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/tests/rules/helpers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/tests/rules/test_contracts.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/tests/rules/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-native/tests/rules.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/README.md +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lib.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/_helpers/cache.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/_helpers/canonical.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/_helpers/hosting.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/_helpers/paths.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/_helpers/skills.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/_helpers/suppressions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/errors.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/main/apply_suppressions.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/main/evaluate_batch.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/main/invalidate_cache.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/main/read_cache.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/main/render_owned_skill.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/main/report_summary.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/main/run_custom_host.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/main/serialize_findings.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/main/skill_freshness.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/main/sorted_findings.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/main/write_cache.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/lifecycle/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/_helpers/grammar.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/_helpers/resolution.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/errors.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/main/_code_matches_selector.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/main/resolve_catalogue_policy.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/main/resolve_policy.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/main/rule_code_is_exact.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/main/rule_selector_is_valid.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/main/validate_selector_group.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/main/validate_unique_implementations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/src/policy/types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/tests/lifecycle/helpers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/tests/lifecycle/test_consumer_fixture.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/tests/lifecycle/test_lifecycle_contracts.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/tests/lifecycle/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/tests/lifecycle.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/tests/policy/test_implementation_identity.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/tests/policy/test_policy_resolution.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/tests/policy/test_selector_grammar.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/tests/policy/test_selector_validation.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/tests/policy/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-policy/tests/policy.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/Cargo.toml +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/configuration/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/configuration/_helpers/option_values.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/configuration/_helpers/repository_policy.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/configuration/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/configuration/main/rule_options.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/configuration/main/validate_repository_policy.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/configuration/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/engine/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/engine/_helpers/repository_analysis.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/engine/main/analyze_repository.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/engine/main/analyze_repository_with_ownership_roots.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/engine/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/engine/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/facts/_helpers/collection.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/facts/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/facts/main/collect_workspace_facts.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/facts/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/facts/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/facts/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/lib.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/functions/binding_clarity.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/functions/comments.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/functions/discarded_errors.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/functions/hygiene.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/functions/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/functions/naming.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/functions/shape.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/functions/shape_policy.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/functions/shape_project.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/imports/embedded_files.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/imports/layers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/imports/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/imports/reference_paths.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/imports/visibility.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/repository/configured_paths.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/repository/crate_contents.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/repository/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/repository/package_entries.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/repository/placement_observations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/repository/project_checks.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/roles/containers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/roles/domains.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/roles/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/roles/ownership.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/roles/placement.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/roles/proc_macro_entries.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/roles/role_files.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/roles/surfaces.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/roles/tooling.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/sources/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/sources/scanning.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/test_conventions/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/test_conventions/test_case_arrays.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/test_conventions/test_mirroring.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/test_conventions/tests_layout.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/_helpers/test_conventions/tests_shape.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/main/check_repository_with_config.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/main/check_scanned_workspace.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/main/file_placement_observations.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/main/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/main/relative_display.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/main/scan_workspace.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/main/use_paths.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/rules/mod.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/src/types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/engine/test_engine.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/engine/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/engine.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/helpers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_comments.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_configuration.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_containers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_domains.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_file_placement.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_hygiene.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_layers.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_naming.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_ownership.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_proc_macro_roots.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_role_files.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_roles.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_shape.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_shape_policy.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_tests_layout.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_tests_shape.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_tooling_roles.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_tuple_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules/test_visibility.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-rust/tests/rules.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-svelte/Cargo.toml +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-svelte/src/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-svelte/src/lib.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-svelte/src/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-svelte/src/parser.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-svelte/tests/parser/test_contracts.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-svelte/tests/parser/test_diagnostics.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-svelte/tests/parser/test_semantics.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-svelte/tests/parser/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-svelte/tests/parser.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-typescript/Cargo.toml +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-typescript/src/constants.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-typescript/src/lib.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-typescript/src/models.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-typescript/src/parser.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-typescript/tests/parser/test_contracts.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-typescript/tests/parser/test_diagnostics.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-typescript/tests/parser/test_semantics.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-typescript/tests/parser/test_types.rs +0 -0
- {fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-typescript/tests/parser.rs +0 -0
|
@@ -388,7 +388,7 @@ checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
|
|
|
388
388
|
|
|
389
389
|
[[package]]
|
|
390
390
|
name = "fensu-cli"
|
|
391
|
-
version = "0.
|
|
391
|
+
version = "0.29.0"
|
|
392
392
|
dependencies = [
|
|
393
393
|
"cap-fs-ext",
|
|
394
394
|
"cap-std",
|
|
@@ -458,7 +458,7 @@ dependencies = [
|
|
|
458
458
|
|
|
459
459
|
[[package]]
|
|
460
460
|
name = "fensu-policy"
|
|
461
|
-
version = "0.
|
|
461
|
+
version = "0.29.0"
|
|
462
462
|
dependencies = [
|
|
463
463
|
"command-group",
|
|
464
464
|
"globset",
|
|
@@ -29,7 +29,10 @@ pub(crate) fn role(source: &ScopedSource) -> Option<String> {
|
|
|
29
29
|
if source.scope == SCOPE_TOOLING && part == ROLE_RULES {
|
|
30
30
|
return Some(part.clone());
|
|
31
31
|
}
|
|
32
|
-
if matches!(
|
|
32
|
+
if matches!(
|
|
33
|
+
part.as_str(),
|
|
34
|
+
ROLE_MAIN | ROLE_HELPERS | "classes" | "models" | "types" | "constants" | "exceptions"
|
|
35
|
+
) {
|
|
33
36
|
return Some(if part == ROLE_HELPERS {
|
|
34
37
|
"helpers".to_owned()
|
|
35
38
|
} else {
|
{fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/preparation_ownership.inc
RENAMED
|
@@ -50,10 +50,11 @@ fn resolve_ownership_roots(
|
|
|
50
50
|
));
|
|
51
51
|
};
|
|
52
52
|
let relative = relative_ownership_path(&path, source_root);
|
|
53
|
-
if relative
|
|
54
|
-
.
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
if relative.split('/').any(|part| {
|
|
54
|
+
STRUCTURAL_ROLE_DIRECTORIES.contains(&part)
|
|
55
|
+
|| config.analyzer == AnalyzerId::Python
|
|
56
|
+
&& matches!(part, "models" | "types" | "constants" | "exceptions")
|
|
57
|
+
}) {
|
|
57
58
|
return Err(format!(
|
|
58
59
|
"Configured ownership root crosses a role directory: {pattern}"
|
|
59
60
|
));
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
pub(super) fn help() -> String {
|
|
2
|
+
"Usage: fensu {init,check,dupes,rule,map,skills,target} ...\n\nCommands:\n init Initialize Fensu configuration for a repository.\n check Evaluate repository architecture rules.\n dupes Report duplicated code (advisory unless --fail-on-new).\n rule Show details for one rule.\n map Render a directional project call map.\n skills Generate and install agent guidance.\n target Add an explicit analyzer target.\n\nRun `fensu <command> --help` for command-specific options.\n".to_owned()
|
|
3
|
+
}
|
{fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/inputs/arguments.rs
RENAMED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
use crate::dupes::constants::{DEFAULT_MIN_SIMILARITY, DEFAULT_MIN_TOKENS, DEFAULT_TOP, LANGUAGES};
|
|
4
4
|
use crate::dupes::models::DupesOptions;
|
|
5
5
|
|
|
6
|
-
const USAGE: &str = "usage: fensu dupes [-h] [--json] [--top TOP] [--min-similarity MIN_SIMILARITY]\n [--min-tokens MIN_TOKENS] [--lang LANG] [--path PATH]\n [--include-tests] [--since REV] [--diff]";
|
|
6
|
+
const USAGE: &str = "usage: fensu dupes [-h] [--json] [--top TOP] [--min-similarity MIN_SIMILARITY]\n [--min-tokens MIN_TOKENS] [--lang LANG] [--path PATH]\n [--include-tests] [--since REV] [--diff]\n [--fail-on-new]";
|
|
7
7
|
const MIN_SIMILARITY_EXCLUSIVE: f64 = 0.0;
|
|
8
8
|
const MAX_SIMILARITY: f64 = 1.0;
|
|
9
9
|
const MIN_COUNT: usize = 1;
|
|
@@ -28,6 +28,7 @@ pub(crate) fn parse_arguments(arguments: &[String]) -> Result<Option<DupesOption
|
|
|
28
28
|
include_tests: false,
|
|
29
29
|
since: None,
|
|
30
30
|
diff: false,
|
|
31
|
+
fail_on_new: false,
|
|
31
32
|
};
|
|
32
33
|
let mut position = 0;
|
|
33
34
|
while position < arguments.len() {
|
|
@@ -44,6 +45,7 @@ pub(crate) fn parse_arguments(arguments: &[String]) -> Result<Option<DupesOption
|
|
|
44
45
|
"--json" => options.json = true,
|
|
45
46
|
"--include-tests" => options.include_tests = true,
|
|
46
47
|
"--diff" => options.diff = true,
|
|
48
|
+
"--fail-on-new" => options.fail_on_new = true,
|
|
47
49
|
_ => return Err(usage_error(&format!("unrecognized arguments: {argument}"))),
|
|
48
50
|
}
|
|
49
51
|
position += 1;
|
|
@@ -61,6 +63,9 @@ pub(crate) fn parse_arguments(arguments: &[String]) -> Result<Option<DupesOption
|
|
|
61
63
|
options = apply_value(options, name, value)?;
|
|
62
64
|
position += 1;
|
|
63
65
|
}
|
|
66
|
+
if options.fail_on_new && options.since.is_none() {
|
|
67
|
+
return Err(usage_error("argument --fail-on-new: requires --since"));
|
|
68
|
+
}
|
|
64
69
|
if options.languages.is_empty() {
|
|
65
70
|
options.languages = LANGUAGES.to_vec();
|
|
66
71
|
}
|
{fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/dupes/_helpers/report/rendering.rs
RENAMED
|
@@ -8,6 +8,7 @@ use crate::dupes::models::{CloneCluster, CloneMember, DupesReport, MemberDiff};
|
|
|
8
8
|
const INDENT: &str = " ";
|
|
9
9
|
const DIFF_INDENT: &str = " ";
|
|
10
10
|
const ADVISORY: &str = "advisory; duplicated-code findings to review, not fensu check failures";
|
|
11
|
+
const GATED: &str = "--fail-on-new; each cluster touching changed lines fails the command";
|
|
11
12
|
|
|
12
13
|
pub(crate) fn render_text(report: &DupesReport, top: usize) -> String {
|
|
13
14
|
let scope = report
|
|
@@ -16,9 +17,10 @@ pub(crate) fn render_text(report: &DupesReport, top: usize) -> String {
|
|
|
16
17
|
.map_or_else(String::new, |revision| format!(" changed since {revision}"));
|
|
17
18
|
let mut lines = vec![
|
|
18
19
|
format!(
|
|
19
|
-
"fensu dupes: {} duplicated-code cluster{}{scope} ({
|
|
20
|
+
"fensu dupes: {} duplicated-code cluster{}{scope} ({})",
|
|
20
21
|
report.clusters.len(),
|
|
21
22
|
if report.clusters.len() == 1 { "" } else { "s" },
|
|
23
|
+
if report.advisory { ADVISORY } else { GATED },
|
|
22
24
|
),
|
|
23
25
|
summary_line(report),
|
|
24
26
|
];
|
|
@@ -72,7 +74,7 @@ pub(crate) fn render_json(report: &DupesReport, top: usize) -> Result<String, St
|
|
|
72
74
|
.collect::<Result<Vec<_>, String>>()?;
|
|
73
75
|
let payload = json!({
|
|
74
76
|
"command": "dupes",
|
|
75
|
-
"advisory":
|
|
77
|
+
"advisory": report.advisory,
|
|
76
78
|
"since": report.since,
|
|
77
79
|
"unit_counts": report.unit_counts,
|
|
78
80
|
"allowlisted_pairs": report.allowlisted_pairs,
|
|
@@ -57,4 +57,4 @@ pub(crate) const CONFIG_FORBIDDEN_OWNERS_KEY: &str = "forbidden_owners";
|
|
|
57
57
|
pub(crate) const RUST_TEST_DIRECTORIES: &[&str] = &["tests", "benches"];
|
|
58
58
|
pub(crate) const SCOPE_TEST: &str = "test";
|
|
59
59
|
|
|
60
|
-
pub(crate) const DUPES_HELP: &str = "usage: fensu dupes [-h] [--json] [--top TOP] [--min-similarity MIN_SIMILARITY]\n [--min-tokens MIN_TOKENS]\n [--lang {python,rust,typescript,javascript,svelte}]\n [--path PATH] [--include-tests] [--since REV] [--diff]\n\nReport duplicated code (advisory). Findings
|
|
60
|
+
pub(crate) const DUPES_HELP: &str = "usage: fensu dupes [-h] [--json] [--top TOP] [--min-similarity MIN_SIMILARITY]\n [--min-tokens MIN_TOKENS]\n [--lang {python,rust,typescript,javascript,svelte}]\n [--path PATH] [--include-tests] [--since REV] [--diff]\n [--fail-on-new]\n\nReport duplicated code (advisory). Findings fail the command only with\n--fail-on-new: it exits 0 whenever analysis succeeds, 1 when --fail-on-new finds\na cluster touching changed lines, and 2 for usage, configuration, or IO errors.\n\noptions:\n -h, --help show this help message and exit\n --json print deterministic JSON instead of text\n --top TOP number of clusters to print (default 30)\n --min-similarity MIN_SIMILARITY\n minimum token similarity in (0, 1] (default 0.8)\n --min-tokens MIN_TOKENS\n minimum normalised tokens per unit (default 60)\n --lang {python,rust,typescript,javascript,svelte}\n analyze one language; repeat for several\n --path PATH only clusters with a member matching this glob; repeatable\n --include-tests also analyze configured tests and Rust test code\n --since REV only clusters touching lines changed since REV,\n including uncommitted and untracked files\n --diff show where the first two visible members diverge\n --fail-on-new exit 1 when a cluster not hidden by [dupes] touches\n lines changed since --since REV\n";
|
|
@@ -11,7 +11,7 @@ use crate::dupes::_helpers::report::rendering::{render_json, render_text};
|
|
|
11
11
|
use crate::dupes::constants::DUPES_HELP;
|
|
12
12
|
use crate::models::CliOutput;
|
|
13
13
|
|
|
14
|
-
/// Exit 0
|
|
14
|
+
/// Exit 0 when analysis succeeds, 1 when `--fail-on-new` finds a cluster, and 2 on errors.
|
|
15
15
|
pub(crate) fn run_dupes(arguments: &[String]) -> Result<CliOutput, String> {
|
|
16
16
|
let Some(options) = parse_arguments(arguments)? else {
|
|
17
17
|
return Ok(CliOutput::success(DUPES_HELP.to_owned()));
|
|
@@ -31,14 +31,27 @@ pub(crate) fn run_dupes(arguments: &[String]) -> Result<CliOutput, String> {
|
|
|
31
31
|
render_text(&report, options.top)
|
|
32
32
|
};
|
|
33
33
|
let units: usize = report.unit_counts.values().sum();
|
|
34
|
+
let clusters = report.clusters.len();
|
|
35
|
+
let plural = if clusters == 1 { "" } else { "s" };
|
|
36
|
+
let mut stderr = format!(
|
|
37
|
+
"fensu dupes: found {clusters} duplicated-code cluster{plural} across {units} units in {:.1}s",
|
|
38
|
+
started.elapsed().as_secs_f64()
|
|
39
|
+
);
|
|
40
|
+
let failed = options.fail_on_new && clusters > 0;
|
|
41
|
+
stderr.push_str(match (options.fail_on_new, failed) {
|
|
42
|
+
(false, _) => " (advisory)\n",
|
|
43
|
+
(true, false) => " (no new clusters)\n",
|
|
44
|
+
(true, true) => "\n",
|
|
45
|
+
});
|
|
46
|
+
if failed {
|
|
47
|
+
let verb = if clusters == 1 { "touches" } else { "touch" };
|
|
48
|
+
stderr.push_str(&format!(
|
|
49
|
+
"fensu dupes: failed: {clusters} new cluster{plural} {verb} changed lines; consolidate them or list them in [dupes] allowlist with a reason\n"
|
|
50
|
+
));
|
|
51
|
+
}
|
|
34
52
|
Ok(CliOutput {
|
|
35
53
|
stdout,
|
|
36
|
-
stderr
|
|
37
|
-
|
|
38
|
-
report.clusters.len(),
|
|
39
|
-
if report.clusters.len() == 1 { "" } else { "s" },
|
|
40
|
-
started.elapsed().as_secs_f64()
|
|
41
|
-
),
|
|
42
|
-
exit_code: 0,
|
|
54
|
+
stderr,
|
|
55
|
+
exit_code: i32::from(failed),
|
|
43
56
|
})
|
|
44
57
|
}
|
|
@@ -16,6 +16,7 @@ pub(crate) struct DupesOptions {
|
|
|
16
16
|
pub(crate) include_tests: bool,
|
|
17
17
|
pub(crate) since: Option<String>,
|
|
18
18
|
pub(crate) diff: bool,
|
|
19
|
+
pub(crate) fail_on_new: bool,
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
#[derive(Clone, Debug, Default)]
|
|
@@ -163,6 +164,7 @@ pub(crate) struct CloneCluster {
|
|
|
163
164
|
#[derive(Clone, Debug)]
|
|
164
165
|
pub(crate) struct DupesReport {
|
|
165
166
|
pub(crate) since: Option<String>,
|
|
167
|
+
pub(crate) advisory: bool,
|
|
166
168
|
pub(crate) unit_counts: BTreeMap<&'static str, usize>,
|
|
167
169
|
pub(crate) allowlisted_pairs: usize,
|
|
168
170
|
pub(crate) contract_exempt_members: usize,
|
|
@@ -6,6 +6,101 @@ use crate::test_types::{
|
|
|
6
6
|
OwnerPlanningTestCase, RuleOptionsCheckRoutingTestCase, TargetSkillFreshnessTestCase,
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
+
#[test]
|
|
10
|
+
fn given_declaration_role_directories_when_checking_then_enforces_file_equivalent_policy() {
|
|
11
|
+
let test_cases = [
|
|
12
|
+
NativeRulePackTestCase {
|
|
13
|
+
description: "declarations in all four role directories are recognized",
|
|
14
|
+
config: "select = ['FFR101', 'FFR102', 'FFR103', 'FFR104']\n",
|
|
15
|
+
expected_exit_code: 0,
|
|
16
|
+
expected_output: "Found 0 faults",
|
|
17
|
+
},
|
|
18
|
+
NativeRulePackTestCase {
|
|
19
|
+
description: "mutable models retain their immutability policy",
|
|
20
|
+
config: "select = ['FFS201']\n",
|
|
21
|
+
expected_exit_code: 1,
|
|
22
|
+
expected_output: "models/context.py:3:0",
|
|
23
|
+
},
|
|
24
|
+
NativeRulePackTestCase {
|
|
25
|
+
description: "an exact file exception permits a declaration-only mutable context",
|
|
26
|
+
config: "select = ['FFS201']\n[[rule_exceptions]]\nrule = 'FFS201'\npath = 'src/pkg/orders/models/context.py'\nreason = 'Invocation-local progress is committed by the native coordinator.'\n",
|
|
27
|
+
expected_exit_code: 0,
|
|
28
|
+
expected_output: "Found 0 faults",
|
|
29
|
+
},
|
|
30
|
+
NativeRulePackTestCase {
|
|
31
|
+
description: "model packages cannot contain behavior",
|
|
32
|
+
config: "select = ['FFR001']\n",
|
|
33
|
+
expected_exit_code: 1,
|
|
34
|
+
expected_output: "models/behavior.py:1:0",
|
|
35
|
+
},
|
|
36
|
+
NativeRulePackTestCase {
|
|
37
|
+
description: "model packages cannot contain runtime statements",
|
|
38
|
+
config: "select = ['FFR001']\n",
|
|
39
|
+
expected_exit_code: 1,
|
|
40
|
+
expected_output: "models/runtime.py:1:0",
|
|
41
|
+
},
|
|
42
|
+
NativeRulePackTestCase {
|
|
43
|
+
description: "model package initializers must still be empty",
|
|
44
|
+
config: "select = ['FFR402']\n",
|
|
45
|
+
expected_exit_code: 1,
|
|
46
|
+
expected_output: "models/__init__.py:0:0",
|
|
47
|
+
},
|
|
48
|
+
NativeRulePackTestCase {
|
|
49
|
+
description: "model package modules cannot become reexport shims",
|
|
50
|
+
config: "select = ['FFR403']\n",
|
|
51
|
+
expected_exit_code: 1,
|
|
52
|
+
expected_output: "models/exports.py:0:0",
|
|
53
|
+
},
|
|
54
|
+
NativeRulePackTestCase {
|
|
55
|
+
description: "ownership roots cannot cross a declaration role directory",
|
|
56
|
+
config: "select = []\nownership_roots = ['src/pkg/orders/models']\n",
|
|
57
|
+
expected_exit_code: 2,
|
|
58
|
+
expected_output: "ownership root crosses a role directory",
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
for test_case in test_cases {
|
|
62
|
+
let repository = tempfile::tempdir().expect("declaration role repository");
|
|
63
|
+
write(
|
|
64
|
+
repository.path().join("fensu.toml"),
|
|
65
|
+
&format!(
|
|
66
|
+
"roots = ['src/pkg']\ntests = []\ntooling = []\n{}",
|
|
67
|
+
test_case.config
|
|
68
|
+
),
|
|
69
|
+
);
|
|
70
|
+
for (path, source) in [
|
|
71
|
+
("models/record.py", "from dataclasses import dataclass\n@dataclass(frozen=True)\nclass Record:\n value: int\n"),
|
|
72
|
+
("models/context.py", "from dataclasses import dataclass\n@dataclass(kw_only=True)\nclass Context:\n cursor: str | None\n"),
|
|
73
|
+
("models/behavior.py", "def execute() -> None:\n print('work')\n"),
|
|
74
|
+
("models/runtime.py", "print('work')\n"),
|
|
75
|
+
("models/constants.py", "MAX_RECORDS: int = 10\n"),
|
|
76
|
+
("models/__init__.py", "from .record import Record\n__all__ = ('Record',)\n"),
|
|
77
|
+
("models/exports.py", "from .record import Record\n__all__ = ('Record',)\n"),
|
|
78
|
+
("types/identifier.py", "type Identifier = str\n"),
|
|
79
|
+
("constants/limits.py", "MAX_ITEMS: int = 10\n"),
|
|
80
|
+
("exceptions/invalid.py", "class InvalidInput(Exception):\n pass\n"),
|
|
81
|
+
] {
|
|
82
|
+
write(repository.path().join("src/pkg/orders").join(path), source);
|
|
83
|
+
}
|
|
84
|
+
let output = run_check(repository.path());
|
|
85
|
+
let text = format!(
|
|
86
|
+
"{}{}",
|
|
87
|
+
String::from_utf8_lossy(&output.stdout),
|
|
88
|
+
String::from_utf8_lossy(&output.stderr)
|
|
89
|
+
);
|
|
90
|
+
assert_eq!(
|
|
91
|
+
output.status.code(),
|
|
92
|
+
Some(test_case.expected_exit_code),
|
|
93
|
+
"{}: {text}",
|
|
94
|
+
test_case.description
|
|
95
|
+
);
|
|
96
|
+
assert!(
|
|
97
|
+
text.contains(test_case.expected_output),
|
|
98
|
+
"{}: {text}",
|
|
99
|
+
test_case.description
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
9
104
|
#[test]
|
|
10
105
|
fn given_selected_target_with_stale_skill_when_checking_then_cached_and_uncached_paths_warn() {
|
|
11
106
|
let test_cases = [TargetSkillFreshnessTestCase {
|
|
@@ -188,12 +188,12 @@ fn given_invalid_configuration_or_arguments_when_running_dupes_then_errors_exit_
|
|
|
188
188
|
expected_stderr: &["argument --lang: invalid choice: 'cobol'"],
|
|
189
189
|
},
|
|
190
190
|
CommandOutputTestCase {
|
|
191
|
-
description: "help documents the
|
|
191
|
+
description: "help documents the exit contract",
|
|
192
192
|
config: with_dupes(""),
|
|
193
193
|
files: copies(),
|
|
194
194
|
arguments: &["--help"],
|
|
195
195
|
expected_exit_code: 0,
|
|
196
|
-
expected_stdout: &["usage: fensu dupes", "Findings
|
|
196
|
+
expected_stdout: &["usage: fensu dupes", "Findings fail the command only with\n--fail-on-new"],
|
|
197
197
|
expected_stderr: &[],
|
|
198
198
|
},
|
|
199
199
|
];
|
|
@@ -3,7 +3,9 @@ use crate::helpers::{
|
|
|
3
3
|
spaced_summaries, summary, text, write, write_files, PYTHON_CONFIG, PYTHON_EXTRA,
|
|
4
4
|
PYTHON_UNRELATED,
|
|
5
5
|
};
|
|
6
|
-
use crate::test_types::{
|
|
6
|
+
use crate::test_types::{
|
|
7
|
+
ChangedSinceTestCase, CommandOutputTestCase, FailOnNewTestCase, JsonShapeTestCase,
|
|
8
|
+
};
|
|
7
9
|
|
|
8
10
|
#[test]
|
|
9
11
|
fn given_clone_findings_when_rendering_text_then_output_is_advisory_ranked_and_exits_zero() {
|
|
@@ -362,3 +364,107 @@ fn given_git_changes_when_filtering_since_revision_then_only_touched_clusters_re
|
|
|
362
364
|
);
|
|
363
365
|
}
|
|
364
366
|
}
|
|
367
|
+
|
|
368
|
+
#[test]
|
|
369
|
+
fn given_fail_on_new_when_a_changed_line_joins_a_cluster_then_only_unlisted_clusters_fail() {
|
|
370
|
+
let allowlisted = format!(
|
|
371
|
+
"{PYTHON_CONFIG}\n[dupes]\n\n[[dupes.allowlist]]\npaths = [\"src/shop/*/summary.py\"]\nreason = \"Exports mirror the order summary contract.\"\n"
|
|
372
|
+
);
|
|
373
|
+
let test_cases = [
|
|
374
|
+
FailOnNewTestCase {
|
|
375
|
+
description: "a new copy of committed code fails",
|
|
376
|
+
config: PYTHON_CONFIG.to_owned(),
|
|
377
|
+
worktree: vec![("src/shop/exports/summary.py", summary(""))],
|
|
378
|
+
arguments: &["--since", "HEAD", "--fail-on-new"],
|
|
379
|
+
expected_exit: 1,
|
|
380
|
+
expected_stdout:
|
|
381
|
+
"(--fail-on-new; each cluster touching changed lines fails the command)",
|
|
382
|
+
expected_stderr: "1 new cluster touches changed lines",
|
|
383
|
+
},
|
|
384
|
+
FailOnNewTestCase {
|
|
385
|
+
description: "an allowlisted new copy passes",
|
|
386
|
+
config: allowlisted,
|
|
387
|
+
worktree: vec![("src/shop/exports/summary.py", summary(""))],
|
|
388
|
+
arguments: &["--since", "HEAD", "--fail-on-new"],
|
|
389
|
+
expected_exit: 0,
|
|
390
|
+
expected_stdout: "(--fail-on-new;",
|
|
391
|
+
expected_stderr: "(no new clusters)",
|
|
392
|
+
},
|
|
393
|
+
FailOnNewTestCase {
|
|
394
|
+
description: "an existing cluster untouched by the change passes",
|
|
395
|
+
config: PYTHON_CONFIG.to_owned(),
|
|
396
|
+
worktree: vec![("src/shop/warehouse/notes.py", "NOTE = 1\n".to_owned())],
|
|
397
|
+
arguments: &["--since", "HEAD", "--fail-on-new"],
|
|
398
|
+
expected_exit: 0,
|
|
399
|
+
expected_stdout: "(--fail-on-new;",
|
|
400
|
+
expected_stderr: "(no new clusters)",
|
|
401
|
+
},
|
|
402
|
+
FailOnNewTestCase {
|
|
403
|
+
description: "the same new copy without the flag stays advisory",
|
|
404
|
+
config: PYTHON_CONFIG.to_owned(),
|
|
405
|
+
worktree: vec![("src/shop/exports/summary.py", summary(""))],
|
|
406
|
+
arguments: &["--since", "HEAD"],
|
|
407
|
+
expected_exit: 0,
|
|
408
|
+
expected_stdout: "(advisory;",
|
|
409
|
+
expected_stderr: "(advisory)",
|
|
410
|
+
},
|
|
411
|
+
FailOnNewTestCase {
|
|
412
|
+
description: "JSON output reports the run as gated",
|
|
413
|
+
config: PYTHON_CONFIG.to_owned(),
|
|
414
|
+
worktree: vec![("src/shop/exports/summary.py", summary(""))],
|
|
415
|
+
arguments: &["--since", "HEAD", "--fail-on-new", "--json"],
|
|
416
|
+
expected_exit: 1,
|
|
417
|
+
expected_stdout: "\"advisory\": false",
|
|
418
|
+
expected_stderr: "1 new cluster touches changed lines",
|
|
419
|
+
},
|
|
420
|
+
FailOnNewTestCase {
|
|
421
|
+
description: "the flag without a base revision is a usage error",
|
|
422
|
+
config: PYTHON_CONFIG.to_owned(),
|
|
423
|
+
worktree: vec![],
|
|
424
|
+
arguments: &["--fail-on-new"],
|
|
425
|
+
expected_exit: 2,
|
|
426
|
+
expected_stdout: "",
|
|
427
|
+
expected_stderr: "--fail-on-new: requires --since",
|
|
428
|
+
},
|
|
429
|
+
];
|
|
430
|
+
for test_case in &test_cases {
|
|
431
|
+
let repository = tempfile::tempdir().expect("temporary repository");
|
|
432
|
+
write(repository.path().join("fensu.toml"), &test_case.config);
|
|
433
|
+
write_files(
|
|
434
|
+
repository.path(),
|
|
435
|
+
&[
|
|
436
|
+
("src/shop/orders/summary.py", summary("")),
|
|
437
|
+
("src/shop/billing/summary.py", summary("")),
|
|
438
|
+
],
|
|
439
|
+
);
|
|
440
|
+
git(repository.path(), &["init", "--quiet"]);
|
|
441
|
+
git(repository.path(), &["add", "."]);
|
|
442
|
+
git(
|
|
443
|
+
repository.path(),
|
|
444
|
+
&["commit", "--quiet", "-m", "seed orders"],
|
|
445
|
+
);
|
|
446
|
+
write_files(repository.path(), &test_case.worktree);
|
|
447
|
+
|
|
448
|
+
let output = run_dupes(repository.path(), test_case.arguments);
|
|
449
|
+
|
|
450
|
+
assert_eq!(
|
|
451
|
+
output.status.code(),
|
|
452
|
+
Some(test_case.expected_exit),
|
|
453
|
+
"{}: {}",
|
|
454
|
+
test_case.description,
|
|
455
|
+
text(&output.stderr)
|
|
456
|
+
);
|
|
457
|
+
assert!(
|
|
458
|
+
text(&output.stdout).contains(test_case.expected_stdout),
|
|
459
|
+
"{}: {}",
|
|
460
|
+
test_case.description,
|
|
461
|
+
text(&output.stdout)
|
|
462
|
+
);
|
|
463
|
+
assert!(
|
|
464
|
+
text(&output.stderr).contains(test_case.expected_stderr),
|
|
465
|
+
"{}: {}",
|
|
466
|
+
test_case.description,
|
|
467
|
+
text(&output.stderr)
|
|
468
|
+
);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
@@ -43,3 +43,13 @@ pub(crate) struct JsonShapeTestCase {
|
|
|
43
43
|
pub(crate) expected_member_keys: &'static [&'static str],
|
|
44
44
|
pub(crate) expected_diff_lines: &'static [(u64, u64, &'static str)],
|
|
45
45
|
}
|
|
46
|
+
|
|
47
|
+
pub(crate) struct FailOnNewTestCase {
|
|
48
|
+
pub(crate) description: &'static str,
|
|
49
|
+
pub(crate) config: String,
|
|
50
|
+
pub(crate) worktree: Vec<(&'static str, String)>,
|
|
51
|
+
pub(crate) arguments: &'static [&'static str],
|
|
52
|
+
pub(crate) expected_exit: i32,
|
|
53
|
+
pub(crate) expected_stdout: &'static str,
|
|
54
|
+
pub(crate) expected_stderr: &'static str,
|
|
55
|
+
}
|
|
@@ -281,11 +281,7 @@ fn custom_rule_coverage_faults(code: &str, context: &NativeRuleContext) -> Vec<N
|
|
|
281
281
|
let mut parts = answer.split('\0');
|
|
282
282
|
(parts.next()? == rule_code).then(|| {
|
|
283
283
|
(
|
|
284
|
-
parts
|
|
285
|
-
.next()
|
|
286
|
-
.unwrap_or("0")
|
|
287
|
-
.parse::<u32>()
|
|
288
|
-
.map_or(0, |count| count),
|
|
284
|
+
parts.next().unwrap_or("0").parse::<u32>().unwrap_or(0),
|
|
289
285
|
parts.next() == Some("true"),
|
|
290
286
|
)
|
|
291
287
|
})
|
|
@@ -4,7 +4,7 @@ build-backend = "maturin"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "fensu-cli"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.29.0" # x-release-please-version
|
|
8
8
|
description = "Native command-line executable for fensu"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
pub(super) fn help() -> String {
|
|
2
|
-
"Usage: fensu {init,check,dupes,rule,map,skills,target} ...\n\nCommands:\n init Initialize Fensu configuration for a repository.\n check Evaluate repository architecture rules.\n dupes Report duplicated code (advisory; never fails on findings).\n rule Show details for one rule.\n map Render a directional project call map.\n skills Generate and install agent guidance.\n target Add an explicit analyzer target.\n\nRun `fensu <command> --help` for command-specific options.\n".to_owned()
|
|
3
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/catalogue/main/resolve_native_options.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/_helpers/web_custom_facts.inc
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/check_output_options.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/discover_target_sources.rs
RENAMED
|
File without changes
|
|
File without changes
|
{fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/execute_structured_check.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/render_check_results.rs
RENAMED
|
File without changes
|
{fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/repository_python_targets.rs
RENAMED
|
File without changes
|
{fensu_cli-0.28.2 → fensu_cli-0.29.0}/crates/fensu-cli/src/check/main/required_thresholds.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|