sourcecode 1.31.15__tar.gz → 1.31.17__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 (259) hide show
  1. sourcecode-1.31.17/.continue-here.md +145 -0
  2. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-07db8d0b.json → sourcecode-1.31.17/.sourcecode-cache/snapshot-88dc388-07db8d0b.json +1 -1
  3. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-178c65fa.json → sourcecode-1.31.17/.sourcecode-cache/snapshot-88dc388-178c65fa.json +70 -30
  4. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-530bd9cf.json → sourcecode-1.31.17/.sourcecode-cache/snapshot-88dc388-530bd9cf.json +6 -2
  5. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-56888a2a.json → sourcecode-1.31.17/.sourcecode-cache/snapshot-88dc388-56888a2a.json +5 -1
  6. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-5ea1c8f1.json → sourcecode-1.31.17/.sourcecode-cache/snapshot-88dc388-5ea1c8f1.json +6 -2
  7. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-7b6dd6cc.json → sourcecode-1.31.17/.sourcecode-cache/snapshot-88dc388-7b6dd6cc.json +6 -2
  8. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-8cb41bc4.json → sourcecode-1.31.17/.sourcecode-cache/snapshot-88dc388-8cb41bc4.json +1 -1
  9. sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-c9ab42a3.json → sourcecode-1.31.17/.sourcecode-cache/snapshot-88dc388-c9ab42a3.json +124 -3
  10. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-06d2f793.json +129 -0
  11. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-0bed428d.json +406 -0
  12. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-1457dd37.json +129 -0
  13. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-1da953a8.json +122 -0
  14. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-218f2312.json +570 -0
  15. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-2ab2bdd3.json +390 -0
  16. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-3077fe4e.json +4012 -0
  17. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-30daccea.json +266 -0
  18. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-542cb39a.json +244 -0
  19. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-6d9137f2.json +351 -0
  20. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-72866fd0.json +570 -0
  21. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-8afce878.json +122 -0
  22. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-9d0d48c4.json +244 -0
  23. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-9d1f2878.json +406 -0
  24. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-a071a9df.json +266 -0
  25. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-a1077d85.json +390 -0
  26. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-a72aa41f.json +351 -0
  27. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-b9ee8ffa.json +4012 -0
  28. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-c5fc7db0.json +266 -0
  29. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-cf823b7a.json +266 -0
  30. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-d2d141a4.json +13534 -0
  31. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-fc0985b2.json +13534 -0
  32. sourcecode-1.31.17/AUDIT_REAL_REPOS.md +539 -0
  33. {sourcecode-1.31.15 → sourcecode-1.31.17}/PKG-INFO +278 -208
  34. sourcecode-1.31.17/README.md +419 -0
  35. sourcecode-1.31.17/docs/PRODUCT_TIERS.md +112 -0
  36. {sourcecode-1.31.15 → sourcecode-1.31.17}/pyproject.toml +1 -1
  37. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/__init__.py +1 -1
  38. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/cli.py +395 -4
  39. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/prepare_context.py +8 -1
  40. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/repository_ir.py +398 -28
  41. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/serializer.py +14 -2
  42. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_enterprise_benchmarks.py +759 -0
  43. sourcecode-1.31.15/.continue-here.md +0 -180
  44. sourcecode-1.31.15/README.md +0 -349
  45. {sourcecode-1.31.15 → sourcecode-1.31.17}/.agents/skills/source-command-gsd-join-discord/SKILL.md +0 -0
  46. {sourcecode-1.31.15 → sourcecode-1.31.17}/.agents/skills/source-command-gsd-review-backlog/SKILL.md +0 -0
  47. {sourcecode-1.31.15 → sourcecode-1.31.17}/.agents/skills/source-command-gsd-workstreams/SKILL.md +0 -0
  48. {sourcecode-1.31.15 → sourcecode-1.31.17}/.github/workflows/build-windows.yml +0 -0
  49. {sourcecode-1.31.15 → sourcecode-1.31.17}/.gitignore +0 -0
  50. {sourcecode-1.31.15 → sourcecode-1.31.17}/.ruff.toml +0 -0
  51. {sourcecode-1.31.15 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-3b5997a-fa5c742c.json +0 -0
  52. /sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-379aba51.json → /sourcecode-1.31.17/.sourcecode-cache/snapshot-88dc388-379aba51.json +0 -0
  53. /sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-5b602060.json → /sourcecode-1.31.17/.sourcecode-cache/snapshot-88dc388-5b602060.json +0 -0
  54. /sourcecode-1.31.15/.sourcecode-cache/snapshot-02c714c-6934996c.json → /sourcecode-1.31.17/.sourcecode-cache/snapshot-88dc388-6934996c.json +0 -0
  55. {sourcecode-1.31.15 → sourcecode-1.31.17}/CHANGELOG.md +0 -0
  56. {sourcecode-1.31.15 → sourcecode-1.31.17}/CONTRIBUTING.md +0 -0
  57. {sourcecode-1.31.15 → sourcecode-1.31.17}/LICENSE +0 -0
  58. {sourcecode-1.31.15 → sourcecode-1.31.17}/SECURITY.md +0 -0
  59. {sourcecode-1.31.15 → sourcecode-1.31.17}/docs/privacy.md +0 -0
  60. {sourcecode-1.31.15 → sourcecode-1.31.17}/docs/schema.md +0 -0
  61. {sourcecode-1.31.15 → sourcecode-1.31.17}/raw +0 -0
  62. {sourcecode-1.31.15 → sourcecode-1.31.17}/run_cli.py +0 -0
  63. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/adaptive_scanner.py +0 -0
  64. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/architecture_analyzer.py +0 -0
  65. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/architecture_summary.py +0 -0
  66. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/ast_extractor.py +0 -0
  67. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/canonical_ir.py +0 -0
  68. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/classifier.py +0 -0
  69. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/code_notes_analyzer.py +0 -0
  70. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/confidence_analyzer.py +0 -0
  71. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/context_scorer.py +0 -0
  72. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/context_summarizer.py +0 -0
  73. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/contract_model.py +0 -0
  74. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/contract_pipeline.py +0 -0
  75. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/coverage_parser.py +0 -0
  76. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/dependency_analyzer.py +0 -0
  77. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/__init__.py +0 -0
  78. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/base.py +0 -0
  79. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/csproj_parser.py +0 -0
  80. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/dart.py +0 -0
  81. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/dotnet.py +0 -0
  82. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/elixir.py +0 -0
  83. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/go.py +0 -0
  84. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/heuristic.py +0 -0
  85. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/hybrid.py +0 -0
  86. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/java.py +0 -0
  87. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/jvm_ext.py +0 -0
  88. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/nodejs.py +0 -0
  89. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/parsers.py +0 -0
  90. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/php.py +0 -0
  91. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/project.py +0 -0
  92. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/python.py +0 -0
  93. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/ruby.py +0 -0
  94. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/rust.py +0 -0
  95. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/systems.py +0 -0
  96. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/terraform.py +0 -0
  97. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/detectors/tooling.py +0 -0
  98. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/doc_analyzer.py +0 -0
  99. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/entrypoint_classifier.py +0 -0
  100. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/env_analyzer.py +0 -0
  101. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/file_classifier.py +0 -0
  102. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/flow_analyzer.py +0 -0
  103. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/git_analyzer.py +0 -0
  104. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/graph_analyzer.py +0 -0
  105. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/mcp/__init__.py +0 -0
  106. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  107. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  108. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  109. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  110. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  111. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/mcp/runner.py +0 -0
  112. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/mcp/server.py +0 -0
  113. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/metrics_analyzer.py +0 -0
  114. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/output_budget.py +0 -0
  115. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/path_filters.py +0 -0
  116. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/pr_comment_renderer.py +0 -0
  117. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/progress.py +0 -0
  118. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/ranking_engine.py +0 -0
  119. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/redactor.py +0 -0
  120. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/relevance_scorer.py +0 -0
  121. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/repo_classifier.py +0 -0
  122. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/runtime_classifier.py +0 -0
  123. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/scanner.py +0 -0
  124. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/schema.py +0 -0
  125. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/semantic_analyzer.py +0 -0
  126. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/summarizer.py +0 -0
  127. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/telemetry/__init__.py +0 -0
  128. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/telemetry/config.py +0 -0
  129. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/telemetry/consent.py +0 -0
  130. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/telemetry/events.py +0 -0
  131. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/telemetry/filters.py +0 -0
  132. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/telemetry/transport.py +0 -0
  133. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/tree_utils.py +0 -0
  134. {sourcecode-1.31.15 → sourcecode-1.31.17}/src/sourcecode/workspace.py +0 -0
  135. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/__init__.py +0 -0
  136. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/conftest.py +0 -0
  137. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/coverage.xml +0 -0
  138. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/fastapi_app/pyproject.toml +0 -0
  139. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/fastapi_app/src/main.py +0 -0
  140. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/go_service/cmd/api/main.go +0 -0
  141. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/go_service/go.mod +0 -0
  142. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/jacoco.xml +0 -0
  143. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/latin1_sample.java +0 -0
  144. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/latin1_sample_iso.java +0 -0
  145. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/lcov.info +0 -0
  146. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/nextjs_app/app/page.tsx +0 -0
  147. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/nextjs_app/package.json +0 -0
  148. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/nextjs_app/pnpm-lock.yaml +0 -0
  149. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/apps/web/app/page.tsx +0 -0
  150. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/apps/web/package.json +0 -0
  151. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/packages/api/main.py +0 -0
  152. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/packages/api/pyproject.toml +0 -0
  153. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/pnpm-workspace.yaml +0 -0
  154. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/pom.xml +0 -0
  155. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/application/service/FindAusenteService.java +0 -0
  156. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/domain/entities/Ausente.java +0 -0
  157. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/infrastructure/rest/AusenteRestController.java +0 -0
  158. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/application/service/FindAutocoberturasService.java +0 -0
  159. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/domain/entities/Autocoberturas.java +0 -0
  160. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/infrastructure/rest/AutocoberturasRestController.java +0 -0
  161. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/application/service/FindCalendarioTrabajadorService.java +0 -0
  162. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/domain/entities/CalendarioTrabajador.java +0 -0
  163. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/infrastructure/rest/CalendarioTrabajadorRestController.java +0 -0
  164. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/application/service/FindDepartamentoService.java +0 -0
  165. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/domain/entities/Departamento.java +0 -0
  166. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/infrastructure/rest/DepartamentoRestController.java +0 -0
  167. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/application/service/FindEmpleadoService.java +0 -0
  168. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/domain/entities/Empleado.java +0 -0
  169. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/infrastructure/rest/EmpleadoRestController.java +0 -0
  170. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/DemoApplication.java +0 -0
  171. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/config/FilterConfig.java +0 -0
  172. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/domain/Health.java +0 -0
  173. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/mapper/HealthMapper.java +0 -0
  174. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/repository/HealthRepository.java +0 -0
  175. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/service/HealthService.java +0 -0
  176. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/HealthRestController.java +0 -0
  177. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/NominaRestController.java +0 -0
  178. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/resources/application-dev.yml +0 -0
  179. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/resources/application.yml +0 -0
  180. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/resources/mapper/HealthMapper.xml +0 -0
  181. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_architecture_analyzer.py +0 -0
  182. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_architecture_summary.py +0 -0
  183. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_ast_extractor.py +0 -0
  184. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_audit_fixes.py +0 -0
  185. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_audit_sas_v2.py +0 -0
  186. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_block1_reliability.py +0 -0
  187. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_block2_coverage.py +0 -0
  188. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_block5_quality.py +0 -0
  189. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_broadleaf_fixes.py +0 -0
  190. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_bug_fixes_v1302.py +0 -0
  191. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_bug_fixes_v13115.py +0 -0
  192. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_bug_fixes_v1312.py +0 -0
  193. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_bug_fixes_v1313.py +0 -0
  194. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_bug_fixes_v16.py +0 -0
  195. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_bug_fixes_v2.py +0 -0
  196. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_canonical_ir.py +0 -0
  197. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_classifier.py +0 -0
  198. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_cli.py +0 -0
  199. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_code_notes_analyzer.py +0 -0
  200. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_context_scorer.py +0 -0
  201. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_contract_pipeline.py +0 -0
  202. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_coverage_parser.py +0 -0
  203. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_cross_consistency.py +0 -0
  204. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_dependency_analyzer_node_python.py +0 -0
  205. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_dependency_analyzer_polyglot.py +0 -0
  206. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_dependency_schema.py +0 -0
  207. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_detector_dotnet.py +0 -0
  208. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_detector_go_rust_java.py +0 -0
  209. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_detector_nodejs.py +0 -0
  210. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_detector_php_ruby_dart.py +0 -0
  211. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_detector_python.py +0 -0
  212. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_detector_universal_managed.py +0 -0
  213. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_detector_universal_systems.py +0 -0
  214. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_detectors_base.py +0 -0
  215. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_doc_analyzer_jsdom.py +0 -0
  216. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_doc_analyzer_python.py +0 -0
  217. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_encoding_regression.py +0 -0
  218. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_graph_analyzer_polyglot.py +0 -0
  219. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_graph_analyzer_python_node.py +0 -0
  220. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_graph_schema.py +0 -0
  221. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_hybrid_inference.py +0 -0
  222. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_integration.py +0 -0
  223. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_integration_dependencies.py +0 -0
  224. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_integration_detection.py +0 -0
  225. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_integration_docs.py +0 -0
  226. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_integration_graph_modules.py +0 -0
  227. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_integration_lqn.py +0 -0
  228. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_integration_metrics.py +0 -0
  229. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_integration_multistack.py +0 -0
  230. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_integration_semantics.py +0 -0
  231. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_integration_universal.py +0 -0
  232. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_java_spring_integration.py +0 -0
  233. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_mcp_runner.py +0 -0
  234. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_mcp_serve.py +0 -0
  235. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_mcp_tools.py +0 -0
  236. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_metrics_analyzer.py +0 -0
  237. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_output_ux.py +0 -0
  238. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_packaging.py +0 -0
  239. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_phase1_improvements.py +0 -0
  240. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_pipeline_integrity.py +0 -0
  241. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_real_projects.py +0 -0
  242. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_redactor.py +0 -0
  243. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_repository_ir.py +0 -0
  244. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_scanner.py +0 -0
  245. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_schema.py +0 -0
  246. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_schema_normalization.py +0 -0
  247. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_scoring_calibration.py +0 -0
  248. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_semantic_analyzer_node.py +0 -0
  249. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_semantic_analyzer_python.py +0 -0
  250. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_semantic_import_resolution.py +0 -0
  251. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_semantic_schema.py +0 -0
  252. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_signal_hierarchy.py +0 -0
  253. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_summarizer.py +0 -0
  254. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_surface_honesty.py +0 -0
  255. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_task_differentiation.py +0 -0
  256. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_telemetry.py +0 -0
  257. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_v131_improvements.py +0 -0
  258. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_v1_10_regressions.py +0 -0
  259. {sourcecode-1.31.15 → sourcecode-1.31.17}/tests/test_workspace_analyzer.py +0 -0
@@ -0,0 +1,145 @@
1
+ # Continue Here — atlas-cli sesión 20
2
+
3
+ **Paused:** 2026-05-24
4
+ **Repo:** `/Users/user/Documents/workspace/atlas-cli`
5
+ **Branch:** master
6
+ **Version audited:** sourcecode 1.31.16
7
+
8
+ ---
9
+
10
+ ## Objetivo de esta sesión
11
+
12
+ Auditoría adversarial REAL y profunda de `sourcecode` v1.31.16 contra repos enterprise Java reales.
13
+ Validar credibilidad post-fixes de sesiones anteriores. Encontrar nuevos bugs. Actualizar docs.
14
+
15
+ ---
16
+
17
+ ## Trabajo completado esta sesión (sin commitear)
18
+
19
+ ### `AUDIT_REAL_REPOS.md` — reescrito (22 secciones, auditoría completa)
20
+
21
+ Repos auditados:
22
+ - `~/Documents/workspace/keycloak` — 7,885 Java files, 18K+ commits, Quarkus/Jakarta EE
23
+ - `~/Documents/workspace/BroadleafCommerce` — 2,985 Java files, 18K+ commits, Spring Boot
24
+
25
+ Comandos probados: `--compact`, `--agent`, `--format yaml`, `endpoints`, `impact` (múltiples targets),
26
+ `onboard`, `fix-bug`, `modernize`, `review-pr`, `repo-ir --summary-only`, `repo-ir --max-nodes/edges`,
27
+ `prepare-context` vs aliases, cache cold/warm, error handling, flag consistency.
28
+
29
+ ### `README.md` — actualizado basado en evidencia real
30
+
31
+ - Benchmarks reales (no inventados): cold/cached times, token sizes medidos
32
+ - `repo-ir` size warning (nueva sección)
33
+ - `impact` best practices expandidas (interface vs impl explicit)
34
+ - `What sourcecode does NOT do` — honesto sobre filter security + impl classes + project_summary
35
+ - `How to use` sección completamente reescrita con patrones correctos
36
+
37
+ ---
38
+
39
+ ## Bugs encontrados esta sesión (v1.31.16)
40
+
41
+ ### P0 — Críticos
42
+
43
+ | # | Bug | Evidencia |
44
+ |---|-----|-----------|
45
+ | **P0-01** | `impact OrderServiceImpl` → `direct_callers:[], risk:low, confidence:HIGH` — WRONG | `OrderService` interface → 30 callers. Spring DI injects interface, not impl. Tool reports high-confidence garbage. |
46
+ | **P0-02** | `repo-ir --max-nodes 200 --max-edges 500` → 3.85MB / 987K tokens | `reverse_graph` (3MB) not bounded by flags. Only `graph.nodes/edges` bounded. |
47
+
48
+ ### P1 — Altos
49
+
50
+ | # | Bug | Fix direction |
51
+ |---|-----|---------------|
52
+ | P1-01 | Risk score inconsistente: `OrderServiceImpl`→low vs `OrderDaoImpl`→high (mismo 0 callers, distinta heurística) | Cuando `direct_callers=0` y clase es `@Service`/`@Repository` impl: bajar confidence, añadir gap |
53
+ | P1-02 | `project_summary` = primera línea del README (license/marketing, no arquitectura) | Generar de código: "N-module Spring Boot — M classes, K endpoints, J txn boundaries" |
54
+ | P1-03 | `fix-bug` devuelve 426 archivos para NPE genérico (14% de todo el repo, sin score field) | Cap en 20 archivos cuando symptom tiene baja especificidad. Añadir `score` field. |
55
+ | P1-04 | `indirect_callers:0` para KeycloakSession con 1992 direct callers — BFS para en nivel 1 | BFS muestreado para targets muy grandes, o documentar el comportamiento |
56
+ | P1-05 | fix-bug 23s cold en Keycloak — demasiado lento para CI | Profiling needed |
57
+
58
+ ### P2 — Medios
59
+
60
+ - `bounded_contexts: ["dto","file"]` Broadleaf, `["keycloak"]` Keycloak — ambos WRONG. Fix: usar Maven module names.
61
+ - `role: unknown` para todos los `high_coupling_nodes` en modernize — nunca clasifica annotation/interface/entity
62
+ - `no_security_signal: 100%` en ambos repos — ambos usan filter-based security; métrica siempre vacía para el patrón enterprise más común
63
+ - JAX-RS sub-resource paths no compuestos con parent `@Path` → paths incompletos
64
+ - `hotspot_candidates: []` siempre — 18K commits ignorados; git churn no usado
65
+ - `--format`/`--no-cache` ausentes en `impact`, `endpoints`, `fix-bug`, `onboard`, `modernize`, `review-pr`
66
+ - Architecture confidence diferente entre `--compact` y `--agent` mismo repo
67
+ - `entry_points.controllers.methods: 21` vs `endpoints` finding 130 — discrepancia inexplicada
68
+
69
+ ---
70
+
71
+ ## Estado actual archivos
72
+
73
+ ```
74
+ M README.md — benchmarks reales, limitaciones honestas
75
+ ?? AUDIT_REAL_REPOS.md — auditoría 22 secciones (NUEVA, reemplaza anterior)
76
+ ?? docs/PRODUCT_TIERS.md — de sesión anterior (sin tocar esta sesión)
77
+ ?? .sourcecode-cache/ — cache artifacts (ignorar)
78
+ ```
79
+
80
+ **No hay cambios en código fuente esta sesión** — auditoría pura.
81
+
82
+ ---
83
+
84
+ ## Contexto de versión: qué estaba ya fixeado
85
+
86
+ Los bugs de sesiones 18-19 (BUG-01 a BUG-07 del `.continue-here.md` anterior)
87
+ fueron fixeados en commit `308f2f0` ("fix(impact,serializer,prepare_context): fix all 7 audit bugs").
88
+
89
+ Los P0/P1/P2 listados arriba son **nuevos**, encontrados en v1.31.16 post-fix.
90
+
91
+ ---
92
+
93
+ ## Primera acción al retomar
94
+
95
+ ```bash
96
+ cd /Users/user/Documents/workspace/atlas-cli
97
+
98
+ # 1. Commitear docs de esta sesión
99
+ git add README.md AUDIT_REAL_REPOS.md
100
+ git commit -m "docs(audit,readme): P1.5 adversarial audit v1.31.16 — real benchmarks, P0/P1 bugs, honest limitations"
101
+
102
+ # 2. Fix P0-01 — mayor ROI de credibilidad
103
+ # En repository_ir.py → compute_blast_radius (o equivalente):
104
+ # Cuando target es @Service/@Repository impl con 0 direct_callers:
105
+ # a) Detectar interfaces que implementa
106
+ # b) Run impact en las interfaces, merge resultados
107
+ # c) O mínimo: emitir warning en 'explanation' con nombre de interface y su caller count
108
+ # Verificar con:
109
+ sourcecode impact OrderServiceImpl ~/Documents/workspace/BroadleafCommerce
110
+ # Esperado: warning o callers via OrderService interface
111
+
112
+ # 3. Fix P0-02 — reverse_graph unbounded
113
+ # repo-ir: cuando --max-nodes N dado, limitar reverse_graph a N hubs también
114
+ # O añadir flag --max-reverse-hubs N
115
+ # Verificar con:
116
+ sourcecode repo-ir ~/Documents/workspace/BroadleafCommerce --max-nodes 200 --max-edges 500 | wc -c
117
+ # Esperado: <500KB (no 4MB)
118
+ ```
119
+
120
+ ## Próximas acciones por ROI
121
+
122
+ 1. **P0-01** — impl → interface caller resolution (1-2h) → core claim becomes defensible
123
+ 2. **P0-02** — reverse_graph size control (30min) → LLM safety
124
+ 3. **P1-01** — risk score consistency for 0-caller impls (30min) → credibility
125
+ 4. **P1-02** — project_summary generation from code (1h) → first impression
126
+ 5. **P1-03** — fix-bug file cap + score field (30min) → LLM readiness
127
+ 6. **P2 batch** — bounded_contexts, security_model, role detection (2h)
128
+
129
+ ---
130
+
131
+ ## Archivos clave del codebase
132
+
133
+ ```
134
+ src/sourcecode/
135
+ cli.py — top-level commands + subcommands
136
+ repository_ir.py — impact analysis + graph traversal (fix P0-01 aquí)
137
+ prepare_context.py — fix-bug, onboard, review-pr output generation
138
+ serializer.py — compact/agent output serialization
139
+ tests/
140
+ test_enterprise_benchmarks.py
141
+ ```
142
+
143
+ ---
144
+
145
+ *Pausado 2026-05-24 — gsd:pause-work (sesión 20)*
@@ -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",