fensu-cli 0.29.2__tar.gz → 0.30.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.
Files changed (729) hide show
  1. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/Cargo.lock +5 -4
  2. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/Cargo.toml +2 -1
  3. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/PKG-INFO +1 -1
  4. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/Cargo.toml +1 -1
  5. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/evaluation.rs +9 -15
  6. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/execution.rs +2 -1
  7. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/project.rs +2 -2
  8. fensu_cli-0.30.0/crates/fensu-cli/src/check/main/render_check_results.rs +19 -0
  9. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/_helpers/check_partition/execution.rs +1 -1
  10. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/_helpers/parsing.rs +1 -1
  11. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/reporting/main/report.rs +9 -2
  12. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/reporting/models.rs +2 -0
  13. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/tests/test_render.rs +1 -0
  14. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_check_mixed_targets.rs +55 -0
  15. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_types.rs +7 -0
  16. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/Cargo.toml +9 -2
  17. fensu_cli-0.30.0/crates/fensu-facts/README.md +11 -0
  18. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/models.rs +5 -0
  19. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/mod.rs +2 -0
  20. fensu_cli-0.30.0/crates/fensu-facts/src/lib.rs +22 -0
  21. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/main/breadth_first_from.rs +1 -1
  22. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/main/breadth_first_nodes.rs +1 -1
  23. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/main/breadth_first_with_parents.rs +3 -1
  24. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/main/children.rs +1 -1
  25. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/main/kind_name.rs +1 -1
  26. fensu_cli-0.30.0/crates/fensu-facts/src/syntax/main/mod.rs +11 -0
  27. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/main/push_clause_orelse.rs +1 -1
  28. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/main/span.rs +1 -1
  29. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/main/start_of.rs +1 -1
  30. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/main/strict_reference_parts.rs +1 -1
  31. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/mod.rs +3 -3
  32. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/types.rs +1 -1
  33. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/Cargo.toml +11 -6
  34. fensu_cli-0.30.0/crates/fensu-native/README.md +26 -0
  35. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/extension/main/mod.rs +1 -1
  36. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/extension/main/register_module.rs +1 -1
  37. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/extension/mod.rs +1 -1
  38. fensu_cli-0.30.0/crates/fensu-native/src/lib.rs +21 -0
  39. fensu_cli-0.30.0/crates/fensu-native/src/rules/main/mod.rs +8 -0
  40. fensu_cli-0.30.0/crates/fensu-native/src/rules/mod.rs +7 -0
  41. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/tests/rules/helpers.rs +10 -12
  42. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/tests/rules/test_contracts.rs +3 -3
  43. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/tests/rules/test_types.rs +1 -1
  44. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/Cargo.toml +1 -1
  45. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/pyproject.toml +1 -1
  46. fensu_cli-0.29.2/crates/fensu-cli/src/check/main/render_check_results.rs +0 -14
  47. fensu_cli-0.29.2/crates/fensu-facts/src/lib.rs +0 -12
  48. fensu_cli-0.29.2/crates/fensu-facts/src/syntax/main/mod.rs +0 -11
  49. fensu_cli-0.29.2/crates/fensu-native/src/lib.rs +0 -8
  50. fensu_cli-0.29.2/crates/fensu-native/src/rules/main/mod.rs +0 -8
  51. fensu_cli-0.29.2/crates/fensu-native/src/rules/mod.rs +0 -7
  52. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/README.md +0 -0
  53. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/build.rs +0 -0
  54. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/analyzer.rs +0 -0
  55. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/_helpers/arguments.rs +0 -0
  56. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/_helpers/loading.rs +0 -0
  57. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/_helpers/mod.rs +0 -0
  58. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/_helpers/options.rs +0 -0
  59. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/_helpers/policy.rs +0 -0
  60. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/_helpers/rendering.rs +0 -0
  61. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/data/catalogue.json +0 -0
  62. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/main/mod.rs +0 -0
  63. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/main/resolve_native_options.rs +0 -0
  64. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/main/rule_catalogue.rs +0 -0
  65. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/main/rule_metadata.rs +0 -0
  66. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/main/rule_output.rs +0 -0
  67. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/main/validate_config_selectors.rs +0 -0
  68. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/mod.rs +0 -0
  69. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/catalogue/models.rs +0 -0
  70. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/cache.rs +0 -0
  71. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/cleanup.rs +0 -0
  72. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/exceptions.rs +0 -0
  73. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/mod.rs +0 -0
  74. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/options.rs +0 -0
  75. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/policy.rs +0 -0
  76. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/preparation.rs +0 -0
  77. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/preparation_ownership.inc +0 -0
  78. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/repository_custom_facts.inc +0 -0
  79. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/rule_policy.rs +0 -0
  80. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/web.inc +0 -0
  81. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/web_custom_facts.inc +0 -0
  82. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/_helpers/web_policy.inc +0 -0
  83. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/constants.rs +0 -0
  84. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/main/check_output_options.rs +0 -0
  85. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/main/check_routing.rs +0 -0
  86. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/main/clean_caches.rs +0 -0
  87. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/main/discover_target_sources.rs +0 -0
  88. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/main/execute_check.rs +0 -0
  89. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/main/execute_structured_check.rs +0 -0
  90. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/main/mod.rs +0 -0
  91. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/main/prepare_cleanup.rs +0 -0
  92. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/main/python_version.rs +0 -0
  93. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/main/repository_python_targets.rs +0 -0
  94. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/main/required_thresholds.rs +0 -0
  95. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/mod.rs +0 -0
  96. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/check/models.rs +0 -0
  97. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/_helpers/check_partition/mod.rs +0 -0
  98. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/_helpers/map/mod.rs +0 -0
  99. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/_helpers/map/parsing.rs +0 -0
  100. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/_helpers/mod.rs +0 -0
  101. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/constants.rs +0 -0
  102. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/main/_check.rs +0 -0
  103. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/main/_dupes.rs +0 -0
  104. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/main/_help.rs +0 -0
  105. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/main/_init.rs +0 -0
  106. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/main/_map.rs +0 -0
  107. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/main/_rule.rs +0 -0
  108. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/main/_run_cli.rs +0 -0
  109. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/main/_skills.rs +0 -0
  110. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/main/_target.rs +0 -0
  111. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/main/execute_cli.rs +0 -0
  112. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/main/mod.rs +0 -0
  113. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/command/mod.rs +0 -0
  114. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/_helpers/discovery.rs +0 -0
  115. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/_helpers/exception_targets.rs +0 -0
  116. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/_helpers/exceptions.rs +0 -0
  117. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/_helpers/loading.rs +0 -0
  118. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/_helpers/mod.rs +0 -0
  119. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/_helpers/native_rules.rs +0 -0
  120. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/_helpers/roots.rs +0 -0
  121. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/_helpers/scopes.rs +0 -0
  122. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/_helpers/selectors.rs +0 -0
  123. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/_helpers/validation.rs +0 -0
  124. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/constants.rs +0 -0
  125. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/configuration_directory.rs +0 -0
  126. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/expand_path_pattern.rs +0 -0
  127. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/is_rule_code.rs +0 -0
  128. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/is_rule_selector.rs +0 -0
  129. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/load_config_section.rs +0 -0
  130. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/load_optional.rs +0 -0
  131. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/load_repository_rule_config.rs +0 -0
  132. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/load_repository_rule_policy.rs +0 -0
  133. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/load_target.rs +0 -0
  134. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/load_targets.rs +0 -0
  135. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/mod.rs +0 -0
  136. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/render_target_config.rs +0 -0
  137. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/resolve_target_root.rs +0 -0
  138. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/rust_exception_symbols.rs +0 -0
  139. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/validate_document.rs +0 -0
  140. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/main/validate_exception_targets.rs +0 -0
  141. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/configuration/mod.rs +0 -0
  142. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/constants.rs +0 -0
  143. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/contracts/classes.rs +0 -0
  144. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/contracts/forced.rs +0 -0
  145. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/contracts/mod.rs +0 -0
  146. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/inputs/arguments.rs +0 -0
  147. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/inputs/changes.rs +0 -0
  148. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/inputs/config.rs +0 -0
  149. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/inputs/globs.rs +0 -0
  150. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/inputs/mod.rs +0 -0
  151. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/inputs/sources.rs +0 -0
  152. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/matching/clustering.rs +0 -0
  153. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/matching/fingerprints.rs +0 -0
  154. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/matching/mod.rs +0 -0
  155. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/matching/pairs.rs +0 -0
  156. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/matching/sequence.rs +0 -0
  157. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/mod.rs +0 -0
  158. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/report/build.rs +0 -0
  159. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/report/diff.rs +0 -0
  160. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/report/mod.rs +0 -0
  161. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/report/rendering.rs +0 -0
  162. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/units/collection.rs +0 -0
  163. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/units/lines.rs +0 -0
  164. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/units/mod.rs +0 -0
  165. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/units/python.rs +0 -0
  166. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/units/rust.rs +0 -0
  167. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/_helpers/units/web.rs +0 -0
  168. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/constants.rs +0 -0
  169. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/main/mod.rs +0 -0
  170. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/main/run_dupes.rs +0 -0
  171. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/mod.rs +0 -0
  172. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/dupes/models.rs +0 -0
  173. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/hosting/_helpers/authoring.rs +0 -0
  174. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/hosting/_helpers/interpreter.rs +0 -0
  175. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/hosting/_helpers/metadata_exchange.rs +0 -0
  176. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/hosting/_helpers/mod.rs +0 -0
  177. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/hosting/constants.rs +0 -0
  178. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/hosting/main/mod.rs +0 -0
  179. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/hosting/main/run_custom_check_host.rs +0 -0
  180. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/hosting/main/run_repository_custom_rule_host.rs +0 -0
  181. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/hosting/main/run_rust_custom_rule_host.rs +0 -0
  182. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/hosting/main/run_skills_metadata_host.rs +0 -0
  183. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/hosting/main/run_web_custom_rule_host.rs +0 -0
  184. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/hosting/mod.rs +0 -0
  185. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/init/_helpers/arguments.rs +0 -0
  186. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/init/_helpers/discovery.rs +0 -0
  187. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/init/_helpers/layout.rs +0 -0
  188. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/init/_helpers/mod.rs +0 -0
  189. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/init/_helpers/packages.rs +0 -0
  190. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/init/_helpers/reporting.rs +0 -0
  191. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/init/_helpers/validation.rs +0 -0
  192. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/init/_helpers/writing.rs +0 -0
  193. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/init/constants.rs +0 -0
  194. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/init/data/python.gitignore +0 -0
  195. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/init/main/mod.rs +0 -0
  196. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/init/main/run_init.rs +0 -0
  197. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/init/mod.rs +0 -0
  198. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/init/models.rs +0 -0
  199. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/lib.rs +0 -0
  200. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/main.rs +0 -0
  201. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/_helpers/cache.rs +0 -0
  202. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/_helpers/decoding.rs +0 -0
  203. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/_helpers/execution.rs +0 -0
  204. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/_helpers/identity.rs +0 -0
  205. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/_helpers/index.rs +0 -0
  206. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/_helpers/mod.rs +0 -0
  207. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/_helpers/project.rs +0 -0
  208. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/_helpers/render.rs +0 -0
  209. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/_helpers/tree.rs +0 -0
  210. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/_helpers/tree_policy.inc +0 -0
  211. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/constants.rs +0 -0
  212. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/main/map.rs +0 -0
  213. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/main/mod.rs +0 -0
  214. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/mod.rs +0 -0
  215. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/mapping/models.rs +0 -0
  216. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/models.rs +0 -0
  217. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/reporting/_helpers/faults.rs +0 -0
  218. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/reporting/_helpers/mod.rs +0 -0
  219. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/reporting/_helpers/text.rs +0 -0
  220. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/reporting/constants.rs +0 -0
  221. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/reporting/main/mod.rs +0 -0
  222. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/reporting/mod.rs +0 -0
  223. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/repository_io/_helpers/files.rs +0 -0
  224. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/repository_io/_helpers/mod.rs +0 -0
  225. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/repository_io/main/acquire_operation_lock.rs +0 -0
  226. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/repository_io/main/mod.rs +0 -0
  227. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/repository_io/main/open_repository.rs +0 -0
  228. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/repository_io/main/read_optional.rs +0 -0
  229. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/repository_io/main/relative_path.rs +0 -0
  230. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/repository_io/main/write_if_unchanged.rs +0 -0
  231. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/repository_io/mod.rs +0 -0
  232. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/repository_io/models.rs +0 -0
  233. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/command/execution.rs +0 -0
  234. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/command/mod.rs +0 -0
  235. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/content/discovery.rs +0 -0
  236. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/content/fingerprint.rs +0 -0
  237. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/content/mod.rs +0 -0
  238. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/content/option_rendering.rs +0 -0
  239. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/content/rendering.rs +0 -0
  240. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/content/rule_rendering.rs +0 -0
  241. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/content/sections.rs +0 -0
  242. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/context/build.rs +0 -0
  243. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/context/exceptions.rs +0 -0
  244. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/context/identity.rs +0 -0
  245. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/context/mod.rs +0 -0
  246. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/context/option_validation.rs +0 -0
  247. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/context/options.rs +0 -0
  248. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/context/selection.rs +0 -0
  249. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/installation/filesystem.rs +0 -0
  250. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/installation/freshness.rs +0 -0
  251. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/installation/install.rs +0 -0
  252. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/installation/mod.rs +0 -0
  253. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/installation/plan.rs +0 -0
  254. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/installation/publication.rs +0 -0
  255. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/installation/transaction.rs +0 -0
  256. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/_helpers/mod.rs +0 -0
  257. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/data/skills_invariant.json +0 -0
  258. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/main/catalogue.rs +0 -0
  259. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/main/core_freshness.rs +0 -0
  260. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/main/execute.rs +0 -0
  261. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/main/mod.rs +0 -0
  262. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/main/skills.rs +0 -0
  263. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/mod.rs +0 -0
  264. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/skills/models.rs +0 -0
  265. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/target_command/_helpers/addition.rs +0 -0
  266. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/target_command/_helpers/arguments.rs +0 -0
  267. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/target_command/_helpers/mod.rs +0 -0
  268. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/target_command/_helpers/paths.rs +0 -0
  269. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/target_command/constants.rs +0 -0
  270. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/target_command/main/mod.rs +0 -0
  271. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/target_command/main/run_target.rs +0 -0
  272. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/target_command/mod.rs +0 -0
  273. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/target_command/models.rs +0 -0
  274. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/tests/helpers.rs +0 -0
  275. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/tests/test_analyzer.rs +0 -0
  276. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/tests/test_dupes.rs +0 -0
  277. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/tests/test_policy.rs +0 -0
  278. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/tests/test_rule_catalogue.rs +0 -0
  279. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/tests/test_types.rs +0 -0
  280. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/tests/test_web_analysis.rs +0 -0
  281. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/src/tests.rs +0 -0
  282. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/check/helpers.rs +0 -0
  283. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/check/test_dead_code.rs +0 -0
  284. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/check/test_types.rs +0 -0
  285. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/check.rs +0 -0
  286. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/helpers.rs +0 -0
  287. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_check_cleanup.rs +0 -0
  288. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_check_exceptions.rs +0 -0
  289. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_check_policy.rs +0 -0
  290. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_check_repository_custom.rs +0 -0
  291. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_check_rust.rs +0 -0
  292. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_check_rust_exceptions.rs +0 -0
  293. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_check_validation.rs +0 -0
  294. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_check_web.rs +0 -0
  295. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_check_web_boundaries.rs +0 -0
  296. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_check_web_custom.rs +0 -0
  297. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_check_web_layout.rs +0 -0
  298. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_rule.rs +0 -0
  299. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/test_rust_file_placement.rs +0 -0
  300. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command/web_policy_fixtures.inc +0 -0
  301. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/command.rs +0 -0
  302. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/dupes/helpers.rs +0 -0
  303. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/dupes/test_config.rs +0 -0
  304. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/dupes/test_contracts.rs +0 -0
  305. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/dupes/test_detection.rs +0 -0
  306. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/dupes/test_reporting.rs +0 -0
  307. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/dupes/test_types.rs +0 -0
  308. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/dupes.rs +0 -0
  309. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/init/helpers.rs +0 -0
  310. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/init/test_commands.rs +0 -0
  311. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/init/test_types.rs +0 -0
  312. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/init.rs +0 -0
  313. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/mapping/commands.inc +0 -0
  314. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/mapping/helpers.rs +0 -0
  315. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/mapping/test_commands.rs +0 -0
  316. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/mapping/test_types.rs +0 -0
  317. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/mapping.rs +0 -0
  318. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/skills/commands.inc +0 -0
  319. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/skills/helpers.rs +0 -0
  320. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/skills/test_commands.rs +0 -0
  321. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/skills/test_types.rs +0 -0
  322. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-cli/tests/skills.rs +0 -0
  323. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/constants.rs +0 -0
  324. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/dead_code/_helpers/graph.rs +0 -0
  325. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/dead_code/_helpers/mod.rs +0 -0
  326. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/dead_code/main/analyze.rs +0 -0
  327. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/dead_code/main/evaluate_graph.rs +0 -0
  328. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/dead_code/main/extract.rs +0 -0
  329. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/dead_code/main/mod.rs +0 -0
  330. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/dead_code/mod.rs +0 -0
  331. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/dead_code/models.rs +0 -0
  332. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/conversion/annotations.rs +0 -0
  333. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/conversion/contracts.rs +0 -0
  334. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/conversion/declarations.rs +0 -0
  335. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/conversion/functions.rs +0 -0
  336. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/conversion/harness.rs +0 -0
  337. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/conversion/hygiene.rs +0 -0
  338. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/conversion/mapping.rs +0 -0
  339. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/conversion/mod.rs +0 -0
  340. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/conversion/references.rs +0 -0
  341. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/conversion/rule_authoring.rs +0 -0
  342. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/conversion/state.rs +0 -0
  343. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/facades/facades.rs +0 -0
  344. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/gateway/bindings.rs +0 -0
  345. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/gateway/mod.rs +0 -0
  346. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/gateway/model_types.rs +0 -0
  347. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/gateway/repository_bindings.rs +0 -0
  348. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/gateway/rule_authoring_bindings.rs +0 -0
  349. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/mod.rs +0 -0
  350. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/_helpers/queries/owner_symbols.rs +0 -0
  351. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/main/mod.rs +0 -0
  352. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/main/register_module.rs +0 -0
  353. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/extension/mod.rs +0 -0
  354. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/annotations/mod.rs +0 -0
  355. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/annotations/visitor.rs +0 -0
  356. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/contracts/category.rs +0 -0
  357. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/contracts/display.rs +0 -0
  358. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/contracts/mod.rs +0 -0
  359. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/contracts/returns.rs +0 -0
  360. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/contracts/rows.rs +0 -0
  361. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/control/conditionals.rs +0 -0
  362. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/control/mod.rs +0 -0
  363. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/declarations/mod.rs +0 -0
  364. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/declarations/rows.rs +0 -0
  365. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/harness/calls.rs +0 -0
  366. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/harness/dimensions.rs +0 -0
  367. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/harness/functions.rs +0 -0
  368. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/harness/imports.rs +0 -0
  369. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/harness/mod.rs +0 -0
  370. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/hygiene/checks.rs +0 -0
  371. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/hygiene/mod.rs +0 -0
  372. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/metrics/functions.rs +0 -0
  373. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/metrics/lookups.rs +0 -0
  374. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/metrics/mod.rs +0 -0
  375. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/metrics/mutations.rs +0 -0
  376. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/mod.rs +0 -0
  377. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/naming/mod.rs +0 -0
  378. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/naming/names.rs +0 -0
  379. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/project/calls.rs +0 -0
  380. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/project/mod.rs +0 -0
  381. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/references/events.rs +0 -0
  382. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/references/mod.rs +0 -0
  383. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/references/test_shape.rs +0 -0
  384. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/rule_authoring/literals.rs +0 -0
  385. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/rule_authoring/mod.rs +0 -0
  386. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/rule_authoring/mutations.rs +0 -0
  387. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/rule_authoring/ownership.rs +0 -0
  388. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/rule_authoring/references.rs +0 -0
  389. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/state/mod.rs +0 -0
  390. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/state/resolution.rs +0 -0
  391. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/state/scopes.rs +0 -0
  392. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/wording/mod.rs +0 -0
  393. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/_helpers/wording/text.rs +0 -0
  394. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/enumerate_nodes.rs +0 -0
  395. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_annotations.rs +0 -0
  396. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_class_declarations.rs +0 -0
  397. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_comments.rs +0 -0
  398. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_control_flow.rs +0 -0
  399. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_dataclasses.rs +0 -0
  400. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_evaluate_rule_calls.rs +0 -0
  401. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_function_contracts.rs +0 -0
  402. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_functions.rs +0 -0
  403. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_hygiene.rs +0 -0
  404. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_module_declarations.rs +0 -0
  405. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_outer_state_mutations.rs +0 -0
  406. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_parameter_mutation_occurrences.rs +0 -0
  407. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_parameter_mutations.rs +0 -0
  408. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_project_facts.rs +0 -0
  409. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_references.rs +0 -0
  410. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_rule_calls.rs +0 -0
  411. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_rule_references.rs +0 -0
  412. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_test_functions.rs +0 -0
  413. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/extract_test_module.rs +0 -0
  414. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/main/mod.rs +0 -0
  415. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/models.rs +0 -0
  416. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/facts/types.rs +0 -0
  417. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/mapping/_helpers/classes.rs +0 -0
  418. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/mapping/_helpers/expressions.rs +0 -0
  419. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/mapping/_helpers/extraction.rs +0 -0
  420. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/mapping/_helpers/functions.rs +0 -0
  421. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/mapping/_helpers/imports.rs +0 -0
  422. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/mapping/_helpers/mod.rs +0 -0
  423. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/mapping/constants.rs +0 -0
  424. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/mapping/main/extract_mapping_declarations.rs +0 -0
  425. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/mapping/main/extract_mapping_facts.rs +0 -0
  426. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/mapping/main/extract_runtime_imports.rs +0 -0
  427. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/mapping/main/mod.rs +0 -0
  428. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/mapping/mod.rs +0 -0
  429. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/mapping/models.rs +0 -0
  430. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/parsing/_helpers/failures.rs +0 -0
  431. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/parsing/_helpers/mod.rs +0 -0
  432. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/parsing/main/mod.rs +0 -0
  433. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/parsing/main/parse_expression_strict.rs +0 -0
  434. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/parsing/main/parse_strict.rs +0 -0
  435. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/parsing/mod.rs +0 -0
  436. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/parsing/models.rs +0 -0
  437. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/positions/_helpers/line_index.rs +0 -0
  438. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/positions/_helpers/mod.rs +0 -0
  439. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/positions/main/index_lines.rs +0 -0
  440. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/positions/main/locate_offset.rs +0 -0
  441. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/positions/main/mod.rs +0 -0
  442. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/positions/mod.rs +0 -0
  443. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/positions/models.rs +0 -0
  444. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/snapshot/_helpers/matching.rs +0 -0
  445. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/snapshot/_helpers/mod.rs +0 -0
  446. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/snapshot/_helpers/observation_index.rs +0 -0
  447. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/snapshot/_helpers/repository_observation_index.rs +0 -0
  448. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/snapshot/_helpers/repository_paths.rs +0 -0
  449. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/snapshot/constants.rs +0 -0
  450. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/snapshot/main/build_repository_observation_index.rs +0 -0
  451. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/snapshot/main/hash_files.rs +0 -0
  452. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/snapshot/main/mod.rs +0 -0
  453. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/snapshot/main/walk_python_files.rs +0 -0
  454. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/snapshot/mod.rs +0 -0
  455. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/snapshot/models.rs +0 -0
  456. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/_helpers/breadth.rs +0 -0
  457. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/_helpers/children.rs +0 -0
  458. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/_helpers/expression_children.rs +0 -0
  459. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/_helpers/mod.rs +0 -0
  460. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/_helpers/nodes.rs +0 -0
  461. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/_helpers/references.rs +0 -0
  462. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/_helpers/spans.rs +0 -0
  463. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/src/syntax/_helpers/statement_children.rs +0 -0
  464. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/dead_code/helpers.rs +0 -0
  465. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/dead_code/test_reachability.rs +0 -0
  466. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/dead_code/test_types.rs +0 -0
  467. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/dead_code.rs +0 -0
  468. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/facts/test_enumerate.rs +0 -0
  469. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/facts/test_mapping.rs +0 -0
  470. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/facts/test_rule_authoring.rs +0 -0
  471. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/facts/test_types.rs +0 -0
  472. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/facts.rs +0 -0
  473. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/parsing/test_strict.rs +0 -0
  474. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/parsing/test_types.rs +0 -0
  475. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/parsing.rs +0 -0
  476. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/positions/test_locate.rs +0 -0
  477. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/positions/test_types.rs +0 -0
  478. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/positions.rs +0 -0
  479. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/snapshot/helpers.rs +0 -0
  480. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/snapshot/test_hashing.rs +0 -0
  481. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/snapshot/test_observations.rs +0 -0
  482. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/snapshot/test_types.rs +0 -0
  483. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/snapshot/test_walk.rs +0 -0
  484. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-facts/tests/snapshot.rs +0 -0
  485. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/_helpers/bindings/bindings.rs +0 -0
  486. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/_helpers/bindings/generation_bindings.rs +0 -0
  487. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/_helpers/bindings/python_rows.rs +0 -0
  488. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/_helpers/generation/generation.rs +0 -0
  489. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/_helpers/generation/replay.rs +0 -0
  490. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/_helpers/mod.rs +0 -0
  491. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/_helpers/persistence/database.rs +0 -0
  492. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/_helpers/persistence/storage.rs +0 -0
  493. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/_helpers/publication/publication.rs +0 -0
  494. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/_helpers/publication/publication_merge.rs +0 -0
  495. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/_helpers/records/records.rs +0 -0
  496. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/_helpers/records/schema.rs +0 -0
  497. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/_helpers/records/schema_values.rs +0 -0
  498. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/constants.rs +0 -0
  499. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/main/_dependency_kinds.rs +0 -0
  500. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/main/_replay_generation.rs +0 -0
  501. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/main/mod.rs +0 -0
  502. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/main/register_cache.rs +0 -0
  503. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/mod.rs +0 -0
  504. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/models.rs +0 -0
  505. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/tests/helpers.rs +0 -0
  506. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/tests/test_records.rs +0 -0
  507. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/tests/test_replay.rs +0 -0
  508. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/tests/test_storage.rs +0 -0
  509. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/tests/test_subject_schema.rs +0 -0
  510. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/tests/test_types.rs +0 -0
  511. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/tests.rs +0 -0
  512. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/cache/types.rs +0 -0
  513. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/extension/_helpers/evaluation/execution_planning.rs +0 -0
  514. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/extension/_helpers/evaluation/mod.rs +0 -0
  515. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/extension/_helpers/evaluation/python_rows.rs +0 -0
  516. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/extension/_helpers/evaluation/reachability_bindings.rs +0 -0
  517. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/extension/_helpers/evaluation/rule_bindings.rs +0 -0
  518. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/extension/_helpers/mod.rs +0 -0
  519. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/extension/constants.rs +0 -0
  520. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/annotations/annotations.rs +0 -0
  521. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/dagster/assets.rs +0 -0
  522. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/dagster/autoload.rs +0 -0
  523. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/dagster/boundaries.rs +0 -0
  524. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/dagster/dagster.rs +0 -0
  525. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/dagster/definitions.rs +0 -0
  526. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/dagster/source.rs +0 -0
  527. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/dead_code/dead_code.rs +0 -0
  528. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/execution_planning/execution_planning.rs +0 -0
  529. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/hygiene/hygiene.rs +0 -0
  530. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/layers/layers.rs +0 -0
  531. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/layers/local.rs +0 -0
  532. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/layers/project.rs +0 -0
  533. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/mod.rs +0 -0
  534. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/naming/naming.rs +0 -0
  535. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/naming_globs/naming_globs.rs +0 -0
  536. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/policy/generated_policy.rs +0 -0
  537. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/project_queries/project_queries.rs +0 -0
  538. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/roles/declarations.rs +0 -0
  539. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/roles/paths.rs +0 -0
  540. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/roles/project_layout.rs +0 -0
  541. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/roles/project_layout_paths.rs +0 -0
  542. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/roles/project_layout_queries.rs +0 -0
  543. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/roles/roles.rs +0 -0
  544. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/roles/surfaces.rs +0 -0
  545. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/shape/shape.rs +0 -0
  546. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/tests/function_conventions.rs +0 -0
  547. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/tests/layout.rs +0 -0
  548. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/tests/names.rs +0 -0
  549. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/_helpers/tests/tests.rs +0 -0
  550. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/constants.rs +0 -0
  551. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/main/evaluate_core_rules.rs +0 -0
  552. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/main/evaluate_dead_code.rs +0 -0
  553. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/main/generated_policy_owners.rs +0 -0
  554. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/main/parse_dead_code.rs +0 -0
  555. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/main/plan_core_rule_queries.rs +0 -0
  556. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/main/plan_execution_owners.rs +0 -0
  557. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/models.rs +0 -0
  558. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/src/rules/types.rs +0 -0
  559. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/tests/rules/fixtures/README.md +0 -0
  560. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/tests/rules/fixtures/core_rules.jsonl +0 -0
  561. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/tests/rules/fixtures/generated_rules.jsonl +0 -0
  562. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/tests/rules/fixtures/project_rules.jsonl +0 -0
  563. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-native/tests/rules.rs +0 -0
  564. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/README.md +0 -0
  565. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lib.rs +0 -0
  566. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/_helpers/cache.rs +0 -0
  567. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/_helpers/canonical.rs +0 -0
  568. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/_helpers/hosting.rs +0 -0
  569. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/_helpers/mod.rs +0 -0
  570. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/_helpers/paths.rs +0 -0
  571. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/_helpers/skills.rs +0 -0
  572. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/_helpers/suppressions.rs +0 -0
  573. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/constants.rs +0 -0
  574. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/errors.rs +0 -0
  575. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/main/apply_suppressions.rs +0 -0
  576. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/main/evaluate_batch.rs +0 -0
  577. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/main/invalidate_cache.rs +0 -0
  578. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/main/mod.rs +0 -0
  579. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/main/read_cache.rs +0 -0
  580. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/main/render_owned_skill.rs +0 -0
  581. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/main/report_summary.rs +0 -0
  582. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/main/run_custom_host.rs +0 -0
  583. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/main/serialize_findings.rs +0 -0
  584. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/main/skill_freshness.rs +0 -0
  585. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/main/sorted_findings.rs +0 -0
  586. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/main/write_cache.rs +0 -0
  587. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/mod.rs +0 -0
  588. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/lifecycle/models.rs +0 -0
  589. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/_helpers/grammar.rs +0 -0
  590. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/_helpers/mod.rs +0 -0
  591. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/_helpers/resolution.rs +0 -0
  592. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/constants.rs +0 -0
  593. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/errors.rs +0 -0
  594. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/main/_code_matches_selector.rs +0 -0
  595. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/main/mod.rs +0 -0
  596. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/main/resolve_catalogue_policy.rs +0 -0
  597. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/main/resolve_policy.rs +0 -0
  598. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/main/rule_code_is_exact.rs +0 -0
  599. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/main/rule_selector_is_valid.rs +0 -0
  600. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/main/validate_selector_group.rs +0 -0
  601. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/main/validate_unique_implementations.rs +0 -0
  602. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/mod.rs +0 -0
  603. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/models.rs +0 -0
  604. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/src/policy/types.rs +0 -0
  605. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/tests/lifecycle/helpers.rs +0 -0
  606. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/tests/lifecycle/test_consumer_fixture.rs +0 -0
  607. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/tests/lifecycle/test_lifecycle_contracts.rs +0 -0
  608. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/tests/lifecycle/test_types.rs +0 -0
  609. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/tests/lifecycle.rs +0 -0
  610. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/tests/policy/test_implementation_identity.rs +0 -0
  611. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/tests/policy/test_policy_resolution.rs +0 -0
  612. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/tests/policy/test_selector_grammar.rs +0 -0
  613. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/tests/policy/test_selector_validation.rs +0 -0
  614. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/tests/policy/test_types.rs +0 -0
  615. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-policy/tests/policy.rs +0 -0
  616. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/Cargo.toml +0 -0
  617. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/configuration/_helpers/mod.rs +0 -0
  618. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/configuration/_helpers/option_values.rs +0 -0
  619. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/configuration/_helpers/repository_policy.rs +0 -0
  620. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/configuration/main/mod.rs +0 -0
  621. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/configuration/main/rule_options.rs +0 -0
  622. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/configuration/main/validate_repository_policy.rs +0 -0
  623. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/configuration/mod.rs +0 -0
  624. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/constants.rs +0 -0
  625. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/engine/_helpers/mod.rs +0 -0
  626. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/engine/_helpers/repository_analysis.rs +0 -0
  627. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/engine/main/analyze_repository.rs +0 -0
  628. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/engine/main/analyze_repository_with_ownership_roots.rs +0 -0
  629. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/engine/main/mod.rs +0 -0
  630. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/engine/mod.rs +0 -0
  631. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/facts/_helpers/collection.rs +0 -0
  632. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/facts/_helpers/mod.rs +0 -0
  633. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/facts/main/collect_workspace_facts.rs +0 -0
  634. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/facts/main/mod.rs +0 -0
  635. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/facts/mod.rs +0 -0
  636. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/facts/models.rs +0 -0
  637. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/lib.rs +0 -0
  638. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/models.rs +0 -0
  639. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/functions/binding_clarity.rs +0 -0
  640. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/functions/comments.rs +0 -0
  641. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/functions/discarded_errors.rs +0 -0
  642. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/functions/hygiene.rs +0 -0
  643. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/functions/mod.rs +0 -0
  644. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/functions/naming.rs +0 -0
  645. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/functions/shape.rs +0 -0
  646. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/functions/shape_policy.rs +0 -0
  647. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/functions/shape_project.rs +0 -0
  648. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/imports/embedded_files.rs +0 -0
  649. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/imports/layers.rs +0 -0
  650. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/imports/mod.rs +0 -0
  651. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/imports/reference_paths.rs +0 -0
  652. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/imports/visibility.rs +0 -0
  653. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/mod.rs +0 -0
  654. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/repository/configured_paths.rs +0 -0
  655. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/repository/crate_contents.rs +0 -0
  656. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/repository/mod.rs +0 -0
  657. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/repository/package_entries.rs +0 -0
  658. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/repository/placement_observations.rs +0 -0
  659. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/repository/project_checks.rs +0 -0
  660. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/roles/containers.rs +0 -0
  661. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/roles/domains.rs +0 -0
  662. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/roles/mod.rs +0 -0
  663. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/roles/ownership.rs +0 -0
  664. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/roles/placement.rs +0 -0
  665. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/roles/proc_macro_entries.rs +0 -0
  666. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/roles/role_files.rs +0 -0
  667. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/roles/surfaces.rs +0 -0
  668. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/roles/tooling.rs +0 -0
  669. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/sources/mod.rs +0 -0
  670. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/sources/scanning.rs +0 -0
  671. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/test_conventions/mod.rs +0 -0
  672. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/test_conventions/test_case_arrays.rs +0 -0
  673. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/test_conventions/test_mirroring.rs +0 -0
  674. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/test_conventions/tests_layout.rs +0 -0
  675. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/_helpers/test_conventions/tests_shape.rs +0 -0
  676. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/main/check_repository_with_config.rs +0 -0
  677. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/main/check_scanned_workspace.rs +0 -0
  678. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/main/file_placement_observations.rs +0 -0
  679. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/main/mod.rs +0 -0
  680. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/main/relative_display.rs +0 -0
  681. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/main/scan_workspace.rs +0 -0
  682. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/main/use_paths.rs +0 -0
  683. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/rules/mod.rs +0 -0
  684. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/src/types.rs +0 -0
  685. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/engine/test_engine.rs +0 -0
  686. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/engine/test_types.rs +0 -0
  687. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/engine.rs +0 -0
  688. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/helpers.rs +0 -0
  689. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_comments.rs +0 -0
  690. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_configuration.rs +0 -0
  691. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_containers.rs +0 -0
  692. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_domains.rs +0 -0
  693. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_file_placement.rs +0 -0
  694. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_hygiene.rs +0 -0
  695. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_layers.rs +0 -0
  696. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_naming.rs +0 -0
  697. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_ownership.rs +0 -0
  698. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_proc_macro_roots.rs +0 -0
  699. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_role_files.rs +0 -0
  700. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_roles.rs +0 -0
  701. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_shape.rs +0 -0
  702. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_shape_policy.rs +0 -0
  703. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_tests_layout.rs +0 -0
  704. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_tests_shape.rs +0 -0
  705. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_tooling_roles.rs +0 -0
  706. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_tuple_types.rs +0 -0
  707. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_types.rs +0 -0
  708. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules/test_visibility.rs +0 -0
  709. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-rust/tests/rules.rs +0 -0
  710. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-svelte/Cargo.toml +0 -0
  711. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-svelte/src/constants.rs +0 -0
  712. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-svelte/src/lib.rs +0 -0
  713. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-svelte/src/models.rs +0 -0
  714. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-svelte/src/parser.rs +0 -0
  715. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-svelte/tests/parser/test_contracts.rs +0 -0
  716. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-svelte/tests/parser/test_diagnostics.rs +0 -0
  717. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-svelte/tests/parser/test_semantics.rs +0 -0
  718. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-svelte/tests/parser/test_types.rs +0 -0
  719. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-svelte/tests/parser.rs +0 -0
  720. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-typescript/Cargo.toml +0 -0
  721. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-typescript/src/constants.rs +0 -0
  722. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-typescript/src/lib.rs +0 -0
  723. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-typescript/src/models.rs +0 -0
  724. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-typescript/src/parser.rs +0 -0
  725. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-typescript/tests/parser/test_contracts.rs +0 -0
  726. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-typescript/tests/parser/test_diagnostics.rs +0 -0
  727. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-typescript/tests/parser/test_semantics.rs +0 -0
  728. {fensu_cli-0.29.2 → fensu_cli-0.30.0}/crates/fensu-typescript/tests/parser/test_types.rs +0 -0
  729. {fensu_cli-0.29.2 → fensu_cli-0.30.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.29.2"
391
+ version = "0.30.0"
392
392
  dependencies = [
393
393
  "cap-fs-ext",
394
394
  "cap-std",
@@ -424,9 +424,10 @@ dependencies = [
424
424
 
425
425
  [[package]]
426
426
  name = "fensu-facts"
427
- version = "0.1.0"
427
+ version = "0.30.0"
428
428
  dependencies = [
429
429
  "dunce",
430
+ "get-size2",
430
431
  "globset",
431
432
  "hex",
432
433
  "pyo3",
@@ -440,7 +441,7 @@ dependencies = [
440
441
 
441
442
  [[package]]
442
443
  name = "fensu-native"
443
- version = "0.1.0"
444
+ version = "0.30.0"
444
445
  dependencies = [
445
446
  "fensu-facts",
446
447
  "flate2",
@@ -458,7 +459,7 @@ dependencies = [
458
459
 
459
460
  [[package]]
460
461
  name = "fensu-policy"
461
- version = "0.29.2"
462
+ version = "0.30.0"
462
463
  dependencies = [
463
464
  "command-group",
464
465
  "globset",
@@ -16,6 +16,7 @@ command-group = "=5.0.1"
16
16
  dunce = "1.0"
17
17
  encoding_rs = "0.8"
18
18
  flate2 = { version = "1", default-features = false, features = ["zlib"] }
19
+ get-size2 = { version = "=0.10.1", default-features = false }
19
20
  globset = "=0.4.19"
20
21
  hex = "0.4"
21
22
  ignore = "0.4"
@@ -35,7 +36,7 @@ rusqlite = { version = "0.38", features = ["bundled"] }
35
36
  serde_json = { version = "1", features = ["preserve_order"] }
36
37
  serde = { version = "1", features = ["derive"] }
37
38
  sha2 = "0.10"
38
- fensu-facts = { path = "crates/fensu-facts", default-features = false }
39
+ fensu-facts = { path = "crates/fensu-facts", version = "0.30.0", default-features = false } # x-release-please-version
39
40
  fensu-native = { path = "crates/fensu-native", default-features = false }
40
41
  fensu-policy = { path = "crates/fensu-policy" }
41
42
  fensu-rust = { path = "crates/fensu-rust" }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fensu-cli
3
- Version: 0.29.2
3
+ Version: 0.30.0
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: Apache Software License
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "fensu-cli"
3
- version = "0.29.2" # x-release-please-version
3
+ version = "0.30.0" # x-release-please-version
4
4
  edition.workspace = true
5
5
  license.workspace = true
6
6
  publish = false
@@ -2,10 +2,10 @@ use std::collections::{HashMap, HashSet};
2
2
  use std::path::Path;
3
3
 
4
4
  use fensu_facts::extension::models::ProgramHandle;
5
- use fensu_native::rules::main::evaluate_core_rules::evaluate_core_rules;
6
- use fensu_native::rules::main::plan_core_rule_queries::plan_core_rule_queries;
7
- use fensu_native::rules::main::plan_execution_owners::plan_execution_owners;
8
- use fensu_native::rules::models::{NativeExecutionRule, NativeExecutionTarget, NativeRuleContext};
5
+ use fensu_native::evaluate_core_rules;
6
+ use fensu_native::plan_core_rule_queries;
7
+ use fensu_native::plan_execution_owners;
8
+ use fensu_native::{NativeExecutionRule, NativeExecutionTarget, NativeRuleContext};
9
9
  use fensu_policy::lifecycle::models::FindingSeverity;
10
10
  use rayon::iter::{IndexedParallelIterator, IntoParallelRefIterator, ParallelIterator};
11
11
 
@@ -169,11 +169,7 @@ pub(crate) fn evaluate(request: EvaluationRequest<'_>) -> Result<TargetEvaluatio
169
169
  .iter()
170
170
  .map(|code| (*code).to_owned())
171
171
  .collect::<Vec<_>>();
172
- for row in fensu_native::rules::main::evaluate_dead_code::evaluate_dead_code(
173
- &codes,
174
- &dead_code_context,
175
- &project,
176
- ) {
172
+ for row in fensu_native::evaluate_dead_code(&codes, &dead_code_context, &project) {
177
173
  let metadata = rule_metadata(&row.code)?
178
174
  .ok_or_else(|| format!("Unknown native rule code: {}", row.code))?;
179
175
  faults.push(Fault {
@@ -239,10 +235,7 @@ pub(crate) fn evaluate(request: EvaluationRequest<'_>) -> Result<TargetEvaluatio
239
235
  })
240
236
  }
241
237
 
242
- fn dead_code_context(
243
- config: &Config,
244
- project_root: &Path,
245
- ) -> fensu_native::rules::models::NativeDeadCodeContext {
238
+ fn dead_code_context(config: &Config, project_root: &Path) -> fensu_native::NativeDeadCodeContext {
246
239
  const PYPROJECT_SOURCE: &str = "pyproject";
247
240
  if !config.dead_code.enabled {
248
241
  return Default::default();
@@ -256,7 +249,7 @@ fn dead_code_context(
256
249
  } else {
257
250
  "fensu.toml"
258
251
  };
259
- fensu_native::rules::models::NativeDeadCodeContext {
252
+ fensu_native::NativeDeadCodeContext {
260
253
  enabled: config.dead_code.enabled,
261
254
  roots: config
262
255
  .dead_code
@@ -946,7 +939,7 @@ pub(crate) fn render_results(
946
939
  mut results: Vec<CheckResult>,
947
940
  root: &Path,
948
941
  color: bool,
949
- show_warnings: bool,
942
+ (show_warnings, incomplete): (bool, bool),
950
943
  ) -> (String, i32) {
951
944
  let selected = results.iter().map(|result| result.selected).sum::<usize>();
952
945
  let excluded = results.iter().map(|result| result.excluded).sum::<usize>();
@@ -1009,6 +1002,7 @@ pub(crate) fn render_results(
1009
1002
  evaluation_summary: summary.as_deref(),
1010
1003
  applied_exceptions,
1011
1004
  threshold_uses: &threshold_uses,
1005
+ incomplete,
1012
1006
  });
1013
1007
  (output, i32::from(!faults.is_empty()))
1014
1008
  }
@@ -44,7 +44,8 @@ pub(crate) fn render_check(
44
44
  let cacheable = results
45
45
  .iter()
46
46
  .all(|result| result.cacheable.unwrap_or(true));
47
- let (output, exit_code) = render_results(results, &plan.root, plan.color, options.warn);
47
+ let (output, exit_code) =
48
+ render_results(results, &plan.root, plan.color, (options.warn, false));
48
49
  let mut stderr = String::new();
49
50
  stderr.push_str(&freshness(&plan));
50
51
  if options.cache_stats {
@@ -5,7 +5,7 @@ use std::fs;
5
5
  use std::path::{Component, Path, PathBuf};
6
6
 
7
7
  use fensu_facts::extension::models::ProgramHandle;
8
- use fensu_native::rules::models::{NativeProjectModule, NativeProjectPlane};
8
+ use fensu_native::{NativeProjectModule, NativeProjectPlane};
9
9
  use globset::GlobBuilder;
10
10
  use serde_json::Value;
11
11
  use walkdir::DirEntry;
@@ -215,7 +215,7 @@ fn collect_entrypoint_values<'a>(value: &'a toml::Value, mut values: Vec<&'a str
215
215
 
216
216
  pub(crate) fn observe(
217
217
  root: &Path,
218
- plans: &[fensu_native::rules::models::NativeProjectQuery],
218
+ plans: &[fensu_native::NativeProjectQuery],
219
219
  programs: &HashMap<&str, &ProgramHandle>,
220
220
  modules: &HashMap<String, &ProgramHandle>,
221
221
  ) -> Result<HashMap<String, Vec<String>>, String> {
@@ -0,0 +1,19 @@
1
+ //! Render one aggregate set of analyzer check results, marked incomplete when a target could not run.
2
+
3
+ use std::path::Path;
4
+
5
+ use crate::check::models::CheckResult;
6
+
7
+ pub(crate) fn render_check_results(
8
+ results: Vec<CheckResult>,
9
+ root: &Path,
10
+ color: bool,
11
+ (show_warnings, incomplete): (bool, bool),
12
+ ) -> (String, i32) {
13
+ crate::check::_helpers::evaluation::render_results(
14
+ results,
15
+ root,
16
+ color,
17
+ (show_warnings, incomplete),
18
+ )
19
+ }
@@ -218,7 +218,7 @@ fn structured_check(request: StructuredCheckRequest<'_>) -> CliOutput {
218
218
  let (stdout, report_exit_code) = if command_error && results.is_empty() {
219
219
  (String::new(), 0)
220
220
  } else {
221
- render_check_results(results, &root, color, show_warnings)
221
+ render_check_results(results, &root, color, (show_warnings, command_error))
222
222
  };
223
223
  let mut stderr = String::new();
224
224
  if show_cache_stats {
@@ -148,7 +148,7 @@ pub(crate) fn parse_dead_code(
148
148
  value: Option<&toml::Value>,
149
149
  ) -> Result<crate::models::DeadCodeConfig, String> {
150
150
  let value = serde_json::to_value(value).map_err(|error| error.to_string())?;
151
- let (enabled, roots) = fensu_native::rules::main::parse_dead_code::parse_dead_code(&value)?;
151
+ let (enabled, roots) = fensu_native::parse_dead_code(&value)?;
152
152
  Ok(crate::models::DeadCodeConfig {
153
153
  enabled,
154
154
  roots: roots
@@ -14,7 +14,14 @@ pub(crate) fn report(request: ReportRequest<'_>) -> String {
14
14
  } else {
15
15
  "faults"
16
16
  };
17
- let mut summary = format!("Found {} {noun}", request.faults.len());
17
+ let mut summary = if request.incomplete {
18
+ format!(
19
+ "Check incomplete: found {} {noun} in the targets that ran",
20
+ request.faults.len()
21
+ )
22
+ } else {
23
+ format!("Found {} {noun}", request.faults.len())
24
+ };
18
25
  if request.show_warnings {
19
26
  let noun = if request.warnings.len() == 1 {
20
27
  "warning"
@@ -24,7 +31,7 @@ pub(crate) fn report(request: ReportRequest<'_>) -> String {
24
31
  summary.push_str(&format!(" and {} {noun}", request.warnings.len()));
25
32
  }
26
33
  if request.color {
27
- let style = if request.faults.is_empty() {
34
+ let style = if request.faults.is_empty() && !request.incomplete {
28
35
  GREEN
29
36
  } else {
30
37
  ORANGE
@@ -14,4 +14,6 @@ pub(crate) struct ReportRequest<'a> {
14
14
  pub(crate) evaluation_summary: Option<&'a str>,
15
15
  pub(crate) applied_exceptions: usize,
16
16
  pub(crate) threshold_uses: &'a [ThresholdUse],
17
+ /// Whether a target could not run, so the faults cover only the targets that did.
18
+ pub(crate) incomplete: bool,
17
19
  }
@@ -44,6 +44,7 @@ fn given_colored_faults_when_rendering_then_uses_historical_orange_styles() {
44
44
  evaluation_summary: None,
45
45
  applied_exceptions: 0,
46
46
  threshold_uses: &[],
47
+ incomplete: false,
47
48
  });
48
49
 
49
50
  assert_eq!(
@@ -46,3 +46,58 @@ fn given_custom_python_rust_and_web_rules_when_checking_then_native_and_hosted_t
46
46
  }
47
47
  }
48
48
  }
49
+
50
+ #[test]
51
+ fn given_custom_python_and_rust_targets_without_cargo_when_checking_then_the_summary_says_incomplete(
52
+ ) {
53
+ let test_cases = [crate::test_types::RustMixedTargetUnavailableTestCase {
54
+ description: "a Rust target that cannot run fails the check, and the summary of the \
55
+ Python findings says the check is incomplete",
56
+ expected_exit_code: 2,
57
+ expected_error: "FPRSL902 Rust analysis cannot run: cargo not found",
58
+ expected_summary: "Check incomplete: found 1 fault in the targets that ran",
59
+ }];
60
+ for test_case in test_cases {
61
+ let repository = tempfile::tempdir().expect("temporary repository");
62
+ write(
63
+ repository.path().join("Cargo.toml"),
64
+ "[package]\nname = \"example\"\nversion = \"0.1.0\"\nedition = \"2021\"\n",
65
+ );
66
+ write(
67
+ repository.path().join("src/lib.rs"),
68
+ "pub fn sum(left: usize, right: usize) -> usize { left + right }\n",
69
+ );
70
+ write(
71
+ repository.path().join("python/value.py"),
72
+ "def value(item):\n return item\n",
73
+ );
74
+ write(repository.path().join("rules/custom.py"), "import ast\nfrom fensu import Family, Fault, RuleContext, rule\n@rule(code='XMIX001', family=Family.CUSTOM, slug='mixed-python', message='mixed Python')\ndef mixed_python(module: ast.Module, ctx: RuleContext) -> list[Fault]:\n return []\n");
75
+ write(repository.path().join("fensu.toml"), "[targets.python]\nanalyzer = \"python\"\nroots = [\"python\"]\ntests = []\ntooling = []\nselect = [\"FFA001\", \"XMIX001\"]\nrule_paths = [\"rules/custom.py\"]\n[targets.rust]\nanalyzer = \"rust\"\nroots = [\"src\"]\ntests = []\ntooling = []\nrule_packs = [\"rust\"]\nselect = [\"FPRSS010\"]\n");
76
+ let output = std::process::Command::new(env!("CARGO_BIN_EXE_fensu"))
77
+ .args(["check", "--no-color", "--no-cache"])
78
+ .current_dir(repository.path())
79
+ .env("FENSU_PYTHON", crate::helpers::workspace_python())
80
+ .env("CARGO", "/cargo-does-not-exist/cargo")
81
+ .env("PATH", "/cargo-does-not-exist")
82
+ .output()
83
+ .expect("mixed check runs");
84
+ let stdout = String::from_utf8_lossy(&output.stdout);
85
+ let stderr = String::from_utf8_lossy(&output.stderr);
86
+ assert_eq!(
87
+ output.status.code(),
88
+ Some(test_case.expected_exit_code),
89
+ "{}: {stdout} {stderr}",
90
+ test_case.description
91
+ );
92
+ assert!(
93
+ stderr.contains(test_case.expected_error),
94
+ "{}: {stderr}",
95
+ test_case.description
96
+ );
97
+ assert!(
98
+ stdout.contains(test_case.expected_summary) && !stdout.contains("Found "),
99
+ "{}: {stdout}",
100
+ test_case.description
101
+ );
102
+ }
103
+ }
@@ -80,6 +80,13 @@ pub(crate) struct RustMixedTargetTestCase {
80
80
  pub(crate) expected_codes: &'static [&'static str],
81
81
  }
82
82
 
83
+ pub(crate) struct RustMixedTargetUnavailableTestCase {
84
+ pub(crate) description: &'static str,
85
+ pub(crate) expected_exit_code: i32,
86
+ pub(crate) expected_error: &'static str,
87
+ pub(crate) expected_summary: &'static str,
88
+ }
89
+
83
90
  pub(crate) struct RepositoryRuleTestCase {
84
91
  pub(crate) description: &'static str,
85
92
  pub(crate) expected_exit_code: i32,
@@ -1,9 +1,14 @@
1
1
  [package]
2
2
  name = "fensu-facts"
3
- version = "0.1.0"
3
+ version = "0.30.0" # x-release-please-version
4
4
  edition.workspace = true
5
5
  license.workspace = true
6
- publish = false
6
+ publish = true
7
+ description = "Python source facts for Fensu: parsed modules, imports, symbols and file inventory"
8
+ repository = "https://github.com/sqlstack-io/fensu"
9
+ readme = "README.md"
10
+ keywords = ["lint", "architecture", "python", "static-analysis"]
11
+ categories = ["development-tools"]
7
12
  rust-version.workspace = true
8
13
 
9
14
  [lints]
@@ -16,6 +21,8 @@ crate-type = ["rlib"]
16
21
 
17
22
  [dependencies]
18
23
  dunce.workspace = true
24
+ # Not used directly: ruff_python_ast 0.0.4 needs a get-size2 built on compact_str 0.9, and 0.10.2 moved to 0.10.
25
+ get-size2.workspace = true
19
26
  globset.workspace = true
20
27
  hex.workspace = true
21
28
  pyo3 = { workspace = true, optional = true }
@@ -0,0 +1,11 @@
1
+ # fensu-facts
2
+
3
+ Python source facts for [Fensu](https://github.com/sqlstack-io/fensu): parse a module once into a `ProgramHandle`, then read its fact rows.
4
+
5
+ ```toml
6
+ fensu-facts = { version = "0.30", default-features = false }
7
+ ```
8
+
9
+ `default-features = false` leaves out the Python bindings.
10
+
11
+ The public API is `ProgramHandle` (built with `ProgramHandle::parse_source(source, major, minor)`), `ParseFailure`, and the row types in `facts`. Modules hidden from the documentation are shared with the rest of Fensu's workspace and may change in any release.
@@ -83,6 +83,11 @@ pub struct ProgramHandle {
83
83
  }
84
84
 
85
85
  impl ProgramHandle {
86
+ /// Parse `source` as a Python `major.minor` module.
87
+ pub fn parse_source(source: &str, major: u8, minor: u8) -> Result<Self, ParseFailure> {
88
+ Self::parse(source, PythonVersion { major, minor })
89
+ }
90
+
86
91
  pub(crate) fn parse(source: &str, version: PythonVersion) -> Result<Self, ParseFailure> {
87
92
  let parsed = parse_strict(source, version)?;
88
93
  Ok(Self {
@@ -1,6 +1,8 @@
1
1
  //! CPython-shaped fact extraction over the ruff syntax tree.
2
2
 
3
+ #[doc(hidden)]
3
4
  pub mod _helpers;
5
+ #[doc(hidden)]
4
6
  pub mod main;
5
7
  pub mod models;
6
8
  pub mod types;
@@ -0,0 +1,22 @@
1
+ //! Python source facts for Fensu: [`ProgramHandle`] parses a module once and serves its fact rows.
2
+ #![forbid(unsafe_code)]
3
+
4
+ #[doc(hidden)]
5
+ pub mod constants;
6
+ #[doc(hidden)]
7
+ pub mod dead_code;
8
+ #[doc(hidden)]
9
+ pub mod extension;
10
+ pub mod facts;
11
+ #[doc(hidden)]
12
+ pub mod mapping;
13
+ #[doc(hidden)]
14
+ pub mod parsing;
15
+ #[doc(hidden)]
16
+ pub mod positions;
17
+ #[doc(hidden)]
18
+ pub mod snapshot;
19
+ pub(crate) mod syntax;
20
+
21
+ pub use extension::models::ProgramHandle;
22
+ pub use parsing::models::ParseFailure;
@@ -1,6 +1,6 @@
1
1
  //! Walk breadth first from one node.
2
2
 
3
3
  use crate::syntax::types::ShapeNode;
4
- pub fn breadth_first_from(root: ShapeNode<'_>) -> Vec<ShapeNode<'_>> {
4
+ pub(crate) fn breadth_first_from(root: ShapeNode<'_>) -> Vec<ShapeNode<'_>> {
5
5
  crate::syntax::_helpers::breadth::breadth_first_from(root)
6
6
  }
@@ -3,6 +3,6 @@
3
3
  use ruff_python_ast::ModModule;
4
4
 
5
5
  use crate::syntax::types::ShapeNode;
6
- pub fn breadth_first_nodes(module: &ModModule) -> Vec<ShapeNode<'_>> {
6
+ pub(crate) fn breadth_first_nodes(module: &ModModule) -> Vec<ShapeNode<'_>> {
7
7
  crate::syntax::_helpers::breadth::breadth_first_nodes(module)
8
8
  }
@@ -3,6 +3,8 @@
3
3
  use ruff_python_ast::ModModule;
4
4
 
5
5
  use crate::syntax::types::ShapeNode;
6
- pub fn breadth_first_with_parents(module: &ModModule) -> (Vec<ShapeNode<'_>>, Vec<Option<usize>>) {
6
+ pub(crate) fn breadth_first_with_parents(
7
+ module: &ModModule,
8
+ ) -> (Vec<ShapeNode<'_>>, Vec<Option<usize>>) {
7
9
  crate::syntax::_helpers::breadth::breadth_first_with_parents(module)
8
10
  }
@@ -3,6 +3,6 @@
3
3
  use crate::syntax::_helpers::children::ChildOutput;
4
4
  use crate::syntax::types::ShapeNode;
5
5
 
6
- pub fn children<'a>(node: &ShapeNode<'a>, out: &mut Vec<ShapeNode<'a>>) {
6
+ pub(crate) fn children<'a>(node: &ShapeNode<'a>, out: &mut Vec<ShapeNode<'a>>) {
7
7
  ChildOutput { out }.collect(node);
8
8
  }
@@ -1,6 +1,6 @@
1
1
  //! Name the syntax kind of a node.
2
2
 
3
3
  use crate::syntax::types::ShapeNode;
4
- pub fn kind_name(node: &ShapeNode<'_>) -> &'static str {
4
+ pub(crate) fn kind_name(node: &ShapeNode<'_>) -> &'static str {
5
5
  crate::syntax::_helpers::nodes::kind_name(node)
6
6
  }
@@ -0,0 +1,11 @@
1
+ //! Syntax entries.
2
+
3
+ pub(crate) mod breadth_first_from;
4
+ pub(crate) mod breadth_first_nodes;
5
+ pub(crate) mod breadth_first_with_parents;
6
+ pub(crate) mod children;
7
+ pub(crate) mod kind_name;
8
+ pub(crate) mod push_clause_orelse;
9
+ pub(crate) mod span;
10
+ pub(crate) mod start_of;
11
+ pub(crate) mod strict_reference_parts;
@@ -5,6 +5,6 @@ use ruff_python_ast::ElifElseClause;
5
5
  use crate::syntax::_helpers::statement_children::ClauseOutput;
6
6
  use crate::syntax::types::ShapeNode;
7
7
 
8
- pub fn push_clause_orelse<'a>(clauses: &'a [ElifElseClause], out: &mut Vec<ShapeNode<'a>>) {
8
+ pub(crate) fn push_clause_orelse<'a>(clauses: &'a [ElifElseClause], out: &mut Vec<ShapeNode<'a>>) {
9
9
  ClauseOutput { out }.collect(clauses);
10
10
  }
@@ -3,6 +3,6 @@
3
3
  use crate::positions::models::{LineIndex, SourceSpan};
4
4
 
5
5
  use crate::syntax::types::ShapeNode;
6
- pub fn span(node: &ShapeNode<'_>, index: &LineIndex, source: &str) -> Option<SourceSpan> {
6
+ pub(crate) fn span(node: &ShapeNode<'_>, index: &LineIndex, source: &str) -> Option<SourceSpan> {
7
7
  crate::syntax::_helpers::spans::span(node, index, source)
8
8
  }
@@ -3,6 +3,6 @@
3
3
  use crate::positions::models::LineIndex;
4
4
 
5
5
  use crate::syntax::types::ShapeNode;
6
- pub fn start_of(node: &ShapeNode<'_>, index: &LineIndex, source: &str) -> (u32, u32) {
6
+ pub(crate) fn start_of(node: &ShapeNode<'_>, index: &LineIndex, source: &str) -> (u32, u32) {
7
7
  crate::syntax::_helpers::spans::start_of(node, index, source)
8
8
  }
@@ -2,6 +2,6 @@
2
2
 
3
3
  use ruff_python_ast::Expr;
4
4
 
5
- pub fn strict_reference_parts(expression: &Expr) -> Vec<String> {
5
+ pub(crate) fn strict_reference_parts(expression: &Expr) -> Vec<String> {
6
6
  crate::syntax::_helpers::references::strict_reference_parts(expression)
7
7
  }
@@ -1,5 +1,5 @@
1
1
  //! Python syntax primitives shared across fact extraction and call mapping.
2
2
 
3
- pub mod _helpers;
4
- pub mod main;
5
- pub mod types;
3
+ pub(crate) mod _helpers;
4
+ pub(crate) mod main;
5
+ pub(crate) mod types;
@@ -9,7 +9,7 @@ use ruff_text_size::TextRange;
9
9
 
10
10
  /// One node of the CPython-equivalent syntax tree projected from ruff nodes.
11
11
  #[derive(Clone, Copy)]
12
- pub enum ShapeNode<'a> {
12
+ pub(crate) enum ShapeNode<'a> {
13
13
  Module(&'a ModModule),
14
14
  Stmt(&'a Stmt),
15
15
  IfTail(&'a [ElifElseClause]),
@@ -1,9 +1,14 @@
1
1
  [package]
2
2
  name = "fensu-native"
3
- version = "0.1.0"
3
+ version = "0.30.0" # x-release-please-version
4
4
  edition.workspace = true
5
5
  license.workspace = true
6
- publish = false
6
+ publish = true
7
+ description = "Fensu's core rule engine and Python rules, usable from Rust without the Python bindings"
8
+ repository = "https://github.com/sqlstack-io/fensu"
9
+ readme = "README.md"
10
+ keywords = ["lint", "architecture", "python", "static-analysis"]
11
+ categories = ["development-tools"]
7
12
  rust-version.workspace = true
8
13
 
9
14
  [lints]
@@ -15,13 +20,13 @@ path = "src/lib.rs"
15
20
  crate-type = ["cdylib", "rlib"]
16
21
 
17
22
  [dependencies]
18
- flate2.workspace = true
23
+ flate2 = { workspace = true, optional = true }
19
24
  globset.workspace = true
20
25
  pyo3 = { workspace = true, optional = true }
21
26
  rayon.workspace = true
22
27
  ruff_python_ast.workspace = true
23
- rusqlite.workspace = true
24
- sha2.workspace = true
28
+ rusqlite = { workspace = true, optional = true }
29
+ sha2 = { workspace = true, optional = true }
25
30
  serde_json.workspace = true
26
31
  fensu-facts = { workspace = true, default-features = false }
27
32
  unicode-ident.workspace = true
@@ -29,7 +34,7 @@ unicode-ident.workspace = true
29
34
  [features]
30
35
  default = ["python"]
31
36
  extension-module = ["python", "pyo3/extension-module"]
32
- python = ["dep:pyo3", "fensu-facts/python"]
37
+ python = ["dep:pyo3", "dep:rusqlite", "dep:flate2", "dep:sha2", "fensu-facts/python"]
33
38
 
34
39
  [dev-dependencies]
35
40
  serde.workspace = true
@@ -0,0 +1,26 @@
1
+ # fensu-native
2
+
3
+ [Fensu](https://github.com/sqlstack-io/fensu)'s Python rule engine: core rules and dead-code analysis over programs parsed by `fensu-facts`.
4
+
5
+ ```toml
6
+ fensu-facts = { version = "0.30", default-features = false }
7
+ fensu-native = { version = "0.30", default-features = false }
8
+ ```
9
+
10
+ `default-features = false` leaves out the Python bindings and the cache, and their SQLite and compression dependencies.
11
+
12
+ The public API is at the crate root: `evaluate_core_rules`, `evaluate_dead_code`, `parse_dead_code`, `plan_core_rule_queries`, `plan_execution_owners`, `generated_policy_owners`, and their models such as `NativeRuleContext`, `NativeProjectPlane` and `NativeFaultRow`. Rule codes are in `rules::constants`.
13
+
14
+ ```rust
15
+ use fensu_facts::ProgramHandle;
16
+ use fensu_native::{evaluate_core_rules, NativeProjectPlane, NativeRuleContext};
17
+ use fensu_native::rules::constants::PARAMETER_ANNOTATION_CODE;
18
+
19
+ let program = ProgramHandle::parse_source("def total(items):\n return items\n", 3, 12)?;
20
+ let faults = evaluate_core_rules(
21
+ &program,
22
+ &[PARAMETER_ANNOTATION_CODE.to_owned()],
23
+ &NativeRuleContext::default(),
24
+ &NativeProjectPlane::new(Vec::new(), Vec::new()),
25
+ )?;
26
+ ```
@@ -1,3 +1,3 @@
1
1
  //! Extension registration entry modules.
2
2
 
3
- pub mod register_module;
3
+ pub(crate) mod register_module;
@@ -9,7 +9,7 @@ use pyo3::wrap_pyfunction;
9
9
 
10
10
  /// Register Fensu's private native Python module.
11
11
  #[pymodule]
12
- pub fn _native(module: &Bound<'_, PyModule>) -> PyResult<()> {
12
+ pub(crate) fn _native(module: &Bound<'_, PyModule>) -> PyResult<()> {
13
13
  fensu_facts::extension::main::register_module::register_fact_functions(module)?;
14
14
  module.add_class::<rule_bindings::NativeExecutionBatch>()?;
15
15
  module.add_function(wrap_pyfunction!(
@@ -2,4 +2,4 @@
2
2
 
3
3
  pub(crate) mod _helpers;
4
4
  pub(crate) mod constants;
5
- pub mod main;
5
+ pub(crate) mod main;
@@ -0,0 +1,21 @@
1
+ //! Fensu's Python rule engine over `fensu-facts` programs; use it with `default-features = false`.
2
+ #![forbid(unsafe_code)]
3
+
4
+ #[cfg(feature = "python")]
5
+ pub(crate) mod cache;
6
+ #[cfg(feature = "python")]
7
+ pub(crate) mod extension;
8
+ pub mod rules;
9
+
10
+ pub use crate::rules::main::evaluate_core_rules::evaluate_core_rules;
11
+ pub use crate::rules::main::evaluate_dead_code::evaluate_dead_code;
12
+ pub use crate::rules::main::generated_policy_owners::generated_policy_owners;
13
+ pub use crate::rules::main::parse_dead_code::parse_dead_code;
14
+ pub use crate::rules::main::plan_core_rule_queries::plan_core_rule_queries;
15
+ pub use crate::rules::main::plan_execution_owners::plan_execution_owners;
16
+ pub use crate::rules::models::{
17
+ CustomRegistration, NativeDeadCodeContext, NativeExecutionPlan, NativeExecutionRule,
18
+ NativeExecutionTarget, NativeFaultRow, NativeProjectModule, NativeProjectPlane,
19
+ NativeProjectQuery, NativeRuleContext,
20
+ };
21
+ pub use crate::rules::types::NativeDeadCodeSettings;