sourcecode 1.31.15__tar.gz → 1.31.16__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 (237) hide show
  1. sourcecode-1.31.16/.continue-here.md +108 -0
  2. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-07db8d0b.json → sourcecode-1.31.16/.sourcecode-cache/snapshot-88dc388-07db8d0b.json +1 -1
  3. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-178c65fa.json → sourcecode-1.31.16/.sourcecode-cache/snapshot-88dc388-178c65fa.json +70 -30
  4. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-530bd9cf.json → sourcecode-1.31.16/.sourcecode-cache/snapshot-88dc388-530bd9cf.json +6 -2
  5. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-56888a2a.json → sourcecode-1.31.16/.sourcecode-cache/snapshot-88dc388-56888a2a.json +5 -1
  6. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-5ea1c8f1.json → sourcecode-1.31.16/.sourcecode-cache/snapshot-88dc388-5ea1c8f1.json +6 -2
  7. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-7b6dd6cc.json → sourcecode-1.31.16/.sourcecode-cache/snapshot-88dc388-7b6dd6cc.json +6 -2
  8. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-8cb41bc4.json → sourcecode-1.31.16/.sourcecode-cache/snapshot-88dc388-8cb41bc4.json +1 -1
  9. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-c9ab42a3.json → sourcecode-1.31.16/.sourcecode-cache/snapshot-88dc388-c9ab42a3.json +124 -3
  10. sourcecode-1.31.16/AUDIT_REAL_REPOS.md +619 -0
  11. {sourcecode-1.31.15 → sourcecode-1.31.16}/PKG-INFO +207 -208
  12. sourcecode-1.31.16/README.md +348 -0
  13. sourcecode-1.31.16/docs/PRODUCT_TIERS.md +112 -0
  14. {sourcecode-1.31.15 → sourcecode-1.31.16}/pyproject.toml +1 -1
  15. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/__init__.py +1 -1
  16. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/cli.py +395 -4
  17. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/prepare_context.py +8 -1
  18. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/repository_ir.py +257 -27
  19. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/serializer.py +14 -2
  20. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_enterprise_benchmarks.py +759 -0
  21. sourcecode-1.31.15/.continue-here.md +0 -180
  22. sourcecode-1.31.15/README.md +0 -349
  23. {sourcecode-1.31.15 → sourcecode-1.31.16}/.agents/skills/source-command-gsd-join-discord/SKILL.md +0 -0
  24. {sourcecode-1.31.15 → sourcecode-1.31.16}/.agents/skills/source-command-gsd-review-backlog/SKILL.md +0 -0
  25. {sourcecode-1.31.15 → sourcecode-1.31.16}/.agents/skills/source-command-gsd-workstreams/SKILL.md +0 -0
  26. {sourcecode-1.31.15 → sourcecode-1.31.16}/.github/workflows/build-windows.yml +0 -0
  27. {sourcecode-1.31.15 → sourcecode-1.31.16}/.gitignore +0 -0
  28. {sourcecode-1.31.15 → sourcecode-1.31.16}/.ruff.toml +0 -0
  29. {sourcecode-1.31.15 → sourcecode-1.31.16}/.sourcecode-cache/snapshot-3b5997a-fa5c742c.json +0 -0
  30. /sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-379aba51.json → /sourcecode-1.31.16/.sourcecode-cache/snapshot-88dc388-379aba51.json +0 -0
  31. /sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-5b602060.json → /sourcecode-1.31.16/.sourcecode-cache/snapshot-88dc388-5b602060.json +0 -0
  32. /sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-6934996c.json → /sourcecode-1.31.16/.sourcecode-cache/snapshot-88dc388-6934996c.json +0 -0
  33. {sourcecode-1.31.15 → sourcecode-1.31.16}/CHANGELOG.md +0 -0
  34. {sourcecode-1.31.15 → sourcecode-1.31.16}/CONTRIBUTING.md +0 -0
  35. {sourcecode-1.31.15 → sourcecode-1.31.16}/LICENSE +0 -0
  36. {sourcecode-1.31.15 → sourcecode-1.31.16}/SECURITY.md +0 -0
  37. {sourcecode-1.31.15 → sourcecode-1.31.16}/docs/privacy.md +0 -0
  38. {sourcecode-1.31.15 → sourcecode-1.31.16}/docs/schema.md +0 -0
  39. {sourcecode-1.31.15 → sourcecode-1.31.16}/raw +0 -0
  40. {sourcecode-1.31.15 → sourcecode-1.31.16}/run_cli.py +0 -0
  41. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/adaptive_scanner.py +0 -0
  42. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/architecture_analyzer.py +0 -0
  43. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/architecture_summary.py +0 -0
  44. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/ast_extractor.py +0 -0
  45. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/canonical_ir.py +0 -0
  46. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/classifier.py +0 -0
  47. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/code_notes_analyzer.py +0 -0
  48. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/confidence_analyzer.py +0 -0
  49. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/context_scorer.py +0 -0
  50. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/context_summarizer.py +0 -0
  51. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/contract_model.py +0 -0
  52. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/contract_pipeline.py +0 -0
  53. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/coverage_parser.py +0 -0
  54. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/dependency_analyzer.py +0 -0
  55. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/__init__.py +0 -0
  56. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/base.py +0 -0
  57. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/csproj_parser.py +0 -0
  58. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/dart.py +0 -0
  59. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/dotnet.py +0 -0
  60. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/elixir.py +0 -0
  61. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/go.py +0 -0
  62. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/heuristic.py +0 -0
  63. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/hybrid.py +0 -0
  64. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/java.py +0 -0
  65. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/jvm_ext.py +0 -0
  66. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/nodejs.py +0 -0
  67. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/parsers.py +0 -0
  68. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/php.py +0 -0
  69. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/project.py +0 -0
  70. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/python.py +0 -0
  71. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/ruby.py +0 -0
  72. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/rust.py +0 -0
  73. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/systems.py +0 -0
  74. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/terraform.py +0 -0
  75. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/detectors/tooling.py +0 -0
  76. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/doc_analyzer.py +0 -0
  77. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/entrypoint_classifier.py +0 -0
  78. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/env_analyzer.py +0 -0
  79. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/file_classifier.py +0 -0
  80. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/flow_analyzer.py +0 -0
  81. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/git_analyzer.py +0 -0
  82. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/graph_analyzer.py +0 -0
  83. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/mcp/__init__.py +0 -0
  84. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  85. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  86. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  87. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  88. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  89. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/mcp/runner.py +0 -0
  90. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/mcp/server.py +0 -0
  91. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/metrics_analyzer.py +0 -0
  92. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/output_budget.py +0 -0
  93. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/path_filters.py +0 -0
  94. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/pr_comment_renderer.py +0 -0
  95. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/progress.py +0 -0
  96. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/ranking_engine.py +0 -0
  97. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/redactor.py +0 -0
  98. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/relevance_scorer.py +0 -0
  99. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/repo_classifier.py +0 -0
  100. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/runtime_classifier.py +0 -0
  101. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/scanner.py +0 -0
  102. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/schema.py +0 -0
  103. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/semantic_analyzer.py +0 -0
  104. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/summarizer.py +0 -0
  105. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/telemetry/__init__.py +0 -0
  106. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/telemetry/config.py +0 -0
  107. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/telemetry/consent.py +0 -0
  108. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/telemetry/events.py +0 -0
  109. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/telemetry/filters.py +0 -0
  110. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/telemetry/transport.py +0 -0
  111. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/tree_utils.py +0 -0
  112. {sourcecode-1.31.15 → sourcecode-1.31.16}/src/sourcecode/workspace.py +0 -0
  113. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/__init__.py +0 -0
  114. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/conftest.py +0 -0
  115. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/coverage.xml +0 -0
  116. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/fastapi_app/pyproject.toml +0 -0
  117. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/fastapi_app/src/main.py +0 -0
  118. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/go_service/cmd/api/main.go +0 -0
  119. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/go_service/go.mod +0 -0
  120. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/jacoco.xml +0 -0
  121. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/latin1_sample.java +0 -0
  122. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/latin1_sample_iso.java +0 -0
  123. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/lcov.info +0 -0
  124. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/nextjs_app/app/page.tsx +0 -0
  125. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/nextjs_app/package.json +0 -0
  126. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/nextjs_app/pnpm-lock.yaml +0 -0
  127. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/pnpm_monorepo/apps/web/app/page.tsx +0 -0
  128. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/pnpm_monorepo/apps/web/package.json +0 -0
  129. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/pnpm_monorepo/packages/api/main.py +0 -0
  130. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/pnpm_monorepo/packages/api/pyproject.toml +0 -0
  131. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/pnpm_monorepo/pnpm-workspace.yaml +0 -0
  132. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/pom.xml +0 -0
  133. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/application/service/FindAusenteService.java +0 -0
  134. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/domain/entities/Ausente.java +0 -0
  135. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/infrastructure/rest/AusenteRestController.java +0 -0
  136. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/application/service/FindAutocoberturasService.java +0 -0
  137. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/domain/entities/Autocoberturas.java +0 -0
  138. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/infrastructure/rest/AutocoberturasRestController.java +0 -0
  139. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/application/service/FindCalendarioTrabajadorService.java +0 -0
  140. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/domain/entities/CalendarioTrabajador.java +0 -0
  141. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/infrastructure/rest/CalendarioTrabajadorRestController.java +0 -0
  142. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/application/service/FindDepartamentoService.java +0 -0
  143. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/domain/entities/Departamento.java +0 -0
  144. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/infrastructure/rest/DepartamentoRestController.java +0 -0
  145. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/application/service/FindEmpleadoService.java +0 -0
  146. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/domain/entities/Empleado.java +0 -0
  147. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/infrastructure/rest/EmpleadoRestController.java +0 -0
  148. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/DemoApplication.java +0 -0
  149. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/config/FilterConfig.java +0 -0
  150. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/domain/Health.java +0 -0
  151. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/mapper/HealthMapper.java +0 -0
  152. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/repository/HealthRepository.java +0 -0
  153. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/service/HealthService.java +0 -0
  154. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/HealthRestController.java +0 -0
  155. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/NominaRestController.java +0 -0
  156. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/resources/application-dev.yml +0 -0
  157. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/resources/application.yml +0 -0
  158. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/fixtures/spring_boot_minimal/src/main/resources/mapper/HealthMapper.xml +0 -0
  159. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_architecture_analyzer.py +0 -0
  160. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_architecture_summary.py +0 -0
  161. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_ast_extractor.py +0 -0
  162. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_audit_fixes.py +0 -0
  163. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_audit_sas_v2.py +0 -0
  164. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_block1_reliability.py +0 -0
  165. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_block2_coverage.py +0 -0
  166. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_block5_quality.py +0 -0
  167. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_broadleaf_fixes.py +0 -0
  168. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_bug_fixes_v1302.py +0 -0
  169. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_bug_fixes_v13115.py +0 -0
  170. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_bug_fixes_v1312.py +0 -0
  171. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_bug_fixes_v1313.py +0 -0
  172. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_bug_fixes_v16.py +0 -0
  173. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_bug_fixes_v2.py +0 -0
  174. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_canonical_ir.py +0 -0
  175. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_classifier.py +0 -0
  176. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_cli.py +0 -0
  177. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_code_notes_analyzer.py +0 -0
  178. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_context_scorer.py +0 -0
  179. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_contract_pipeline.py +0 -0
  180. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_coverage_parser.py +0 -0
  181. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_cross_consistency.py +0 -0
  182. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_dependency_analyzer_node_python.py +0 -0
  183. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_dependency_analyzer_polyglot.py +0 -0
  184. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_dependency_schema.py +0 -0
  185. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_detector_dotnet.py +0 -0
  186. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_detector_go_rust_java.py +0 -0
  187. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_detector_nodejs.py +0 -0
  188. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_detector_php_ruby_dart.py +0 -0
  189. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_detector_python.py +0 -0
  190. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_detector_universal_managed.py +0 -0
  191. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_detector_universal_systems.py +0 -0
  192. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_detectors_base.py +0 -0
  193. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_doc_analyzer_jsdom.py +0 -0
  194. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_doc_analyzer_python.py +0 -0
  195. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_encoding_regression.py +0 -0
  196. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_graph_analyzer_polyglot.py +0 -0
  197. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_graph_analyzer_python_node.py +0 -0
  198. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_graph_schema.py +0 -0
  199. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_hybrid_inference.py +0 -0
  200. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_integration.py +0 -0
  201. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_integration_dependencies.py +0 -0
  202. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_integration_detection.py +0 -0
  203. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_integration_docs.py +0 -0
  204. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_integration_graph_modules.py +0 -0
  205. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_integration_lqn.py +0 -0
  206. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_integration_metrics.py +0 -0
  207. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_integration_multistack.py +0 -0
  208. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_integration_semantics.py +0 -0
  209. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_integration_universal.py +0 -0
  210. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_java_spring_integration.py +0 -0
  211. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_mcp_runner.py +0 -0
  212. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_mcp_serve.py +0 -0
  213. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_mcp_tools.py +0 -0
  214. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_metrics_analyzer.py +0 -0
  215. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_output_ux.py +0 -0
  216. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_packaging.py +0 -0
  217. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_phase1_improvements.py +0 -0
  218. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_pipeline_integrity.py +0 -0
  219. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_real_projects.py +0 -0
  220. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_redactor.py +0 -0
  221. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_repository_ir.py +0 -0
  222. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_scanner.py +0 -0
  223. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_schema.py +0 -0
  224. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_schema_normalization.py +0 -0
  225. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_scoring_calibration.py +0 -0
  226. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_semantic_analyzer_node.py +0 -0
  227. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_semantic_analyzer_python.py +0 -0
  228. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_semantic_import_resolution.py +0 -0
  229. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_semantic_schema.py +0 -0
  230. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_signal_hierarchy.py +0 -0
  231. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_summarizer.py +0 -0
  232. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_surface_honesty.py +0 -0
  233. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_task_differentiation.py +0 -0
  234. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_telemetry.py +0 -0
  235. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_v131_improvements.py +0 -0
  236. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_v1_10_regressions.py +0 -0
  237. {sourcecode-1.31.15 → sourcecode-1.31.16}/tests/test_workspace_analyzer.py +0 -0
@@ -0,0 +1,108 @@
1
+ # Continue Here — atlas-cli sesión 19
2
+
3
+ **Paused:** 2026-05-24
4
+ **Repo:** `/Users/user/Documents/workspace/atlas-cli`
5
+ **Branch:** master
6
+ **Working tree:** 4 archivos modificados + 3 nuevos (sin commitear)
7
+
8
+ ---
9
+
10
+ ## Objetivo de esta sesión
11
+
12
+ Auditoría adversarial real de `sourcecode` contra repos enterprise Java (Keycloak + BroadleafCommerce). Validar credibilidad, encontrar bugs reales, actualizar documentación.
13
+
14
+ ---
15
+
16
+ ## Trabajo completado esta sesión
17
+
18
+ ### Sesión 18 (pendiente de commit)
19
+
20
+ **P1 — compute_blast_radius** (`repository_ir.py`):
21
+ - Campos nuevos: `mappers_affected`, `security_surface_affected`, `cross_module_impact`, `confidence_score/level`, `explanation`, `candidates`
22
+ - Risk formula: mapper ×1.5, security ×2.0, module ×1.0
23
+ - Mapper filter: class-level only (no `#`)
24
+
25
+ **P1 — CLI top-level workflows** (`cli.py`):
26
+ - `sourcecode onboard`, `review-pr`, `fix-bug`, `modernize` como comandos top-level
27
+ - `ctx.invoke()` → `prepare_context_cmd`. `_SUBCOMMANDS` actualizado. Tier labels en `--help`.
28
+
29
+ **P1 — Benchmarks** (`tests/test_enterprise_benchmarks.py`):
30
+ - +72 tests (46→118). Fixture `mybatis_heavy_repo`. **1466 passed, 3 skipped.**
31
+
32
+ ### Sesión 19 (nueva, pendiente de commit)
33
+
34
+ **Auditoría real adversarial** → `AUDIT_REAL_REPOS.md`:
35
+ - Keycloak (6363 clases) + BroadleafCommerce (2970 clases)
36
+ - 7 bugs encontrados (2 P1, 5 P2)
37
+ - Performance medido, recall medido, architecture accuracy verificada
38
+
39
+ **README reescrito** basado en evidencia real:
40
+ - Token counts honestos (2000-4000), benchmark table real, limitaciones documentadas, `@M3FiltroSeguridad` eliminado
41
+
42
+ ---
43
+
44
+ ## Bugs encontrados (auditoría)
45
+
46
+ | # | Sev | Bug | Fix location |
47
+ |---|---|---|---|
48
+ | BUG-01 | **P1** | `impact <Impl>`: métodos propios como "direct callers" → risk=HIGH falso | `repository_ir.py` `compute_blast_radius` — filtrar `contained_in` |
49
+ | BUG-02 | **P1** | BFS collapse: `KeycloakSession --depth 4` = 91s | `compute_blast_radius` — hub-class guard: `if callers>500 and depth>1: depth=1` |
50
+ | BUG-03 | P2 | Test stem: `RedirectUtils` ≠ `RedirectUtilsTest` → false positive | `prepare_context.py:1315` — `.removesuffix("Test").removesuffix("IT")` |
51
+ | BUG-04 | P2 | `bounded_contexts: ["keycloak","keycloak","keycloak"]` duplicados | serialización architecture — `list(dict.fromkeys(...))` |
52
+ | BUG-05 | P2 | `modernize` recomienda "Start with hotspot_candidates" cuando lista vacía | `cli.py` modernize_cmd — recommendation condicional |
53
+ | BUG-06 | P2 | `--format` rechazado por subcommands (`endpoints`, `repo-ir`, etc.) | documentar como main-only o añadir a subcommands |
54
+ | BUG-07 | P2 | `--compact` overall=`high` cuando architecture=`low`; `--agent` dice `medium` | alinear lógica de downgrade |
55
+
56
+ ---
57
+
58
+ ## Estado archivos sin commitear
59
+
60
+ ```
61
+ M src/sourcecode/cli.py (+354)
62
+ M src/sourcecode/repository_ir.py (+257)
63
+ M tests/test_enterprise_benchmarks.py (+759)
64
+ M README.md (reescrito)
65
+ ?? AUDIT_REAL_REPOS.md
66
+ ?? docs/PRODUCT_TIERS.md
67
+ ```
68
+
69
+ Tests: **1466 passed, 3 skipped** ✅
70
+
71
+ ---
72
+
73
+ ## Primera acción al retomar
74
+
75
+ ```bash
76
+ cd /Users/user/Documents/workspace/atlas-cli
77
+
78
+ # 1. Verificar tests
79
+ python3 -m pytest tests/ -q 2>&1 | tail -3
80
+
81
+ # 2. Commitear sesiones 18+19
82
+ git add src/sourcecode/cli.py \
83
+ src/sourcecode/repository_ir.py \
84
+ tests/test_enterprise_benchmarks.py \
85
+ README.md \
86
+ docs/PRODUCT_TIERS.md \
87
+ AUDIT_REAL_REPOS.md
88
+ git commit
89
+ # Mensaje preparado:
90
+ # feat(impact,workflows,benchmarks): monetizable change-impact layer + enterprise workflows
91
+ # (ver mensaje completo en sesión 19)
92
+
93
+ # 3. Fijar BUG-01 (P1) — mayor ROI de credibilidad
94
+ # repository_ir.py: compute_blast_radius
95
+ # Filtrar: direct_callers = [c for c in callers if not c.startswith(f"{target}#")]
96
+ ```
97
+
98
+ ## Próximas acciones por ROI
99
+
100
+ 1. **BUG-01** — fix impl self-callers (30 min) → credibilidad inmediata
101
+ 2. **BUG-02** — hub-class BFS guard (20 min) → performance fix crítico
102
+ 3. **BUG-03** — test stem matching (15 min) → false positive en PR review
103
+ 4. **BUG-04 + BUG-05** — dedup + modernize recommendation (15 min) → cosmético pero visible
104
+ 5. **Impact caching** (1-2h) → 12s → <1s en uso repetido
105
+
106
+ ---
107
+
108
+ *Pausado 2026-05-24 — gsd:pause-work (sesión 19)*
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "metadata": {
3
3
  "schema_version": "1.0",
4
- "generated_at": "2026-05-24T10:59:20.218105+00:00",
4
+ "generated_at": "2026-05-24T18:49:36.513369+00:00",
5
5
  "sourcecode_version": "1.31.15",
6
6
  "analyzed_path": "/Users/user/Documents/workspace/atlas-cli",
7
7
  "analyzer_fingerprints": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "metadata": {
3
3
  "schema_version": "1.0",
4
- "generated_at": "2026-05-24T10:59:20.121717+00:00",
4
+ "generated_at": "2026-05-24T18:49:36.411691+00:00",
5
5
  "sourcecode_version": "1.31.15",
6
6
  "analyzed_path": "/Users/user/Documents/workspace/atlas-cli",
7
7
  "analyzer_fingerprints": {
@@ -121,13 +121,13 @@
121
121
  ],
122
122
  "metrics_summary": {
123
123
  "requested": true,
124
- "file_count": 184,
124
+ "file_count": 186,
125
125
  "test_file_count": 82,
126
126
  "languages": [
127
127
  "java",
128
128
  "python"
129
129
  ],
130
- "total_loc": 48115,
130
+ "total_loc": 49580,
131
131
  "coverage_records": [],
132
132
  "coverage_sources_found": [],
133
133
  "limitations": [],
@@ -345,15 +345,15 @@
345
345
  "language": "python",
346
346
  "is_test": false,
347
347
  "production_target": null,
348
- "total_lines": 3140,
349
- "code_lines": 2674,
350
- "blank_lines": 280,
351
- "comment_lines": 186,
348
+ "total_lines": 3492,
349
+ "code_lines": 2974,
350
+ "blank_lines": 319,
351
+ "comment_lines": 199,
352
352
  "loc_availability": "measured",
353
- "function_count": 41,
353
+ "function_count": 45,
354
354
  "class_count": 1,
355
355
  "symbol_availability": "measured",
356
- "cyclomatic_complexity": 13.487804878048781,
356
+ "cyclomatic_complexity": 13.044444444444444,
357
357
  "complexity_availability": "measured",
358
358
  "line_rate": null,
359
359
  "branch_rate": null,
@@ -1497,15 +1497,15 @@
1497
1497
  "language": "python",
1498
1498
  "is_test": false,
1499
1499
  "production_target": null,
1500
- "total_lines": 3087,
1501
- "code_lines": 2396,
1502
- "blank_lines": 422,
1503
- "comment_lines": 269,
1500
+ "total_lines": 3298,
1501
+ "code_lines": 2580,
1502
+ "blank_lines": 441,
1503
+ "comment_lines": 277,
1504
1504
  "loc_availability": "measured",
1505
- "function_count": 63,
1505
+ "function_count": 64,
1506
1506
  "class_count": 4,
1507
1507
  "symbol_availability": "measured",
1508
- "cyclomatic_complexity": 10.428571428571429,
1508
+ "cyclomatic_complexity": 11.265625,
1509
1509
  "complexity_availability": "measured",
1510
1510
  "line_rate": null,
1511
1511
  "branch_rate": null,
@@ -2630,15 +2630,15 @@
2630
2630
  "language": "python",
2631
2631
  "is_test": true,
2632
2632
  "production_target": null,
2633
- "total_lines": 967,
2634
- "code_lines": 764,
2635
- "blank_lines": 146,
2636
- "comment_lines": 57,
2633
+ "total_lines": 1726,
2634
+ "code_lines": 1363,
2635
+ "blank_lines": 251,
2636
+ "comment_lines": 112,
2637
2637
  "loc_availability": "measured",
2638
- "function_count": 53,
2639
- "class_count": 7,
2638
+ "function_count": 112,
2639
+ "class_count": 13,
2640
2640
  "symbol_availability": "measured",
2641
- "cyclomatic_complexity": 3.811320754716981,
2641
+ "cyclomatic_complexity": 4.053571428571429,
2642
2642
  "complexity_availability": "measured",
2643
2643
  "line_rate": null,
2644
2644
  "branch_rate": null,
@@ -3728,6 +3728,26 @@
3728
3728
  "coverage_availability": "unavailable",
3729
3729
  "workspace": null
3730
3730
  },
3731
+ {
3732
+ "path": "AUDIT_REAL_REPOS.md",
3733
+ "language": "unknown",
3734
+ "is_test": false,
3735
+ "production_target": null,
3736
+ "total_lines": 619,
3737
+ "code_lines": 386,
3738
+ "blank_lines": 175,
3739
+ "comment_lines": 58,
3740
+ "loc_availability": "measured",
3741
+ "function_count": 0,
3742
+ "class_count": 0,
3743
+ "symbol_availability": "unavailable",
3744
+ "complexity_availability": "unavailable",
3745
+ "line_rate": null,
3746
+ "branch_rate": null,
3747
+ "coverage_source": null,
3748
+ "coverage_availability": "unavailable",
3749
+ "workspace": null
3750
+ },
3731
3751
  {
3732
3752
  "path": "CHANGELOG.md",
3733
3753
  "language": "unknown",
@@ -3793,10 +3813,10 @@
3793
3813
  "language": "unknown",
3794
3814
  "is_test": false,
3795
3815
  "production_target": null,
3796
- "total_lines": 349,
3797
- "code_lines": 225,
3798
- "blank_lines": 84,
3799
- "comment_lines": 40,
3816
+ "total_lines": 348,
3817
+ "code_lines": 194,
3818
+ "blank_lines": 107,
3819
+ "comment_lines": 47,
3800
3820
  "loc_availability": "measured",
3801
3821
  "function_count": 0,
3802
3822
  "class_count": 0,
@@ -3828,6 +3848,26 @@
3828
3848
  "coverage_availability": "unavailable",
3829
3849
  "workspace": null
3830
3850
  },
3851
+ {
3852
+ "path": "docs/PRODUCT_TIERS.md",
3853
+ "language": "unknown",
3854
+ "is_test": false,
3855
+ "production_target": null,
3856
+ "total_lines": 112,
3857
+ "code_lines": 77,
3858
+ "blank_lines": 28,
3859
+ "comment_lines": 7,
3860
+ "loc_availability": "measured",
3861
+ "function_count": 0,
3862
+ "class_count": 0,
3863
+ "symbol_availability": "unavailable",
3864
+ "complexity_availability": "unavailable",
3865
+ "line_rate": null,
3866
+ "branch_rate": null,
3867
+ "coverage_source": null,
3868
+ "coverage_availability": "unavailable",
3869
+ "workspace": null
3870
+ },
3831
3871
  {
3832
3872
  "path": "docs/privacy.md",
3833
3873
  "language": "unknown",
@@ -3933,10 +3973,10 @@
3933
3973
  "language": "unknown",
3934
3974
  "is_test": false,
3935
3975
  "production_target": null,
3936
- "total_lines": 180,
3937
- "code_lines": 111,
3938
- "blank_lines": 46,
3939
- "comment_lines": 23,
3976
+ "total_lines": 108,
3977
+ "code_lines": 61,
3978
+ "blank_lines": 30,
3979
+ "comment_lines": 17,
3940
3980
  "loc_availability": "measured",
3941
3981
  "function_count": 0,
3942
3982
  "class_count": 0,
@@ -60,17 +60,21 @@
60
60
  "analyze_cmd(path: Path) -> None",
61
61
  "config_cmd() -> None",
62
62
  "endpoints_cmd(path: Path, output_path: Optional[Path]) ->...",
63
- "impact_cmd(target: str, path: Path, depth: int, output_pa...",
64
- "main(ctx: typer.Context, format: str, output: Optional[Pa..."
63
+ "fix_bug_cmd(ctx: typer.Context, path: Path, symptom: Opti...",
64
+ "impact_cmd(target: str, path: Path, depth: int, output_pa..."
65
65
  ],
66
66
  "exports": [
67
+ "main",
67
68
  "main_entry",
68
69
  "mcp_init",
69
70
  "mcp_remove",
70
71
  "mcp_serve",
71
72
  "mcp_status",
73
+ "modernize_cmd",
74
+ "onboard_cmd",
72
75
  "prepare_context_cmd",
73
76
  "repo_ir_cmd",
77
+ "review_pr_cmd",
74
78
  "telemetry_disable",
75
79
  "telemetry_enable",
76
80
  "telemetry_status",
@@ -47,16 +47,20 @@ contracts:
47
47
  - 'analyze_cmd(path: Path) -> None'
48
48
  - config_cmd() -> None
49
49
  - 'endpoints_cmd(path: Path, output_path: Optional[Path]) ->...'
50
+ - 'fix_bug_cmd(ctx: typer.Context, path: Path, symptom: Opti...'
50
51
  - 'impact_cmd(target: str, path: Path, depth: int, output_pa...'
51
- - 'main(ctx: typer.Context, format: str, output: Optional[Pa...'
52
52
  exports:
53
+ - main
53
54
  - main_entry
54
55
  - mcp_init
55
56
  - mcp_remove
56
57
  - mcp_serve
57
58
  - mcp_status
59
+ - modernize_cmd
60
+ - onboard_cmd
58
61
  - prepare_context_cmd
59
62
  - repo_ir_cmd
63
+ - review_pr_cmd
60
64
  - telemetry_disable
61
65
  - telemetry_enable
62
66
  - telemetry_status
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "metadata": {
3
3
  "schema_version": "1.0",
4
- "generated_at": "2026-05-24T10:59:16.965163+00:00",
4
+ "generated_at": "2026-05-24T18:49:33.532165+00:00",
5
5
  "sourcecode_version": "1.31.15",
6
6
  "analyzed_path": "/Users/user/Documents/workspace/atlas-cli",
7
7
  "analyzer_fingerprints": {
@@ -120,6 +120,7 @@
120
120
  }
121
121
  ],
122
122
  "file_tree": {
123
+ "AUDIT_REAL_REPOS.md": null,
123
124
  "run_cli.py": null,
124
125
  "LICENSE": null,
125
126
  "CHANGELOG.md": null,
@@ -253,7 +254,8 @@
253
254
  },
254
255
  "docs": {
255
256
  "schema.md": null,
256
- "privacy.md": null
257
+ "privacy.md": null,
258
+ "PRODUCT_TIERS.md": null
257
259
  },
258
260
  ".github": {
259
261
  "workflows": {
@@ -351,6 +353,7 @@
351
353
  }
352
354
  },
353
355
  "file_paths": [
356
+ "AUDIT_REAL_REPOS.md",
354
357
  "run_cli.py",
355
358
  "LICENSE",
356
359
  "CHANGELOG.md",
@@ -476,6 +479,7 @@
476
479
  "docs",
477
480
  "docs/schema.md",
478
481
  "docs/privacy.md",
482
+ "docs/PRODUCT_TIERS.md",
479
483
  ".github",
480
484
  ".github/workflows",
481
485
  ".github/workflows/build-windows.yml",
@@ -60,17 +60,21 @@
60
60
  "analyze_cmd(path: Path) -> None",
61
61
  "config_cmd() -> None",
62
62
  "endpoints_cmd(path: Path, output_path: Optional[Path]) ->...",
63
- "impact_cmd(target: str, path: Path, depth: int, output_pa...",
64
- "main(ctx: typer.Context, format: str, output: Optional[Pa..."
63
+ "fix_bug_cmd(ctx: typer.Context, path: Path, symptom: Opti...",
64
+ "impact_cmd(target: str, path: Path, depth: int, output_pa..."
65
65
  ],
66
66
  "exports": [
67
+ "main",
67
68
  "main_entry",
68
69
  "mcp_init",
69
70
  "mcp_remove",
70
71
  "mcp_serve",
71
72
  "mcp_status",
73
+ "modernize_cmd",
74
+ "onboard_cmd",
72
75
  "prepare_context_cmd",
73
76
  "repo_ir_cmd",
77
+ "review_pr_cmd",
74
78
  "telemetry_disable",
75
79
  "telemetry_enable",
76
80
  "telemetry_status",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "metadata": {
3
3
  "schema_version": "1.0",
4
- "generated_at": "2026-05-24T10:59:18.689511+00:00",
4
+ "generated_at": "2026-05-24T18:49:35.059569+00:00",
5
5
  "sourcecode_version": "1.31.15",
6
6
  "analyzed_path": "/Users/user/Documents/workspace/atlas-cli",
7
7
  "analyzer_fingerprints": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "metadata": {
3
3
  "schema_version": "1.0",
4
- "generated_at": "2026-05-24T10:59:17.503839+00:00",
4
+ "generated_at": "2026-05-24T18:49:34.076959+00:00",
5
5
  "sourcecode_version": "1.31.15",
6
6
  "analyzed_path": "/Users/user/Documents/workspace/atlas-cli",
7
7
  "analyzer_fingerprints": {
@@ -121,8 +121,8 @@
121
121
  ],
122
122
  "doc_summary": {
123
123
  "requested": true,
124
- "total_count": 1206,
125
- "symbol_count": 1144,
124
+ "total_count": 1217,
125
+ "symbol_count": 1155,
126
126
  "languages": [
127
127
  "python"
128
128
  ],
@@ -1980,6 +1980,83 @@
1980
1980
  "importance": "high",
1981
1981
  "workspace": null
1982
1982
  },
1983
+ {
1984
+ "symbol": "TestBlastRadiusEnhanced",
1985
+ "kind": "class",
1986
+ "language": "python",
1987
+ "path": "tests/test_enterprise_benchmarks.py",
1988
+ "doc_text": "New impact fields: mappers, security surface, cross-module, confidence, explanation.",
1989
+ "signature": null,
1990
+ "source": "docstring",
1991
+ "importance": "high",
1992
+ "workspace": null
1993
+ },
1994
+ {
1995
+ "symbol": "TestTargetResolution",
1996
+ "kind": "class",
1997
+ "language": "python",
1998
+ "path": "tests/test_enterprise_benchmarks.py",
1999
+ "doc_text": "Target resolution: exact, ambiguous, partial, not_found all handled correctly.",
2000
+ "signature": null,
2001
+ "source": "docstring",
2002
+ "importance": "high",
2003
+ "workspace": null
2004
+ },
2005
+ {
2006
+ "symbol": "mybatis_heavy_repo",
2007
+ "kind": "function",
2008
+ "language": "python",
2009
+ "path": "tests/test_enterprise_benchmarks.py",
2010
+ "doc_text": "MyBatis-heavy enterprise repo: 3 mappers, 3 services, 2 controllers, XML mappers.",
2011
+ "signature": "def mybatis_heavy_repo(tmp_path: Path) -> Generator[Path, None, None]",
2012
+ "source": "docstring",
2013
+ "importance": "high",
2014
+ "workspace": null
2015
+ },
2016
+ {
2017
+ "symbol": "TestMyBatisHeavyBlastRadius",
2018
+ "kind": "class",
2019
+ "language": "python",
2020
+ "path": "tests/test_enterprise_benchmarks.py",
2021
+ "doc_text": "Blast radius on MyBatis-heavy repos: persistence paths detected correctly.",
2022
+ "signature": null,
2023
+ "source": "docstring",
2024
+ "importance": "high",
2025
+ "workspace": null
2026
+ },
2027
+ {
2028
+ "symbol": "TestEnterpriseWorkflows",
2029
+ "kind": "class",
2030
+ "language": "python",
2031
+ "path": "tests/test_enterprise_benchmarks.py",
2032
+ "doc_text": "Top-level workflow commands produce bounded, structured output.",
2033
+ "signature": null,
2034
+ "source": "docstring",
2035
+ "importance": "high",
2036
+ "workspace": null
2037
+ },
2038
+ {
2039
+ "symbol": "TestRuntimeBenchmarks",
2040
+ "kind": "class",
2041
+ "language": "python",
2042
+ "path": "tests/test_enterprise_benchmarks.py",
2043
+ "doc_text": "IR build and impact analysis stay within reasonable wall-clock limits.\n\nThese are NOT hard CI gates — they characterise performance degradation.\nThresholds are generous (10s/5s) to avoid false failures on CI machines.",
2044
+ "signature": null,
2045
+ "source": "docstring",
2046
+ "importance": "high",
2047
+ "workspace": null
2048
+ },
2049
+ {
2050
+ "symbol": "TestMultiRepoComparisonMatrix",
2051
+ "kind": "class",
2052
+ "language": "python",
2053
+ "path": "tests/test_enterprise_benchmarks.py",
2054
+ "doc_text": "Cross-repo consistency: all repos must satisfy the same baseline contract.",
2055
+ "signature": null,
2056
+ "source": "docstring",
2057
+ "importance": "high",
2058
+ "workspace": null
2059
+ },
1983
2060
  {
1984
2061
  "symbol": "test_console_script_reports_version",
1985
2062
  "kind": "function",
@@ -9713,6 +9790,50 @@
9713
9790
  "importance": "high",
9714
9791
  "workspace": null
9715
9792
  },
9793
+ {
9794
+ "symbol": "onboard_cmd",
9795
+ "kind": "function",
9796
+ "language": "python",
9797
+ "path": "src/sourcecode/cli.py",
9798
+ "doc_text": "[OSS Core] Onboard an unfamiliar codebase: architecture, entry points, hotspots, risks.\n\n\b\nAnswers: \"What is this repo and where do I start?\"\n\nBuilds full project context optimised for a new developer or agent that\nhas never seen this codebase. Surfaces architecture summary, subsystems,\nkey entry points, hotspots, and tech-debt signals.\n\n\b\nWorkflow:\n sourcecode onboard .\n sourcecode onboard /path/to/repo --llm-prompt\n sourcecode onboard . --output onboard.json\n\n\b\nRelated workflows:\n sourcecode impact <target> — What breaks if I touch this?\n sourcecode review-pr — Risk-rank a pending PR\n sourcecode modernize . — Where should I refactor first?\n sourcecode fix-bug — Where does this symptom live?",
9799
+ "signature": "def onboard_cmd(ctx: typer.Context, path: Path=typer.Argument(Path('.'), help='Repository root to onboard (default: current directory)'), output_path: Optional[Path]=typer.Option(None, '--output', '-o', help='Write output to a file instead of stdout.'), llm_prompt: bool=typer.Option(False, '--llm-prompt', help='Append a ready-to-use LLM prompt to the output.'), copy: bool=typer.Option(False, '--copy', '-c', help='Copy output to clipboard after a successful run.')) -> None",
9800
+ "source": "docstring",
9801
+ "importance": "high",
9802
+ "workspace": null
9803
+ },
9804
+ {
9805
+ "symbol": "review_pr_cmd",
9806
+ "kind": "function",
9807
+ "language": "python",
9808
+ "path": "src/sourcecode/cli.py",
9809
+ "doc_text": "[Pro] PR review: blast radius, risk ranking, execution paths, security/txn impact.\n\n\b\nAnswers: \"What does this PR break and how risky is it?\"\n\nComputes a diff-based change impact report: changed symbols, BFS propagation\nthrough the call graph, affected endpoints, transactional boundaries,\nsecurity surface, and a per-file risk ranking.\n\n\b\nRequires either --since or a git diff to be present.\n\n\b\nWorkflow:\n sourcecode review-pr --since origin/main\n sourcecode review-pr . --since main --format github-comment\n sourcecode review-pr . --since HEAD~3 --output review.json\n\n\b\nRelated workflows:\n sourcecode impact <target> — Single-symbol blast radius\n sourcecode onboard . — Full architecture onboarding",
9810
+ "signature": "def review_pr_cmd(ctx: typer.Context, path: Path=typer.Argument(Path('.'), help='Repository root (default: current directory)'), since: Optional[str]=typer.Option(None, '--since', help='Git ref baseline for diff (e.g. origin/main, HEAD~3).'), output_path: Optional[Path]=typer.Option(None, '--output', '-o', help='Write output to a file instead of stdout.'), format: Optional[str]=typer.Option(None, '--format', help='Output format: json (default) | github-comment'), copy: bool=typer.Option(False, '--copy', '-c', help='Copy output to clipboard after a successful run.')) -> None",
9811
+ "source": "docstring",
9812
+ "importance": "high",
9813
+ "workspace": null
9814
+ },
9815
+ {
9816
+ "symbol": "fix_bug_cmd",
9817
+ "kind": "function",
9818
+ "language": "python",
9819
+ "path": "src/sourcecode/cli.py",
9820
+ "doc_text": "[Pro] Bug triage: risk-ranked files, suspected areas, related annotations.\n\n\b\nAnswers: \"Where in this codebase should I look to fix this symptom?\"\n\nSurfaces the most likely files/classes related to a bug symptom.\nRanks by risk score, annotation signals (@Transactional, security annotations),\nand structural coupling. Output is bounded and LLM-ready.\n\n\b\nWorkflow:\n sourcecode fix-bug --symptom \"NullPointerException in UserService\"\n sourcecode fix-bug . --symptom \"401 on /api/orders\"\n sourcecode fix-bug . --output bug-context.json\n\n\b\nRelated workflows:\n sourcecode impact <target> — Propagate impact from a specific class\n sourcecode onboard . — Full architecture context first",
9821
+ "signature": "def fix_bug_cmd(ctx: typer.Context, path: Path=typer.Argument(Path('.'), help='Repository root (default: current directory)'), symptom: Optional[str]=typer.Option(None, '--symptom', '-s', help='Keyword hint for the bug (boosts matching files and surfaces related annotations).'), output_path: Optional[Path]=typer.Option(None, '--output', '-o', help='Write output to a file instead of stdout.'), copy: bool=typer.Option(False, '--copy', '-c', help='Copy output to clipboard after a successful run.')) -> None",
9822
+ "source": "docstring",
9823
+ "importance": "high",
9824
+ "workspace": null
9825
+ },
9826
+ {
9827
+ "symbol": "modernize_cmd",
9828
+ "kind": "function",
9829
+ "language": "python",
9830
+ "path": "src/sourcecode/cli.py",
9831
+ "doc_text": "[Pro] Modernization planning: coupling, dead zones, risky modules, refactor candidates.\n\n\b\nAnswers: \"Where should I refactor first, and what's safest to touch?\"\n\nAnalyzes the repo for:\n - High-coupling modules (high in-degree + out-degree nodes)\n - Dead zones (isolated symbols with no callers)\n - Risk hotspots (high fan-in + security annotations + transaction boundaries)\n - Cross-module dependency tangles\n - Subsystem summary with member counts\n\nOutput is bounded and structured for both human review and LLM planning.\n\n\b\nWorkflow:\n sourcecode modernize .\n sourcecode modernize /path/to/repo --output modernize.json\n\n\b\nRelated workflows:\n sourcecode onboard . — Architecture overview first\n sourcecode impact <target> — Verify impact before touching a hotspot",
9832
+ "signature": "def modernize_cmd(path: Path=typer.Argument(Path('.'), help='Repository root to analyze (default: current directory)'), output_path: Optional[Path]=typer.Option(None, '--output', '-o', help='Write output to a file instead of stdout.'), copy: bool=typer.Option(False, '--copy', '-c', help='Copy output to clipboard after a successful run.')) -> None",
9833
+ "source": "docstring",
9834
+ "importance": "high",
9835
+ "workspace": null
9836
+ },
9716
9837
  {
9717
9838
  "symbol": "version_cmd",
9718
9839
  "kind": "function",