modwire 5.0.0__tar.gz → 9.0.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 (448) hide show
  1. modwire-9.0.0/.dev/modwire.egg-info/SOURCES.txt +342 -0
  2. modwire-9.0.0/.github/workflows/ci.yml +36 -0
  3. modwire-9.0.0/.github/workflows/release.yml +63 -0
  4. {modwire-5.0.0 → modwire-9.0.0}/.gitignore +7 -5
  5. modwire-9.0.0/AGENTS.md +1 -0
  6. modwire-9.0.0/LICENSE +13 -0
  7. modwire-9.0.0/MANIFEST.in +8 -0
  8. modwire-9.0.0/Makefile +55 -0
  9. modwire-9.0.0/PKG-INFO +89 -0
  10. modwire-9.0.0/README.md +61 -0
  11. modwire-9.0.0/docs/target-language-ownership.md +34 -0
  12. modwire-9.0.0/pyproject.toml +78 -0
  13. modwire-9.0.0/scripts/check_extractors.py +39 -0
  14. modwire-9.0.0/scripts/generate_docs.py +7 -0
  15. modwire-9.0.0/scripts/verify_consumer.py +38 -0
  16. modwire-9.0.0/setup.cfg +8 -0
  17. modwire-9.0.0/setup.py +7 -0
  18. modwire-9.0.0/src/modwire/__main__.py +4 -0
  19. modwire-9.0.0/src/modwire/application.py +107 -0
  20. modwire-9.0.0/src/modwire/architecture/__init__.py +0 -0
  21. modwire-9.0.0/src/modwire/architecture/boundaries/application.py +25 -0
  22. modwire-5.0.0/src/modwire/architecture/boundaries/analyzers/analyzer_base.py → modwire-9.0.0/src/modwire/architecture/boundaries/domain.py +27 -11
  23. modwire-9.0.0/src/modwire/architecture/boundaries/models/edge_rule_violation.py +9 -0
  24. modwire-9.0.0/src/modwire/architecture/boundaries/models/flow_report.py +15 -0
  25. modwire-9.0.0/src/modwire/architecture/boundaries/models/flow_violation.py +22 -0
  26. modwire-9.0.0/src/modwire/architecture/boundaries/models/types.py +1 -0
  27. modwire-9.0.0/src/modwire/architecture/boundaries/services/__init__.py +1 -0
  28. modwire-5.0.0/src/modwire/architecture/boundaries/analyzers/backward.py → modwire-9.0.0/src/modwire/architecture/boundaries/services/backward_flow_analyzer.py +11 -5
  29. modwire-9.0.0/src/modwire/architecture/boundaries/services/boundaries_flow_analyzer.py +53 -0
  30. modwire-5.0.0/src/modwire/architecture/boundaries/analyzers/module_boundaries.py → modwire-9.0.0/src/modwire/architecture/boundaries/services/module_boundary_analyzer.py +31 -57
  31. modwire-5.0.0/src/modwire/architecture/boundaries/analyzers/no_cycles.py → modwire-9.0.0/src/modwire/architecture/boundaries/services/no_cycles_flow_analyzer.py +14 -15
  32. modwire-5.0.0/src/modwire/architecture/boundaries/analyzers/no_reentry.py → modwire-9.0.0/src/modwire/architecture/boundaries/services/no_reentry_flow_analyzer.py +15 -10
  33. modwire-9.0.0/src/modwire/architecture/config/__init__.py +1 -0
  34. modwire-9.0.0/src/modwire/architecture/config/application.py +13 -0
  35. modwire-9.0.0/src/modwire/architecture/config/models/__init__.py +1 -0
  36. modwire-9.0.0/src/modwire/architecture/config/models/architecture_config.py +11 -0
  37. modwire-9.0.0/src/modwire/architecture/config/models/boundaries_config.py +28 -0
  38. modwire-9.0.0/src/modwire/architecture/config/models/boundary_rule.py +9 -0
  39. modwire-9.0.0/src/modwire/architecture/config/models/configuration_value.py +5 -0
  40. modwire-9.0.0/src/modwire/architecture/config/models/flow_realm.py +7 -0
  41. modwire-9.0.0/src/modwire/architecture/config/models/flow_rules.py +21 -0
  42. modwire-9.0.0/src/modwire/architecture/config/models/shape_config.py +15 -0
  43. modwire-9.0.0/src/modwire/architecture/config/models/shape_realm.py +11 -0
  44. modwire-9.0.0/src/modwire/architecture/config/models/shape_rules.py +22 -0
  45. modwire-9.0.0/src/modwire/architecture/config/models/tag_rule.py +9 -0
  46. modwire-9.0.0/src/modwire/architecture/facade.py +27 -0
  47. modwire-9.0.0/src/modwire/architecture/insights/__init__.py +1 -0
  48. modwire-9.0.0/src/modwire/architecture/insights/application.py +34 -0
  49. modwire-9.0.0/src/modwire/architecture/insights/domain.py +20 -0
  50. modwire-9.0.0/src/modwire/architecture/insights/models/__init__.py +1 -0
  51. modwire-9.0.0/src/modwire/architecture/insights/models/callable_report_entry.py +7 -0
  52. modwire-9.0.0/src/modwire/architecture/insights/models/callables_report.py +13 -0
  53. modwire-9.0.0/src/modwire/architecture/insights/models/clusters_report.py +13 -0
  54. modwire-9.0.0/src/modwire/architecture/insights/models/clusters_report_item.py +10 -0
  55. modwire-9.0.0/src/modwire/architecture/insights/models/coherence_report.py +15 -0
  56. modwire-9.0.0/src/modwire/architecture/insights/models/exports_report.py +11 -0
  57. modwire-9.0.0/src/modwire/architecture/insights/models/exports_report_item.py +9 -0
  58. modwire-9.0.0/src/modwire/architecture/insights/models/hotspots_report.py +13 -0
  59. modwire-9.0.0/src/modwire/architecture/insights/models/hotspots_report_item.py +8 -0
  60. modwire-9.0.0/src/modwire/architecture/insights/models/insight_report.py +28 -0
  61. modwire-9.0.0/src/modwire/architecture/insights/services/__init__.py +1 -0
  62. modwire-9.0.0/src/modwire/architecture/insights/services/callables_reporter.py +41 -0
  63. modwire-9.0.0/src/modwire/architecture/insights/services/clusters_reporter.py +84 -0
  64. modwire-9.0.0/src/modwire/architecture/insights/services/coherence_reporter.py +46 -0
  65. modwire-5.0.0/src/modwire/architecture/insights/reporters/exports.py → modwire-9.0.0/src/modwire/architecture/insights/services/exports_reporter.py +17 -28
  66. modwire-9.0.0/src/modwire/architecture/insights/services/hotspots_reporter.py +40 -0
  67. modwire-9.0.0/src/modwire/architecture/insights/services/insight_report_field_map.py +12 -0
  68. modwire-9.0.0/src/modwire/architecture/map/__init__.py +1 -0
  69. modwire-9.0.0/src/modwire/architecture/map/application.py +17 -0
  70. modwire-9.0.0/src/modwire/architecture/map/domain.py +11 -0
  71. modwire-9.0.0/src/modwire/architecture/map/models/__init__.py +1 -0
  72. modwire-5.0.0/src/modwire/architecture/map/base.py → modwire-9.0.0/src/modwire/architecture/map/models/architecture_map.py +6 -10
  73. modwire-9.0.0/src/modwire/architecture/map/models/architecture_realm.py +7 -0
  74. {modwire-5.0.0/src/modwire/architecture/boundaries/tags → modwire-9.0.0/src/modwire/architecture/map/models}/tag_map.py +4 -15
  75. modwire-9.0.0/src/modwire/architecture/map/models/tag_match.py +10 -0
  76. modwire-9.0.0/src/modwire/architecture/map/services/__init__.py +1 -0
  77. modwire-9.0.0/src/modwire/architecture/map/services/architecture_map_loader.py +52 -0
  78. modwire-9.0.0/src/modwire/architecture/map/services/tag_matcher.py +70 -0
  79. modwire-9.0.0/src/modwire/architecture/report/__init__.py +1 -0
  80. modwire-9.0.0/src/modwire/architecture/report/application.py +28 -0
  81. modwire-9.0.0/src/modwire/architecture/report/domain.py +16 -0
  82. modwire-9.0.0/src/modwire/architecture/report/models/__init__.py +1 -0
  83. modwire-9.0.0/src/modwire/architecture/report/models/architecture_group.py +6 -0
  84. modwire-9.0.0/src/modwire/architecture/report/models/map_report.py +16 -0
  85. modwire-9.0.0/src/modwire/architecture/report/models/report_catalog.py +6 -0
  86. modwire-9.0.0/src/modwire/architecture/report/models/report_descriptor.py +26 -0
  87. modwire-9.0.0/src/modwire/architecture/report/models/report_item.py +4 -0
  88. modwire-9.0.0/src/modwire/architecture/report/models/report_metadata.py +11 -0
  89. modwire-9.0.0/src/modwire/architecture/report/models/report_node.py +35 -0
  90. modwire-9.0.0/src/modwire/architecture/report/models/report_section.py +4 -0
  91. modwire-9.0.0/src/modwire/architecture/report/services/__init__.py +0 -0
  92. modwire-9.0.0/src/modwire/architecture/report/services/map_report_collector.py +34 -0
  93. modwire-9.0.0/src/modwire/architecture/shape/__init__.py +1 -0
  94. modwire-9.0.0/src/modwire/architecture/shape/application.py +53 -0
  95. modwire-9.0.0/src/modwire/architecture/shape/domain.py +59 -0
  96. modwire-9.0.0/src/modwire/architecture/shape/models/__init__.py +1 -0
  97. modwire-9.0.0/src/modwire/architecture/shape/models/shape_realm_architecture_map.py +8 -0
  98. modwire-9.0.0/src/modwire/architecture/shape/models/shape_report.py +15 -0
  99. modwire-9.0.0/src/modwire/architecture/shape/models/shape_violation.py +11 -0
  100. modwire-9.0.0/src/modwire/architecture/shape/services/__init__.py +1 -0
  101. {modwire-5.0.0/src/modwire/architecture/shape/resolvers → modwire-9.0.0/src/modwire/architecture/shape/services}/abstract_class_resolver.py +18 -25
  102. {modwire-5.0.0/src/modwire/architecture/shape/resolvers → modwire-9.0.0/src/modwire/architecture/shape/services}/callable_resolver.py +27 -37
  103. {modwire-5.0.0/src/modwire/architecture/shape/resolvers → modwire-9.0.0/src/modwire/architecture/shape/services}/class_resolver.py +20 -31
  104. {modwire-5.0.0/src/modwire/architecture/shape/resolvers → modwire-9.0.0/src/modwire/architecture/shape/services}/file_resolver.py +21 -26
  105. {modwire-5.0.0/src/modwire/architecture/shape/resolvers → modwire-9.0.0/src/modwire/architecture/shape/services}/import_resolver.py +13 -17
  106. {modwire-5.0.0/src/modwire/architecture/shape/resolvers → modwire-9.0.0/src/modwire/architecture/shape/services}/property_resolver.py +26 -32
  107. {modwire-5.0.0/src/modwire/architecture/shape/resolvers → modwire-9.0.0/src/modwire/architecture/shape/services}/signature_resolver.py +19 -25
  108. modwire-9.0.0/src/modwire/architecture/shape/services/symbol_resolver.py +29 -0
  109. modwire-9.0.0/src/modwire/autowiring.py +23 -0
  110. modwire-9.0.0/src/modwire/cli/__init__.py +0 -0
  111. modwire-9.0.0/src/modwire/cli/documentation/__init__.py +1 -0
  112. modwire-9.0.0/src/modwire/cli/documentation/application.py +20 -0
  113. modwire-9.0.0/src/modwire/cli/documentation/services/__init__.py +1 -0
  114. modwire-9.0.0/src/modwire/cli/documentation/services/documentation_generator.py +37 -0
  115. modwire-9.0.0/src/modwire/cli/facade.py +87 -0
  116. modwire-9.0.0/src/modwire/cli/initialization/__init__.py +1 -0
  117. modwire-9.0.0/src/modwire/cli/initialization/application.py +45 -0
  118. modwire-9.0.0/src/modwire/cli/initialization/models/__init__.py +1 -0
  119. modwire-9.0.0/src/modwire/cli/initialization/models/initialization_result.py +9 -0
  120. modwire-9.0.0/src/modwire/cli/initialization/services/__init__.py +1 -0
  121. modwire-9.0.0/src/modwire/cli/initialization/services/initialization_service.py +27 -0
  122. modwire-9.0.0/src/modwire/cli/pipeline/__init__.py +1 -0
  123. modwire-9.0.0/src/modwire/cli/pipeline/application.py +59 -0
  124. modwire-9.0.0/src/modwire/cli/pipeline/domain.py +29 -0
  125. modwire-9.0.0/src/modwire/cli/pipeline/models/__init__.py +1 -0
  126. modwire-9.0.0/src/modwire/cli/pipeline/models/command_request.py +13 -0
  127. modwire-9.0.0/src/modwire/cli/pipeline/models/extractor_batch_input.py +5 -0
  128. modwire-9.0.0/src/modwire/cli/pipeline/models/extractor_command_input.py +7 -0
  129. modwire-9.0.0/src/modwire/cli/pipeline/models/extractor_source_input.py +10 -0
  130. modwire-9.0.0/src/modwire/cli/pipeline/models/report_pipeline_context.py +22 -0
  131. modwire-9.0.0/src/modwire/cli/pipeline/models/scan_policy.py +8 -0
  132. modwire-9.0.0/src/modwire/cli/pipeline/services/__init__.py +1 -0
  133. modwire-9.0.0/src/modwire/cli/pipeline/services/batch_source_reader.py +203 -0
  134. modwire-9.0.0/src/modwire/cli/pipeline/services/callables_insight.py +28 -0
  135. modwire-9.0.0/src/modwire/cli/pipeline/services/clusters_insight.py +30 -0
  136. modwire-9.0.0/src/modwire/cli/pipeline/services/coherence_insight.py +36 -0
  137. modwire-9.0.0/src/modwire/cli/pipeline/services/command_line.py +33 -0
  138. modwire-9.0.0/src/modwire/cli/pipeline/services/configuration_loader.py +14 -0
  139. modwire-9.0.0/src/modwire/cli/pipeline/services/extractor_command.py +49 -0
  140. modwire-9.0.0/src/modwire/cli/pipeline/services/flow_violations.py +25 -0
  141. modwire-9.0.0/src/modwire/cli/pipeline/services/hotspots_insight.py +28 -0
  142. modwire-9.0.0/src/modwire/cli/pipeline/services/map_tree.py +47 -0
  143. modwire-9.0.0/src/modwire/cli/pipeline/services/output_console.py +8 -0
  144. modwire-9.0.0/src/modwire/cli/pipeline/services/shape_violations.py +29 -0
  145. modwire-9.0.0/src/modwire/cli/pipeline/services/success.py +20 -0
  146. modwire-9.0.0/src/modwire/cli/pipeline/services/unknown_files_warning.py +24 -0
  147. modwire-9.0.0/src/modwire/cli/pipeline/services/unused_exports_insight.py +27 -0
  148. modwire-9.0.0/src/modwire/cli/resources/__init__.py +1 -0
  149. modwire-9.0.0/src/modwire/cli/resources/application.py +17 -0
  150. modwire-9.0.0/src/modwire/cli/resources/models/__init__.py +0 -0
  151. modwire-9.0.0/src/modwire/cli/resources/models/defaults.py +14 -0
  152. modwire-9.0.0/src/modwire/cli/resources/models/init_asset.py +10 -0
  153. modwire-9.0.0/src/modwire/cli/resources/templates/AGENTS.md +1 -0
  154. modwire-9.0.0/src/modwire/cli/resources/templates/ARCHITECTURE.md +49 -0
  155. modwire-9.0.0/src/modwire/cli/resources/templates/INDEX.md +9 -0
  156. modwire-9.0.0/src/modwire/cli/resources/templates/MODWIRE.md +5 -0
  157. modwire-9.0.0/src/modwire/cli/resources/templates/RULES.md +6 -0
  158. modwire-9.0.0/src/modwire/cli/resources/templates/TESTING.md +7 -0
  159. modwire-9.0.0/src/modwire/cli/resources/templates/WORKFLOW.md +8 -0
  160. modwire-9.0.0/src/modwire/cli/resources/templates/architecture.yaml +60 -0
  161. modwire-9.0.0/src/modwire/extraction/__init__.py +0 -0
  162. modwire-9.0.0/src/modwire/extraction/dependency/__init__.py +1 -0
  163. modwire-9.0.0/src/modwire/extraction/dependency/application.py +21 -0
  164. modwire-9.0.0/src/modwire/extraction/dependency/domain.py +17 -0
  165. modwire-9.0.0/src/modwire/extraction/dependency/services/__init__.py +1 -0
  166. modwire-9.0.0/src/modwire/extraction/dependency/services/graph_builder.py +25 -0
  167. modwire-9.0.0/src/modwire/extraction/dependency/services/import_resolver.py +53 -0
  168. modwire-9.0.0/src/modwire/extraction/dependency/services/suffix_index.py +30 -0
  169. modwire-9.0.0/src/modwire/extraction/extractors/__init__.py +1 -0
  170. modwire-9.0.0/src/modwire/extraction/extractors/application.py +45 -0
  171. modwire-9.0.0/src/modwire/extraction/extractors/domain.py +30 -0
  172. modwire-9.0.0/src/modwire/extraction/extractors/models/__init__.py +1 -0
  173. modwire-9.0.0/src/modwire/extraction/extractors/models/batch_config.py +11 -0
  174. modwire-9.0.0/src/modwire/extraction/extractors/models/extraction_request.py +9 -0
  175. modwire-9.0.0/src/modwire/extraction/extractors/models/extractor_resource.py +6 -0
  176. modwire-9.0.0/src/modwire/extraction/extractors/models/extractor_runtime.py +10 -0
  177. modwire-9.0.0/src/modwire/extraction/extractors/models/python_call_context.py +10 -0
  178. modwire-9.0.0/src/modwire/extraction/extractors/resources/__init__.py +1 -0
  179. modwire-9.0.0/src/modwire/extraction/extractors/resources/php/build.php +105 -0
  180. modwire-9.0.0/src/modwire/extraction/extractors/resources/php/build.py +27 -0
  181. modwire-9.0.0/src/modwire/extraction/extractors/resources/php/composer.json +14 -0
  182. modwire-9.0.0/src/modwire/extraction/extractors/resources/php/composer.lock +77 -0
  183. modwire-9.0.0/src/modwire/extraction/extractors/resources/php/script.php +0 -0
  184. modwire-9.0.0/src/modwire/extraction/extractors/resources/php/script.src.php +783 -0
  185. modwire-9.0.0/src/modwire/extraction/extractors/resources/python/__init__.py +1 -0
  186. modwire-9.0.0/src/modwire/extraction/extractors/resources/python/script.py +4 -0
  187. modwire-9.0.0/src/modwire/extraction/extractors/resources/typescript/build.mjs +29 -0
  188. modwire-9.0.0/src/modwire/extraction/extractors/resources/typescript/build.py +23 -0
  189. modwire-9.0.0/src/modwire/extraction/extractors/resources/typescript/package-lock.json +351 -0
  190. modwire-9.0.0/src/modwire/extraction/extractors/resources/typescript/package.json +16 -0
  191. modwire-9.0.0/src/modwire/extraction/extractors/resources/typescript/script.js +234665 -0
  192. modwire-9.0.0/src/modwire/extraction/extractors/resources/typescript/script.ts +1139 -0
  193. modwire-9.0.0/src/modwire/extraction/extractors/resources/typescript/tsconfig.json +14 -0
  194. modwire-9.0.0/src/modwire/extraction/extractors/services/__init__.py +1 -0
  195. modwire-9.0.0/src/modwire/extraction/extractors/services/php_extractor.py +26 -0
  196. modwire-9.0.0/src/modwire/extraction/extractors/services/python_call_reader.py +61 -0
  197. modwire-9.0.0/src/modwire/extraction/extractors/services/python_extractor.py +27 -0
  198. modwire-9.0.0/src/modwire/extraction/extractors/services/python_syntax_parser.py +758 -0
  199. modwire-9.0.0/src/modwire/extraction/extractors/services/type_script_extractor.py +26 -0
  200. modwire-9.0.0/src/modwire/extraction/facade.py +30 -0
  201. modwire-9.0.0/src/modwire/py.typed +0 -0
  202. modwire-9.0.0/src/modwire/shared/__init__.py +0 -0
  203. modwire-9.0.0/src/modwire/shared/code/__init__.py +1 -0
  204. modwire-9.0.0/src/modwire/shared/code/application.py +23 -0
  205. modwire-9.0.0/src/modwire/shared/code/domain.py +19 -0
  206. modwire-9.0.0/src/modwire/shared/code/models/__init__.py +1 -0
  207. modwire-9.0.0/src/modwire/shared/code/models/code_map.py +21 -0
  208. modwire-5.0.0/src/modwire/code/package.py → modwire-9.0.0/src/modwire/shared/code/models/code_package.py +12 -16
  209. modwire-9.0.0/src/modwire/shared/code/models/dependency_edge_result.py +9 -0
  210. modwire-9.0.0/src/modwire/shared/code/models/dependency_graph.py +95 -0
  211. modwire-9.0.0/src/modwire/shared/code/models/dependency_node_result.py +10 -0
  212. modwire-9.0.0/src/modwire/shared/code/models/duplicate_identity_error.py +31 -0
  213. modwire-9.0.0/src/modwire/shared/code/models/edge.py +14 -0
  214. modwire-9.0.0/src/modwire/shared/code/models/edge_resolution.py +3 -0
  215. modwire-9.0.0/src/modwire/shared/code/models/identity.py +5 -0
  216. modwire-9.0.0/src/modwire/shared/code/models/node.py +10 -0
  217. modwire-9.0.0/src/modwire/shared/code/models/query_builder.py +33 -0
  218. modwire-9.0.0/src/modwire/shared/code/models/query_types.py +4 -0
  219. modwire-9.0.0/src/modwire/shared/code/models/queryable_code_map.py +144 -0
  220. modwire-9.0.0/src/modwire/shared/code/models/source_abstract_class.py +9 -0
  221. modwire-9.0.0/src/modwire/shared/code/models/source_call.py +13 -0
  222. modwire-9.0.0/src/modwire/shared/code/models/source_callable.py +22 -0
  223. modwire-9.0.0/src/modwire/shared/code/models/source_callable_symbol.py +6 -0
  224. modwire-9.0.0/src/modwire/shared/code/models/source_class.py +8 -0
  225. modwire-9.0.0/src/modwire/shared/code/models/source_class_method.py +5 -0
  226. modwire-9.0.0/src/modwire/shared/code/models/source_class_property.py +6 -0
  227. modwire-9.0.0/src/modwire/shared/code/models/source_export.py +17 -0
  228. modwire-9.0.0/src/modwire/shared/code/models/source_extraction.py +17 -0
  229. modwire-9.0.0/src/modwire/shared/code/models/source_file.py +32 -0
  230. modwire-9.0.0/src/modwire/shared/code/models/source_file_result.py +8 -0
  231. modwire-9.0.0/src/modwire/shared/code/models/source_function.py +5 -0
  232. modwire-9.0.0/src/modwire/shared/code/models/source_import.py +22 -0
  233. modwire-9.0.0/src/modwire/shared/code/models/source_imported_symbol.py +10 -0
  234. modwire-9.0.0/src/modwire/shared/code/models/source_interface.py +10 -0
  235. modwire-9.0.0/src/modwire/shared/code/models/source_item_result.py +5 -0
  236. modwire-9.0.0/src/modwire/shared/code/models/source_parameter.py +9 -0
  237. modwire-9.0.0/src/modwire/shared/code/models/source_signature.py +9 -0
  238. modwire-9.0.0/src/modwire/shared/code/models/source_symbol.py +9 -0
  239. modwire-9.0.0/src/modwire/shared/code/models/source_type.py +8 -0
  240. modwire-9.0.0/src/modwire/shared/code/models/source_value.py +13 -0
  241. modwire-9.0.0/src/modwire/shared/code/models/types.py +14 -0
  242. modwire-9.0.0/src/modwire/shared/code/services/__init__.py +1 -0
  243. modwire-9.0.0/src/modwire/shared/code/services/glob_path_matcher.py +41 -0
  244. modwire-9.0.0/src/modwire/shared/code/services/identity_resolver.py +30 -0
  245. modwire-9.0.0/src/modwire/shared/values/__init__.py +1 -0
  246. modwire-9.0.0/src/modwire/shared/values/models/__init__.py +0 -0
  247. modwire-9.0.0/src/modwire/shared/values/models/value_model.py +23 -0
  248. modwire-9.0.0/tests/__init__.py +0 -0
  249. modwire-9.0.0/tests/application/__init__.py +0 -0
  250. modwire-9.0.0/tests/application/base_test.py +40 -0
  251. modwire-9.0.0/tests/application/test_01_attacks.py +28 -0
  252. modwire-9.0.0/tests/application/test_06_happy_path.py +25 -0
  253. modwire-9.0.0/tests/architecture/__init__.py +0 -0
  254. modwire-9.0.0/tests/architecture/base_test.py +13 -0
  255. modwire-9.0.0/tests/architecture/boundaries/__init__.py +0 -0
  256. modwire-9.0.0/tests/architecture/boundaries/base_test.py +38 -0
  257. modwire-9.0.0/tests/architecture/boundaries/test_01_attacks.py +47 -0
  258. modwire-9.0.0/tests/architecture/boundaries/test_02_invariants.py +59 -0
  259. modwire-9.0.0/tests/architecture/boundaries/test_03_public_api.py +27 -0
  260. modwire-9.0.0/tests/architecture/boundaries/test_04_paths.py +66 -0
  261. modwire-9.0.0/tests/architecture/config/__init__.py +0 -0
  262. modwire-9.0.0/tests/architecture/config/test_01_attacks.py +50 -0
  263. modwire-9.0.0/tests/architecture/config/test_02_invariants.py +29 -0
  264. modwire-9.0.0/tests/architecture/insights/__init__.py +0 -0
  265. modwire-9.0.0/tests/architecture/insights/base_test.py +12 -0
  266. modwire-9.0.0/tests/architecture/insights/test_02_invariants.py +79 -0
  267. modwire-9.0.0/tests/architecture/map/__init__.py +0 -0
  268. modwire-9.0.0/tests/architecture/map/test_02_patterns.py +59 -0
  269. modwire-9.0.0/tests/architecture/report/__init__.py +0 -0
  270. modwire-9.0.0/tests/architecture/report/test_02_invariants.py +33 -0
  271. modwire-9.0.0/tests/architecture/shape/__init__.py +0 -0
  272. modwire-9.0.0/tests/architecture/shape/base_test.py +7 -0
  273. modwire-9.0.0/tests/architecture/shape/test_01_limits.py +126 -0
  274. modwire-9.0.0/tests/architecture/shape/test_02_invariants.py +48 -0
  275. modwire-9.0.0/tests/cli/__init__.py +0 -0
  276. modwire-9.0.0/tests/cli/base_test.py +37 -0
  277. modwire-9.0.0/tests/cli/documentation/__init__.py +0 -0
  278. modwire-9.0.0/tests/cli/documentation/test_02_invariants.py +19 -0
  279. modwire-9.0.0/tests/cli/initialization/__init__.py +0 -0
  280. modwire-9.0.0/tests/cli/initialization/test_01_attacks.py +9 -0
  281. modwire-9.0.0/tests/cli/initialization/test_02_invariants.py +15 -0
  282. modwire-9.0.0/tests/cli/initialization/test_03_interruption.py +10 -0
  283. modwire-9.0.0/tests/cli/initialization/test_04_cleanup.py +10 -0
  284. modwire-9.0.0/tests/cli/initialization/test_05_recovery.py +10 -0
  285. modwire-9.0.0/tests/cli/pipeline/__init__.py +0 -0
  286. modwire-9.0.0/tests/cli/pipeline/base_test.py +24 -0
  287. modwire-9.0.0/tests/cli/pipeline/test_01_attacks.py +44 -0
  288. modwire-9.0.0/tests/cli/pipeline/test_02_invariants.py +115 -0
  289. modwire-9.0.0/tests/cli/pipeline/test_03_interruption.py +16 -0
  290. modwire-9.0.0/tests/cli/pipeline/test_04_command_transport.py +45 -0
  291. modwire-9.0.0/tests/cli/pipeline/test_05_recovery.py +36 -0
  292. modwire-9.0.0/tests/cli/pipeline/test_06_happy_path.py +25 -0
  293. modwire-9.0.0/tests/conftest.py +0 -0
  294. modwire-9.0.0/tests/extraction/__init__.py +0 -0
  295. modwire-9.0.0/tests/extraction/base_test.py +6 -0
  296. modwire-9.0.0/tests/extraction/big_projects/__init__.py +0 -0
  297. modwire-9.0.0/tests/extraction/big_projects/project.py +19 -0
  298. modwire-9.0.0/tests/extraction/big_projects/projects.json +32 -0
  299. modwire-9.0.0/tests/extraction/big_projects/resolution_results.json +50 -0
  300. modwire-9.0.0/tests/extraction/big_projects/results.json +20 -0
  301. modwire-9.0.0/tests/extraction/big_projects/run.py +210 -0
  302. modwire-9.0.0/tests/extraction/dependency/__init__.py +0 -0
  303. modwire-9.0.0/tests/extraction/dependency/test_02_invariants.py +107 -0
  304. modwire-9.0.0/tests/extraction/extractors/__init__.py +0 -0
  305. modwire-9.0.0/tests/extraction/extractors/test_01_attacks.py +14 -0
  306. modwire-9.0.0/tests/extraction/extractors/test_02_invariants.py +31 -0
  307. modwire-9.0.0/tests/extraction/extractors/test_03_native_symbols.py +50 -0
  308. modwire-9.0.0/tests/extraction/scan_benchmark/__init__.py +0 -0
  309. modwire-9.0.0/tests/extraction/scan_benchmark/prepare.py +68 -0
  310. modwire-9.0.0/tests/extraction/scan_benchmark/results.json +46 -0
  311. modwire-9.0.0/tests/extraction/scan_benchmark/run.py +93 -0
  312. modwire-9.0.0/tests/fixtures/languages/php/ignored/example_generated.php +6 -0
  313. modwire-9.0.0/tests/fixtures/languages/php/src/example_application/example_actions/example_action.php +28 -0
  314. modwire-9.0.0/tests/fixtures/languages/php/src/example_domain/example_model/example_record.php +16 -0
  315. modwire-9.0.0/tests/fixtures/languages/php/src/example_domain/example_services/example_policy.php +17 -0
  316. modwire-9.0.0/tests/fixtures/languages/php/src/example_interfaces/example_http/example_controller.php +18 -0
  317. modwire-9.0.0/tests/fixtures/languages/python/ignored/example_generated.py +5 -0
  318. modwire-9.0.0/tests/fixtures/languages/python/src/example_application/example_actions/example_action.py +26 -0
  319. modwire-9.0.0/tests/fixtures/languages/python/src/example_domain/example_model/example_record.py +11 -0
  320. modwire-9.0.0/tests/fixtures/languages/python/src/example_domain/example_services/example_policy.py +10 -0
  321. modwire-9.0.0/tests/fixtures/languages/python/src/example_interfaces/example_http/example_controller.py +14 -0
  322. modwire-9.0.0/tests/fixtures/languages/typescript/ignored/example_generated.ts +3 -0
  323. modwire-9.0.0/tests/fixtures/languages/typescript/src/example_application/example_actions/example_action.ts +24 -0
  324. modwire-9.0.0/tests/fixtures/languages/typescript/src/example_domain/example_model/example_record.ts +11 -0
  325. modwire-9.0.0/tests/fixtures/languages/typescript/src/example_domain/example_model/example_view.tsx +5 -0
  326. modwire-9.0.0/tests/fixtures/languages/typescript/src/example_domain/example_services/example_audit.js +3 -0
  327. modwire-9.0.0/tests/fixtures/languages/typescript/src/example_domain/example_services/example_callables.ts +25 -0
  328. modwire-9.0.0/tests/fixtures/languages/typescript/src/example_domain/example_services/example_policy.ts +11 -0
  329. modwire-9.0.0/tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_controller.ts +13 -0
  330. modwire-9.0.0/tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_view.jsx +3 -0
  331. modwire-9.0.0/tests/fixtures/syntax/php/example_shapes.php +32 -0
  332. modwire-9.0.0/tests/fixtures/syntax/python/example_shapes.py +28 -0
  333. modwire-9.0.0/tests/fixtures/syntax/typescript/example_shapes.ts +28 -0
  334. modwire-9.0.0/tests/shared/__init__.py +0 -0
  335. modwire-9.0.0/tests/shared/code/__init__.py +0 -0
  336. modwire-9.0.0/tests/shared/code/test_02_invariants.py +67 -0
  337. modwire-9.0.0/tests/support/__init__.py +0 -0
  338. modwire-9.0.0/tests/support/base_test.py +28 -0
  339. modwire-9.0.0/tests/support/code_map.py +163 -0
  340. modwire-9.0.0/tests/support/service_test.py +25 -0
  341. modwire-9.0.0/uv.lock +837 -0
  342. modwire-5.0.0/.github/ISSUE_TEMPLATE/bug_report.yml +0 -107
  343. modwire-5.0.0/.github/ISSUE_TEMPLATE/config.yml +0 -1
  344. modwire-5.0.0/.github/ISSUE_TEMPLATE/decision.yml +0 -48
  345. modwire-5.0.0/.github/ISSUE_TEMPLATE/epic.yml +0 -51
  346. modwire-5.0.0/.github/ISSUE_TEMPLATE/feature_request.yml +0 -70
  347. modwire-5.0.0/.github/ISSUE_TEMPLATE/task.yml +0 -56
  348. modwire-5.0.0/.github/PULL_REQUEST_TEMPLATE.md +0 -14
  349. modwire-5.0.0/.github/modwire-ecosystem.yml +0 -227
  350. modwire-5.0.0/.github/scripts/reconcile_ecosystem.py +0 -636
  351. modwire-5.0.0/.github/workflows/ci.yml +0 -30
  352. modwire-5.0.0/.github/workflows/human-approval.yml +0 -133
  353. modwire-5.0.0/.github/workflows/issue-metadata-check.yml +0 -17
  354. modwire-5.0.0/.github/workflows/issue-metadata.yml +0 -87
  355. modwire-5.0.0/.github/workflows/python-package.yml +0 -84
  356. modwire-5.0.0/.github/workflows/python-release-assets.yml +0 -36
  357. modwire-5.0.0/.github/workflows/python-release-build.yml +0 -86
  358. modwire-5.0.0/.github/workflows/release.yml +0 -47
  359. modwire-5.0.0/.modwire/boundaries.yaml +0 -44
  360. modwire-5.0.0/.modwire/shape.yaml +0 -5
  361. modwire-5.0.0/CHANGELOG.md +0 -120
  362. modwire-5.0.0/CONTRIBUTING.md +0 -39
  363. modwire-5.0.0/LICENSE +0 -21
  364. modwire-5.0.0/MANIFEST.in +0 -2
  365. modwire-5.0.0/Makefile +0 -6
  366. modwire-5.0.0/PKG-INFO +0 -125
  367. modwire-5.0.0/README.md +0 -87
  368. modwire-5.0.0/docs/decisions/0001-canonical-modwire-repository-shape.md +0 -106
  369. modwire-5.0.0/docs/governance/github-ecosystem.md +0 -249
  370. modwire-5.0.0/docs/governance/python-workflows.md +0 -127
  371. modwire-5.0.0/docs/migration-5.md +0 -53
  372. modwire-5.0.0/docs/scaffolding/golden/cli.yaml +0 -44
  373. modwire-5.0.0/docs/scaffolding/golden/library.yaml +0 -40
  374. modwire-5.0.0/docs/scaffolding/repository-contract-v1.yaml +0 -147
  375. modwire-5.0.0/docs/wiki/Development-checks.md +0 -25
  376. modwire-5.0.0/docs/wiki/Home.md +0 -28
  377. modwire-5.0.0/docs/wiki/Reporting-bugs.md +0 -24
  378. modwire-5.0.0/docs/wiki/Requesting-features.md +0 -26
  379. modwire-5.0.0/pyproject.toml +0 -90
  380. modwire-5.0.0/setup.cfg +0 -4
  381. modwire-5.0.0/src/modwire/__init__.py +0 -14
  382. modwire-5.0.0/src/modwire/_version.py +0 -24
  383. modwire-5.0.0/src/modwire/architecture/__init__.py +0 -7
  384. modwire-5.0.0/src/modwire/architecture/app.py +0 -67
  385. modwire-5.0.0/src/modwire/architecture/boundaries/__init__.py +0 -4
  386. modwire-5.0.0/src/modwire/architecture/boundaries/analyzer.py +0 -60
  387. modwire-5.0.0/src/modwire/architecture/boundaries/analyzers/__init__.py +0 -1
  388. modwire-5.0.0/src/modwire/architecture/boundaries/base.py +0 -58
  389. modwire-5.0.0/src/modwire/architecture/boundaries/collector.py +0 -32
  390. modwire-5.0.0/src/modwire/architecture/boundaries/composition.py +0 -22
  391. modwire-5.0.0/src/modwire/architecture/boundaries/tags/__init__.py +0 -9
  392. modwire-5.0.0/src/modwire/architecture/boundaries/tags/matcher.py +0 -135
  393. modwire-5.0.0/src/modwire/architecture/composition.py +0 -21
  394. modwire-5.0.0/src/modwire/architecture/insights/__init__.py +0 -4
  395. modwire-5.0.0/src/modwire/architecture/insights/base.py +0 -14
  396. modwire-5.0.0/src/modwire/architecture/insights/collector.py +0 -31
  397. modwire-5.0.0/src/modwire/architecture/insights/composition.py +0 -18
  398. modwire-5.0.0/src/modwire/architecture/insights/reporters/__init__.py +0 -7
  399. modwire-5.0.0/src/modwire/architecture/insights/reporters/base.py +0 -43
  400. modwire-5.0.0/src/modwire/architecture/insights/reporters/callables.py +0 -60
  401. modwire-5.0.0/src/modwire/architecture/insights/reporters/clusters.py +0 -121
  402. modwire-5.0.0/src/modwire/architecture/insights/reporters/coherence.py +0 -60
  403. modwire-5.0.0/src/modwire/architecture/insights/reporters/hotspots.py +0 -62
  404. modwire-5.0.0/src/modwire/architecture/map/__init__.py +0 -4
  405. modwire-5.0.0/src/modwire/architecture/map/collector.py +0 -40
  406. modwire-5.0.0/src/modwire/architecture/map/composition.py +0 -8
  407. modwire-5.0.0/src/modwire/architecture/map/loader.py +0 -63
  408. modwire-5.0.0/src/modwire/architecture/shape/__init__.py +0 -4
  409. modwire-5.0.0/src/modwire/architecture/shape/base.py +0 -92
  410. modwire-5.0.0/src/modwire/architecture/shape/collector.py +0 -42
  411. modwire-5.0.0/src/modwire/architecture/shape/composition.py +0 -27
  412. modwire-5.0.0/src/modwire/architecture/shape/resolvers/symbol_resolver.py +0 -33
  413. modwire-5.0.0/src/modwire/code/__init__.py +0 -6
  414. modwire-5.0.0/src/modwire/facade.py +0 -23
  415. modwire-5.0.0/src/modwire/layers/__init__.py +0 -11
  416. modwire-5.0.0/src/modwire/layers/app.py +0 -9
  417. modwire-5.0.0/src/modwire/modules/__init__.py +0 -4
  418. modwire-5.0.0/src/modwire/modules/app.py +0 -9
  419. modwire-5.0.0/src/modwire/projects/__init__.py +0 -53
  420. modwire-5.0.0/src/modwire/projects/app.py +0 -9
  421. modwire-5.0.0/src/modwire/projects/ecosystem.py +0 -330
  422. modwire-5.0.0/src/modwire/shared/__init__.py +0 -19
  423. modwire-5.0.0/src/modwire/shared/base.py +0 -61
  424. modwire-5.0.0/src/modwire/shared/config/__init__.py +0 -36
  425. modwire-5.0.0/src/modwire/shared/config/architecture.py +0 -67
  426. modwire-5.0.0/src/modwire/shared/config/layers.py +0 -30
  427. modwire-5.0.0/src/modwire/shared/config/modules.py +0 -18
  428. modwire-5.0.0/src/modwire/shared/config/modwire.py +0 -14
  429. modwire-5.0.0/src/modwire/shared/config/projects.py +0 -27
  430. modwire-5.0.0/src/modwire/shared/config/shape.py +0 -40
  431. modwire-5.0.0/src/modwire/shared/report/__init__.py +0 -18
  432. modwire-5.0.0/src/modwire/shared/report/base.py +0 -105
  433. modwire-5.0.0/src/modwire.egg-info/PKG-INFO +0 -125
  434. modwire-5.0.0/src/modwire.egg-info/SOURCES.txt +0 -122
  435. modwire-5.0.0/src/modwire.egg-info/requires.txt +0 -11
  436. modwire-5.0.0/src/modwire.egg-info/scm_file_list.json +0 -119
  437. modwire-5.0.0/src/modwire.egg-info/scm_version.json +0 -8
  438. modwire-5.0.0/src/modwire.egg-info/top_level.txt +0 -1
  439. modwire-5.0.0/tests/test_architecture.py +0 -19
  440. modwire-5.0.0/tests/test_boundaries.py +0 -192
  441. modwire-5.0.0/tests/test_ecosystem_contract.py +0 -95
  442. modwire-5.0.0/tests/test_import_shape.py +0 -57
  443. modwire-5.0.0/tests/test_models.py +0 -57
  444. modwire-5.0.0/tests/test_repository_shape_contract.py +0 -44
  445. modwire-5.0.0/uv.lock +0 -841
  446. {modwire-5.0.0/src/modwire/architecture/shape/resolvers → modwire-9.0.0/src/modwire}/__init__.py +0 -0
  447. /modwire-5.0.0/src/modwire.egg-info/dependency_links.txt → /modwire-9.0.0/src/modwire/architecture/boundaries/__init__.py +0 -0
  448. /modwire-5.0.0/src/modwire/py.typed → /modwire-9.0.0/src/modwire/architecture/boundaries/models/__init__.py +0 -0
@@ -0,0 +1,342 @@
1
+ .gitignore
2
+ AGENTS.md
3
+ LICENSE
4
+ MANIFEST.in
5
+ Makefile
6
+ README.md
7
+ pyproject.toml
8
+ setup.cfg
9
+ setup.py
10
+ uv.lock
11
+ .github/workflows/ci.yml
12
+ .github/workflows/release.yml
13
+ docs/target-language-ownership.md
14
+ scripts/check_extractors.py
15
+ scripts/generate_docs.py
16
+ scripts/verify_consumer.py
17
+ src/modwire/__init__.py
18
+ src/modwire/__main__.py
19
+ src/modwire/application.py
20
+ src/modwire/autowiring.py
21
+ src/modwire/py.typed
22
+ src/modwire/architecture/__init__.py
23
+ src/modwire/architecture/facade.py
24
+ src/modwire/architecture/boundaries/__init__.py
25
+ src/modwire/architecture/boundaries/application.py
26
+ src/modwire/architecture/boundaries/domain.py
27
+ src/modwire/architecture/boundaries/models/__init__.py
28
+ src/modwire/architecture/boundaries/models/edge_rule_violation.py
29
+ src/modwire/architecture/boundaries/models/flow_report.py
30
+ src/modwire/architecture/boundaries/models/flow_violation.py
31
+ src/modwire/architecture/boundaries/models/types.py
32
+ src/modwire/architecture/boundaries/services/__init__.py
33
+ src/modwire/architecture/boundaries/services/backward_flow_analyzer.py
34
+ src/modwire/architecture/boundaries/services/boundaries_flow_analyzer.py
35
+ src/modwire/architecture/boundaries/services/module_boundary_analyzer.py
36
+ src/modwire/architecture/boundaries/services/no_cycles_flow_analyzer.py
37
+ src/modwire/architecture/boundaries/services/no_reentry_flow_analyzer.py
38
+ src/modwire/architecture/config/__init__.py
39
+ src/modwire/architecture/config/application.py
40
+ src/modwire/architecture/config/models/__init__.py
41
+ src/modwire/architecture/config/models/architecture_config.py
42
+ src/modwire/architecture/config/models/boundaries_config.py
43
+ src/modwire/architecture/config/models/boundary_rule.py
44
+ src/modwire/architecture/config/models/configuration_value.py
45
+ src/modwire/architecture/config/models/flow_realm.py
46
+ src/modwire/architecture/config/models/flow_rules.py
47
+ src/modwire/architecture/config/models/shape_config.py
48
+ src/modwire/architecture/config/models/shape_realm.py
49
+ src/modwire/architecture/config/models/shape_rules.py
50
+ src/modwire/architecture/config/models/tag_rule.py
51
+ src/modwire/architecture/insights/__init__.py
52
+ src/modwire/architecture/insights/application.py
53
+ src/modwire/architecture/insights/domain.py
54
+ src/modwire/architecture/insights/models/__init__.py
55
+ src/modwire/architecture/insights/models/callable_report_entry.py
56
+ src/modwire/architecture/insights/models/callables_report.py
57
+ src/modwire/architecture/insights/models/clusters_report.py
58
+ src/modwire/architecture/insights/models/clusters_report_item.py
59
+ src/modwire/architecture/insights/models/coherence_report.py
60
+ src/modwire/architecture/insights/models/exports_report.py
61
+ src/modwire/architecture/insights/models/exports_report_item.py
62
+ src/modwire/architecture/insights/models/hotspots_report.py
63
+ src/modwire/architecture/insights/models/hotspots_report_item.py
64
+ src/modwire/architecture/insights/models/insight_report.py
65
+ src/modwire/architecture/insights/services/__init__.py
66
+ src/modwire/architecture/insights/services/callables_reporter.py
67
+ src/modwire/architecture/insights/services/clusters_reporter.py
68
+ src/modwire/architecture/insights/services/coherence_reporter.py
69
+ src/modwire/architecture/insights/services/exports_reporter.py
70
+ src/modwire/architecture/insights/services/hotspots_reporter.py
71
+ src/modwire/architecture/insights/services/insight_report_field_map.py
72
+ src/modwire/architecture/map/__init__.py
73
+ src/modwire/architecture/map/application.py
74
+ src/modwire/architecture/map/domain.py
75
+ src/modwire/architecture/map/models/__init__.py
76
+ src/modwire/architecture/map/models/architecture_map.py
77
+ src/modwire/architecture/map/models/architecture_realm.py
78
+ src/modwire/architecture/map/models/tag_map.py
79
+ src/modwire/architecture/map/models/tag_match.py
80
+ src/modwire/architecture/map/services/__init__.py
81
+ src/modwire/architecture/map/services/architecture_map_loader.py
82
+ src/modwire/architecture/map/services/tag_matcher.py
83
+ src/modwire/architecture/report/__init__.py
84
+ src/modwire/architecture/report/application.py
85
+ src/modwire/architecture/report/domain.py
86
+ src/modwire/architecture/report/models/__init__.py
87
+ src/modwire/architecture/report/models/architecture_group.py
88
+ src/modwire/architecture/report/models/map_report.py
89
+ src/modwire/architecture/report/models/report_catalog.py
90
+ src/modwire/architecture/report/models/report_descriptor.py
91
+ src/modwire/architecture/report/models/report_item.py
92
+ src/modwire/architecture/report/models/report_metadata.py
93
+ src/modwire/architecture/report/models/report_node.py
94
+ src/modwire/architecture/report/models/report_section.py
95
+ src/modwire/architecture/report/services/__init__.py
96
+ src/modwire/architecture/report/services/map_report_collector.py
97
+ src/modwire/architecture/shape/__init__.py
98
+ src/modwire/architecture/shape/application.py
99
+ src/modwire/architecture/shape/domain.py
100
+ src/modwire/architecture/shape/models/__init__.py
101
+ src/modwire/architecture/shape/models/shape_realm_architecture_map.py
102
+ src/modwire/architecture/shape/models/shape_report.py
103
+ src/modwire/architecture/shape/models/shape_violation.py
104
+ src/modwire/architecture/shape/services/__init__.py
105
+ src/modwire/architecture/shape/services/abstract_class_resolver.py
106
+ src/modwire/architecture/shape/services/callable_resolver.py
107
+ src/modwire/architecture/shape/services/class_resolver.py
108
+ src/modwire/architecture/shape/services/file_resolver.py
109
+ src/modwire/architecture/shape/services/import_resolver.py
110
+ src/modwire/architecture/shape/services/property_resolver.py
111
+ src/modwire/architecture/shape/services/signature_resolver.py
112
+ src/modwire/architecture/shape/services/symbol_resolver.py
113
+ src/modwire/cli/__init__.py
114
+ src/modwire/cli/facade.py
115
+ src/modwire/cli/documentation/__init__.py
116
+ src/modwire/cli/documentation/application.py
117
+ src/modwire/cli/documentation/services/__init__.py
118
+ src/modwire/cli/documentation/services/documentation_generator.py
119
+ src/modwire/cli/initialization/__init__.py
120
+ src/modwire/cli/initialization/application.py
121
+ src/modwire/cli/initialization/models/__init__.py
122
+ src/modwire/cli/initialization/models/initialization_result.py
123
+ src/modwire/cli/initialization/services/__init__.py
124
+ src/modwire/cli/initialization/services/initialization_service.py
125
+ src/modwire/cli/pipeline/__init__.py
126
+ src/modwire/cli/pipeline/application.py
127
+ src/modwire/cli/pipeline/domain.py
128
+ src/modwire/cli/pipeline/models/__init__.py
129
+ src/modwire/cli/pipeline/models/command_request.py
130
+ src/modwire/cli/pipeline/models/extractor_batch_input.py
131
+ src/modwire/cli/pipeline/models/extractor_command_input.py
132
+ src/modwire/cli/pipeline/models/extractor_source_input.py
133
+ src/modwire/cli/pipeline/models/report_pipeline_context.py
134
+ src/modwire/cli/pipeline/models/scan_policy.py
135
+ src/modwire/cli/pipeline/services/__init__.py
136
+ src/modwire/cli/pipeline/services/batch_source_reader.py
137
+ src/modwire/cli/pipeline/services/callables_insight.py
138
+ src/modwire/cli/pipeline/services/clusters_insight.py
139
+ src/modwire/cli/pipeline/services/coherence_insight.py
140
+ src/modwire/cli/pipeline/services/command_line.py
141
+ src/modwire/cli/pipeline/services/configuration_loader.py
142
+ src/modwire/cli/pipeline/services/extractor_command.py
143
+ src/modwire/cli/pipeline/services/flow_violations.py
144
+ src/modwire/cli/pipeline/services/hotspots_insight.py
145
+ src/modwire/cli/pipeline/services/map_tree.py
146
+ src/modwire/cli/pipeline/services/output_console.py
147
+ src/modwire/cli/pipeline/services/shape_violations.py
148
+ src/modwire/cli/pipeline/services/success.py
149
+ src/modwire/cli/pipeline/services/unknown_files_warning.py
150
+ src/modwire/cli/pipeline/services/unused_exports_insight.py
151
+ src/modwire/cli/resources/__init__.py
152
+ src/modwire/cli/resources/application.py
153
+ src/modwire/cli/resources/models/__init__.py
154
+ src/modwire/cli/resources/models/defaults.py
155
+ src/modwire/cli/resources/models/init_asset.py
156
+ src/modwire/cli/resources/templates/AGENTS.md
157
+ src/modwire/cli/resources/templates/ARCHITECTURE.md
158
+ src/modwire/cli/resources/templates/INDEX.md
159
+ src/modwire/cli/resources/templates/MODWIRE.md
160
+ src/modwire/cli/resources/templates/RULES.md
161
+ src/modwire/cli/resources/templates/TESTING.md
162
+ src/modwire/cli/resources/templates/WORKFLOW.md
163
+ src/modwire/cli/resources/templates/architecture.yaml
164
+ src/modwire/extraction/__init__.py
165
+ src/modwire/extraction/facade.py
166
+ src/modwire/extraction/dependency/__init__.py
167
+ src/modwire/extraction/dependency/application.py
168
+ src/modwire/extraction/dependency/domain.py
169
+ src/modwire/extraction/dependency/services/__init__.py
170
+ src/modwire/extraction/dependency/services/graph_builder.py
171
+ src/modwire/extraction/dependency/services/import_resolver.py
172
+ src/modwire/extraction/dependency/services/suffix_index.py
173
+ src/modwire/extraction/extractors/__init__.py
174
+ src/modwire/extraction/extractors/application.py
175
+ src/modwire/extraction/extractors/domain.py
176
+ src/modwire/extraction/extractors/models/__init__.py
177
+ src/modwire/extraction/extractors/models/batch_config.py
178
+ src/modwire/extraction/extractors/models/extraction_request.py
179
+ src/modwire/extraction/extractors/models/extractor_resource.py
180
+ src/modwire/extraction/extractors/models/extractor_runtime.py
181
+ src/modwire/extraction/extractors/models/python_call_context.py
182
+ src/modwire/extraction/extractors/resources/__init__.py
183
+ src/modwire/extraction/extractors/resources/php/build.php
184
+ src/modwire/extraction/extractors/resources/php/build.py
185
+ src/modwire/extraction/extractors/resources/php/composer.json
186
+ src/modwire/extraction/extractors/resources/php/composer.lock
187
+ src/modwire/extraction/extractors/resources/php/script.php
188
+ src/modwire/extraction/extractors/resources/php/script.src.php
189
+ src/modwire/extraction/extractors/resources/python/__init__.py
190
+ src/modwire/extraction/extractors/resources/python/script.py
191
+ src/modwire/extraction/extractors/resources/typescript/build.mjs
192
+ src/modwire/extraction/extractors/resources/typescript/build.py
193
+ src/modwire/extraction/extractors/resources/typescript/package-lock.json
194
+ src/modwire/extraction/extractors/resources/typescript/package.json
195
+ src/modwire/extraction/extractors/resources/typescript/script.js
196
+ src/modwire/extraction/extractors/resources/typescript/script.ts
197
+ src/modwire/extraction/extractors/resources/typescript/tsconfig.json
198
+ src/modwire/extraction/extractors/services/__init__.py
199
+ src/modwire/extraction/extractors/services/php_extractor.py
200
+ src/modwire/extraction/extractors/services/python_call_reader.py
201
+ src/modwire/extraction/extractors/services/python_extractor.py
202
+ src/modwire/extraction/extractors/services/python_syntax_parser.py
203
+ src/modwire/extraction/extractors/services/type_script_extractor.py
204
+ src/modwire/shared/__init__.py
205
+ src/modwire/shared/code/__init__.py
206
+ src/modwire/shared/code/application.py
207
+ src/modwire/shared/code/domain.py
208
+ src/modwire/shared/code/models/__init__.py
209
+ src/modwire/shared/code/models/code_map.py
210
+ src/modwire/shared/code/models/code_package.py
211
+ src/modwire/shared/code/models/dependency_edge_result.py
212
+ src/modwire/shared/code/models/dependency_graph.py
213
+ src/modwire/shared/code/models/dependency_node_result.py
214
+ src/modwire/shared/code/models/duplicate_identity_error.py
215
+ src/modwire/shared/code/models/edge.py
216
+ src/modwire/shared/code/models/edge_resolution.py
217
+ src/modwire/shared/code/models/identity.py
218
+ src/modwire/shared/code/models/node.py
219
+ src/modwire/shared/code/models/query_builder.py
220
+ src/modwire/shared/code/models/query_types.py
221
+ src/modwire/shared/code/models/queryable_code_map.py
222
+ src/modwire/shared/code/models/source_abstract_class.py
223
+ src/modwire/shared/code/models/source_call.py
224
+ src/modwire/shared/code/models/source_callable.py
225
+ src/modwire/shared/code/models/source_callable_symbol.py
226
+ src/modwire/shared/code/models/source_class.py
227
+ src/modwire/shared/code/models/source_class_method.py
228
+ src/modwire/shared/code/models/source_class_property.py
229
+ src/modwire/shared/code/models/source_export.py
230
+ src/modwire/shared/code/models/source_extraction.py
231
+ src/modwire/shared/code/models/source_file.py
232
+ src/modwire/shared/code/models/source_file_result.py
233
+ src/modwire/shared/code/models/source_function.py
234
+ src/modwire/shared/code/models/source_import.py
235
+ src/modwire/shared/code/models/source_imported_symbol.py
236
+ src/modwire/shared/code/models/source_interface.py
237
+ src/modwire/shared/code/models/source_item_result.py
238
+ src/modwire/shared/code/models/source_parameter.py
239
+ src/modwire/shared/code/models/source_signature.py
240
+ src/modwire/shared/code/models/source_symbol.py
241
+ src/modwire/shared/code/models/source_type.py
242
+ src/modwire/shared/code/models/source_value.py
243
+ src/modwire/shared/code/models/types.py
244
+ src/modwire/shared/code/services/__init__.py
245
+ src/modwire/shared/code/services/glob_path_matcher.py
246
+ src/modwire/shared/code/services/identity_resolver.py
247
+ src/modwire/shared/values/__init__.py
248
+ src/modwire/shared/values/models/__init__.py
249
+ src/modwire/shared/values/models/value_model.py
250
+ tests/__init__.py
251
+ tests/conftest.py
252
+ tests/application/__init__.py
253
+ tests/application/base_test.py
254
+ tests/application/test_01_attacks.py
255
+ tests/application/test_06_happy_path.py
256
+ tests/architecture/__init__.py
257
+ tests/architecture/base_test.py
258
+ tests/architecture/boundaries/__init__.py
259
+ tests/architecture/boundaries/base_test.py
260
+ tests/architecture/boundaries/test_01_attacks.py
261
+ tests/architecture/boundaries/test_02_invariants.py
262
+ tests/architecture/boundaries/test_03_public_api.py
263
+ tests/architecture/boundaries/test_04_paths.py
264
+ tests/architecture/config/__init__.py
265
+ tests/architecture/config/test_01_attacks.py
266
+ tests/architecture/config/test_02_invariants.py
267
+ tests/architecture/insights/__init__.py
268
+ tests/architecture/insights/base_test.py
269
+ tests/architecture/insights/test_02_invariants.py
270
+ tests/architecture/map/__init__.py
271
+ tests/architecture/map/test_02_patterns.py
272
+ tests/architecture/report/__init__.py
273
+ tests/architecture/report/test_02_invariants.py
274
+ tests/architecture/shape/__init__.py
275
+ tests/architecture/shape/base_test.py
276
+ tests/architecture/shape/test_01_limits.py
277
+ tests/architecture/shape/test_02_invariants.py
278
+ tests/cli/__init__.py
279
+ tests/cli/base_test.py
280
+ tests/cli/documentation/__init__.py
281
+ tests/cli/documentation/test_02_invariants.py
282
+ tests/cli/initialization/__init__.py
283
+ tests/cli/initialization/test_01_attacks.py
284
+ tests/cli/initialization/test_02_invariants.py
285
+ tests/cli/initialization/test_03_interruption.py
286
+ tests/cli/initialization/test_04_cleanup.py
287
+ tests/cli/initialization/test_05_recovery.py
288
+ tests/cli/pipeline/__init__.py
289
+ tests/cli/pipeline/base_test.py
290
+ tests/cli/pipeline/test_01_attacks.py
291
+ tests/cli/pipeline/test_02_invariants.py
292
+ tests/cli/pipeline/test_03_interruption.py
293
+ tests/cli/pipeline/test_04_command_transport.py
294
+ tests/cli/pipeline/test_05_recovery.py
295
+ tests/cli/pipeline/test_06_happy_path.py
296
+ tests/extraction/__init__.py
297
+ tests/extraction/base_test.py
298
+ tests/extraction/big_projects/__init__.py
299
+ tests/extraction/big_projects/project.py
300
+ tests/extraction/big_projects/projects.json
301
+ tests/extraction/big_projects/resolution_results.json
302
+ tests/extraction/big_projects/results.json
303
+ tests/extraction/big_projects/run.py
304
+ tests/extraction/dependency/__init__.py
305
+ tests/extraction/dependency/test_02_invariants.py
306
+ tests/extraction/extractors/__init__.py
307
+ tests/extraction/extractors/test_01_attacks.py
308
+ tests/extraction/extractors/test_02_invariants.py
309
+ tests/extraction/extractors/test_03_native_symbols.py
310
+ tests/extraction/scan_benchmark/__init__.py
311
+ tests/extraction/scan_benchmark/prepare.py
312
+ tests/extraction/scan_benchmark/results.json
313
+ tests/extraction/scan_benchmark/run.py
314
+ tests/fixtures/languages/php/ignored/example_generated.php
315
+ tests/fixtures/languages/php/src/example_application/example_actions/example_action.php
316
+ tests/fixtures/languages/php/src/example_domain/example_model/example_record.php
317
+ tests/fixtures/languages/php/src/example_domain/example_services/example_policy.php
318
+ tests/fixtures/languages/php/src/example_interfaces/example_http/example_controller.php
319
+ tests/fixtures/languages/python/ignored/example_generated.py
320
+ tests/fixtures/languages/python/src/example_application/example_actions/example_action.py
321
+ tests/fixtures/languages/python/src/example_domain/example_model/example_record.py
322
+ tests/fixtures/languages/python/src/example_domain/example_services/example_policy.py
323
+ tests/fixtures/languages/python/src/example_interfaces/example_http/example_controller.py
324
+ tests/fixtures/languages/typescript/ignored/example_generated.ts
325
+ tests/fixtures/languages/typescript/src/example_application/example_actions/example_action.ts
326
+ tests/fixtures/languages/typescript/src/example_domain/example_model/example_record.ts
327
+ tests/fixtures/languages/typescript/src/example_domain/example_model/example_view.tsx
328
+ tests/fixtures/languages/typescript/src/example_domain/example_services/example_audit.js
329
+ tests/fixtures/languages/typescript/src/example_domain/example_services/example_callables.ts
330
+ tests/fixtures/languages/typescript/src/example_domain/example_services/example_policy.ts
331
+ tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_controller.ts
332
+ tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_view.jsx
333
+ tests/fixtures/syntax/php/example_shapes.php
334
+ tests/fixtures/syntax/python/example_shapes.py
335
+ tests/fixtures/syntax/typescript/example_shapes.ts
336
+ tests/shared/__init__.py
337
+ tests/shared/code/__init__.py
338
+ tests/shared/code/test_02_invariants.py
339
+ tests/support/__init__.py
340
+ tests/support/base_test.py
341
+ tests/support/code_map.py
342
+ tests/support/service_test.py
@@ -0,0 +1,36 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ package:
14
+ name: Package on Python ${{ matrix.python-version }}
15
+ runs-on: ubuntu-latest
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ python-version: ["3.12", "3.13", "3.14"]
20
+ steps:
21
+ - uses: actions/checkout@v6
22
+ with:
23
+ fetch-depth: 0
24
+ - uses: actions/setup-python@v6
25
+ with:
26
+ python-version: ${{ matrix.python-version }}
27
+ - run: python -m pip install uv
28
+ - run: uv sync --all-groups --locked
29
+ - run: make host-check
30
+
31
+ extractors:
32
+ name: Extractor resources
33
+ runs-on: ubuntu-latest
34
+ steps:
35
+ - uses: actions/checkout@v6
36
+ - run: make extractor-check
@@ -0,0 +1,63 @@
1
+ name: Release
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ build:
12
+ name: Build release distributions
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v6
16
+ with:
17
+ fetch-depth: 0
18
+ ref: ${{ github.event.release.tag_name }}
19
+ - uses: actions/setup-python@v6
20
+ with:
21
+ python-version: "3.12"
22
+ - run: python -m pip install uv
23
+ - run: uv sync --all-groups --locked
24
+ - run: make package-check
25
+ - uses: actions/upload-artifact@v4
26
+ with:
27
+ name: python-package-distributions
28
+ path: .dev/dist/
29
+
30
+ publish-github-assets:
31
+ name: Attach distributions to GitHub release
32
+ needs: build
33
+ runs-on: ubuntu-latest
34
+ permissions:
35
+ contents: write
36
+ steps:
37
+ - uses: actions/download-artifact@v4
38
+ with:
39
+ name: python-package-distributions
40
+ path: .dev/dist/
41
+ - name: Upload release assets
42
+ env:
43
+ GH_TOKEN: ${{ github.token }}
44
+ run: gh release upload "${{ github.event.release.tag_name }}" .dev/dist/* --clobber --repo "${{ github.repository }}"
45
+
46
+ publish-pypi:
47
+ name: Publish distributions to PyPI
48
+ needs: [build, publish-github-assets]
49
+ runs-on: ubuntu-latest
50
+ environment:
51
+ name: pypi
52
+ url: https://pypi.org/project/modwire/
53
+ permissions:
54
+ id-token: write
55
+ steps:
56
+ - uses: actions/download-artifact@v4
57
+ with:
58
+ name: python-package-distributions
59
+ path: .dev/dist/
60
+ - uses: pypa/gh-action-pypi-publish@release/v1
61
+ with:
62
+ packages-dir: .dev/dist/
63
+ skip-existing: true
@@ -1,11 +1,13 @@
1
+ .venv/
1
2
  .dev/
2
- .env
3
+ __pycache__/
4
+ *.py[cod]
5
+ *.egg-info/
3
6
  .pytest_cache/
4
7
  .ruff_cache/
5
- .venv/
6
8
  build/
7
9
  dist/
8
- src/*.egg-info/
10
+ node_modules/
11
+ vendor/
9
12
  src/modwire/_version.py
10
- __pycache__/
11
- *.py[cod]
13
+ .coverage
@@ -0,0 +1 @@
1
+ Before work, call enclosure-mcp.get_workspace_context(root, task) once; obey its guidance and stop if unavailable or incomplete. Workflow: GitHub issue first; diagrams are SSOT; wait for explicit design acceptance; implement on a local issue branch; run required tests and enclosure-mcp.check_project_health after structural/API/DI/architecture changes; wait for explicit implementation acceptance before commit, push, PR, merge, closure, or branch cleanup. Preserve project names and unrelated changes.
modwire-9.0.0/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright (c) 2026 Tomasz Szpak. All rights reserved.
2
+
3
+ This software and its source code are proprietary. No license or other rights are granted to any person or entity.
4
+
5
+ Without prior express written permission from the copyright holder, you may not use, copy, reproduce, modify, merge,
6
+ publish, distribute, sublicense, sell, or create derivative works from this software or any portion of it, except to the
7
+ extent that such restriction is prohibited by applicable law.
8
+
9
+ Any unauthorized use is strictly prohibited.
10
+
11
+ THE SOFTWARE IS PROVIDED WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
12
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
13
+ LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR ITS USE.
@@ -0,0 +1,8 @@
1
+ include LICENSE
2
+ include README.md
3
+ recursive-include src *.py *.typed *.php *.js *.mjs *.ts *.json *.lock *.md *.yaml
4
+ recursive-include tests *.py *.json *.ts *.tsx *.js *.jsx *.php
5
+ recursive-include scripts *.py
6
+ prune verification
7
+ prune .dev
8
+ global-exclude __pycache__ *.py[cod]
modwire-9.0.0/Makefile ADDED
@@ -0,0 +1,55 @@
1
+ DEV_DIR := .dev
2
+ BUILD_DIR := $(DEV_DIR)/build
3
+ DIST_DIR := $(DEV_DIR)/dist
4
+ EGG_INFO_DIR := src/modwire.egg-info
5
+ PROJECT_ROOT := $(CURDIR)
6
+
7
+ export PYTHONPYCACHEPREFIX := $(PROJECT_ROOT)/$(DEV_DIR)/cache/python
8
+ export UV_CACHE_DIR := $(PROJECT_ROOT)/$(DEV_DIR)/cache/uv
9
+
10
+ .PHONY: big-projects build ci docs docs-check extractor-check format format-check host-check lint package-check scan-benchmark scan-benchmark-fixture test type-check
11
+
12
+ format:
13
+ uv run ruff format src tests scripts
14
+
15
+ format-check:
16
+ uv run ruff format --check src tests scripts
17
+
18
+ lint:
19
+ uv run ruff check src tests scripts
20
+
21
+ type-check:
22
+ uv run pyright src/modwire
23
+
24
+ test:
25
+ mkdir -p $(DEV_DIR)/testing
26
+ uv run pytest
27
+
28
+ big-projects:
29
+ uv run python -m tests.extraction.big_projects.run
30
+
31
+ scan-benchmark-fixture:
32
+ uv run python -m tests.extraction.scan_benchmark.prepare --root .dev/benchmarks/scan-project --source-template "$(SCAN_BENCHMARK_SOURCE)"
33
+
34
+ scan-benchmark:
35
+ uv run python -m tests.extraction.scan_benchmark.run --root .dev/benchmarks/scan-project --language "$(SCAN_BENCHMARK_LANGUAGE)" --excluded-pattern 'example_excluded/**'
36
+
37
+ docs-check:
38
+ uv run python scripts/generate_docs.py --check
39
+
40
+ docs:
41
+ uv run python scripts/generate_docs.py
42
+
43
+ build:
44
+ rm -rf $(BUILD_DIR) $(DIST_DIR) $(EGG_INFO_DIR)
45
+ uv build --out-dir $(DIST_DIR)
46
+
47
+ package-check: build
48
+ uv run twine check $(DIST_DIR)/*
49
+
50
+ extractor-check:
51
+ python3 scripts/check_extractors.py
52
+
53
+ host-check: format-check lint type-check test docs-check package-check
54
+
55
+ ci: host-check extractor-check
modwire-9.0.0/PKG-INFO ADDED
@@ -0,0 +1,89 @@
1
+ Metadata-Version: 2.4
2
+ Name: modwire
3
+ Version: 9.0.0
4
+ Summary: Code extraction, architecture analysis and the Modwire CLI.
5
+ Author: Tomasz Szpak
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/szpak-dev/modwire
8
+ Project-URL: Repository, https://github.com/szpak-dev/modwire
9
+ Project-URL: Issues, https://github.com/szpak-dev/modwire/issues
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Programming Language :: Python :: 3.13
12
+ Classifier: Programming Language :: Python :: 3.14
13
+ Classifier: Typing :: Typed
14
+ Requires-Python: >=3.12
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ Requires-Dist: pydantic>=2.12
18
+ Requires-Dist: pydantic-yaml>=1.7
19
+ Requires-Dist: rich>=13
20
+ Requires-Dist: wireup>=2.12.0
21
+ Provides-Extra: dev
22
+ Requires-Dist: build>=1.3; extra == "dev"
23
+ Requires-Dist: pytest>=9; extra == "dev"
24
+ Requires-Dist: ruff<0.16,>=0.14; extra == "dev"
25
+ Requires-Dist: pyright>=1.1; extra == "dev"
26
+ Requires-Dist: twine>=6; extra == "dev"
27
+ Dynamic: license-file
28
+
29
+ # Modwire
30
+
31
+ ## `ModwireApplication`
32
+
33
+ Public entry point for source discovery, extraction, architecture analysis, and the Modwire CLI.
34
+
35
+ ### `create`
36
+
37
+ Create an isolated application with all services resolved through Wireup.
38
+
39
+ ### `configure`
40
+
41
+ Validate architecture configuration values.
42
+
43
+ ### `catalog`
44
+
45
+ Return the available architecture reports.
46
+
47
+ ### `analyze`
48
+
49
+ Analyze a code map with a validated architecture configuration.
50
+
51
+ ### `discover`
52
+
53
+ Discover supported source languages beneath a root using the caller's scan policy.
54
+
55
+ ### `generate_map`
56
+
57
+ Extract one language and return its code map with honest scan metrics.
58
+
59
+ ``files_excluded`` counts only source files encountered and excluded directly.
60
+ ``directories_pruned`` counts directories rejected before descent; their
61
+ descendants are deliberately unobserved and are not included in file counts.
62
+
63
+ ### `generate_queryable_map`
64
+
65
+ Extract source files and return a queryable code map.
66
+
67
+ ### `load_configuration`
68
+
69
+ Load and validate an architecture configuration from a directory.
70
+
71
+ ### `initialize`
72
+
73
+ Create project-local Modwire configuration and agent guidance.
74
+
75
+ ### `generate_documentation`
76
+
77
+ Generate this README from the published interface docstrings, or check that it is current.
78
+
79
+ ### `run_extractor`
80
+
81
+ Run the native extractor transport for one supported language.
82
+
83
+ ### `run`
84
+
85
+ Run the Modwire command line interface and return its process status.
86
+
87
+ ## `ScanPolicy`
88
+
89
+ Caller-owned filesystem traversal policy with explicit exclusions and opt-in symlink following.