sourcecode 1.31.16__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.17/.sourcecode-cache/snapshot-bc358fa-06d2f793.json +129 -0
  3. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-0bed428d.json +406 -0
  4. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-1457dd37.json +129 -0
  5. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-1da953a8.json +122 -0
  6. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-218f2312.json +570 -0
  7. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-2ab2bdd3.json +390 -0
  8. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-3077fe4e.json +4012 -0
  9. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-30daccea.json +266 -0
  10. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-542cb39a.json +244 -0
  11. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-6d9137f2.json +351 -0
  12. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-72866fd0.json +570 -0
  13. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-8afce878.json +122 -0
  14. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-9d0d48c4.json +244 -0
  15. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-9d1f2878.json +406 -0
  16. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-a071a9df.json +266 -0
  17. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-a1077d85.json +390 -0
  18. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-a72aa41f.json +351 -0
  19. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-b9ee8ffa.json +4012 -0
  20. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-c5fc7db0.json +266 -0
  21. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-cf823b7a.json +266 -0
  22. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-d2d141a4.json +13534 -0
  23. sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-fc0985b2.json +13534 -0
  24. sourcecode-1.31.17/AUDIT_REAL_REPOS.md +539 -0
  25. {sourcecode-1.31.16 → sourcecode-1.31.17}/PKG-INFO +111 -40
  26. {sourcecode-1.31.16 → sourcecode-1.31.17}/README.md +110 -39
  27. {sourcecode-1.31.16 → sourcecode-1.31.17}/pyproject.toml +1 -1
  28. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/__init__.py +1 -1
  29. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/repository_ir.py +141 -1
  30. sourcecode-1.31.16/.continue-here.md +0 -108
  31. sourcecode-1.31.16/AUDIT_REAL_REPOS.md +0 -619
  32. {sourcecode-1.31.16 → sourcecode-1.31.17}/.agents/skills/source-command-gsd-join-discord/SKILL.md +0 -0
  33. {sourcecode-1.31.16 → sourcecode-1.31.17}/.agents/skills/source-command-gsd-review-backlog/SKILL.md +0 -0
  34. {sourcecode-1.31.16 → sourcecode-1.31.17}/.agents/skills/source-command-gsd-workstreams/SKILL.md +0 -0
  35. {sourcecode-1.31.16 → sourcecode-1.31.17}/.github/workflows/build-windows.yml +0 -0
  36. {sourcecode-1.31.16 → sourcecode-1.31.17}/.gitignore +0 -0
  37. {sourcecode-1.31.16 → sourcecode-1.31.17}/.ruff.toml +0 -0
  38. {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-3b5997a-fa5c742c.json +0 -0
  39. {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-07db8d0b.json +0 -0
  40. {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-178c65fa.json +0 -0
  41. {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-379aba51.json +0 -0
  42. {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-530bd9cf.json +0 -0
  43. {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-56888a2a.json +0 -0
  44. {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-5b602060.json +0 -0
  45. {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-5ea1c8f1.json +0 -0
  46. {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-6934996c.json +0 -0
  47. {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-7b6dd6cc.json +0 -0
  48. {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-8cb41bc4.json +0 -0
  49. {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-c9ab42a3.json +0 -0
  50. {sourcecode-1.31.16 → sourcecode-1.31.17}/CHANGELOG.md +0 -0
  51. {sourcecode-1.31.16 → sourcecode-1.31.17}/CONTRIBUTING.md +0 -0
  52. {sourcecode-1.31.16 → sourcecode-1.31.17}/LICENSE +0 -0
  53. {sourcecode-1.31.16 → sourcecode-1.31.17}/SECURITY.md +0 -0
  54. {sourcecode-1.31.16 → sourcecode-1.31.17}/docs/PRODUCT_TIERS.md +0 -0
  55. {sourcecode-1.31.16 → sourcecode-1.31.17}/docs/privacy.md +0 -0
  56. {sourcecode-1.31.16 → sourcecode-1.31.17}/docs/schema.md +0 -0
  57. {sourcecode-1.31.16 → sourcecode-1.31.17}/raw +0 -0
  58. {sourcecode-1.31.16 → sourcecode-1.31.17}/run_cli.py +0 -0
  59. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/adaptive_scanner.py +0 -0
  60. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/architecture_analyzer.py +0 -0
  61. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/architecture_summary.py +0 -0
  62. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/ast_extractor.py +0 -0
  63. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/canonical_ir.py +0 -0
  64. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/classifier.py +0 -0
  65. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/cli.py +0 -0
  66. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/code_notes_analyzer.py +0 -0
  67. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/confidence_analyzer.py +0 -0
  68. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/context_scorer.py +0 -0
  69. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/context_summarizer.py +0 -0
  70. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/contract_model.py +0 -0
  71. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/contract_pipeline.py +0 -0
  72. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/coverage_parser.py +0 -0
  73. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/dependency_analyzer.py +0 -0
  74. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/__init__.py +0 -0
  75. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/base.py +0 -0
  76. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/csproj_parser.py +0 -0
  77. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/dart.py +0 -0
  78. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/dotnet.py +0 -0
  79. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/elixir.py +0 -0
  80. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/go.py +0 -0
  81. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/heuristic.py +0 -0
  82. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/hybrid.py +0 -0
  83. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/java.py +0 -0
  84. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/jvm_ext.py +0 -0
  85. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/nodejs.py +0 -0
  86. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/parsers.py +0 -0
  87. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/php.py +0 -0
  88. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/project.py +0 -0
  89. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/python.py +0 -0
  90. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/ruby.py +0 -0
  91. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/rust.py +0 -0
  92. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/systems.py +0 -0
  93. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/terraform.py +0 -0
  94. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/tooling.py +0 -0
  95. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/doc_analyzer.py +0 -0
  96. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/entrypoint_classifier.py +0 -0
  97. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/env_analyzer.py +0 -0
  98. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/file_classifier.py +0 -0
  99. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/flow_analyzer.py +0 -0
  100. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/git_analyzer.py +0 -0
  101. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/graph_analyzer.py +0 -0
  102. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/__init__.py +0 -0
  103. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  104. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  105. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  106. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  107. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  108. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/runner.py +0 -0
  109. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/server.py +0 -0
  110. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/metrics_analyzer.py +0 -0
  111. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/output_budget.py +0 -0
  112. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/path_filters.py +0 -0
  113. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/pr_comment_renderer.py +0 -0
  114. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/prepare_context.py +0 -0
  115. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/progress.py +0 -0
  116. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/ranking_engine.py +0 -0
  117. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/redactor.py +0 -0
  118. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/relevance_scorer.py +0 -0
  119. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/repo_classifier.py +0 -0
  120. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/runtime_classifier.py +0 -0
  121. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/scanner.py +0 -0
  122. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/schema.py +0 -0
  123. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/semantic_analyzer.py +0 -0
  124. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/serializer.py +0 -0
  125. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/summarizer.py +0 -0
  126. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/telemetry/__init__.py +0 -0
  127. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/telemetry/config.py +0 -0
  128. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/telemetry/consent.py +0 -0
  129. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/telemetry/events.py +0 -0
  130. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/telemetry/filters.py +0 -0
  131. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/telemetry/transport.py +0 -0
  132. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/tree_utils.py +0 -0
  133. {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/workspace.py +0 -0
  134. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/__init__.py +0 -0
  135. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/conftest.py +0 -0
  136. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/coverage.xml +0 -0
  137. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/fastapi_app/pyproject.toml +0 -0
  138. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/fastapi_app/src/main.py +0 -0
  139. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/go_service/cmd/api/main.go +0 -0
  140. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/go_service/go.mod +0 -0
  141. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/jacoco.xml +0 -0
  142. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/latin1_sample.java +0 -0
  143. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/latin1_sample_iso.java +0 -0
  144. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/lcov.info +0 -0
  145. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/nextjs_app/app/page.tsx +0 -0
  146. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/nextjs_app/package.json +0 -0
  147. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/nextjs_app/pnpm-lock.yaml +0 -0
  148. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/apps/web/app/page.tsx +0 -0
  149. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/apps/web/package.json +0 -0
  150. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/packages/api/main.py +0 -0
  151. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/packages/api/pyproject.toml +0 -0
  152. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/pnpm-workspace.yaml +0 -0
  153. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/pom.xml +0 -0
  154. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/application/service/FindAusenteService.java +0 -0
  155. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/domain/entities/Ausente.java +0 -0
  156. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/infrastructure/rest/AusenteRestController.java +0 -0
  157. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/application/service/FindAutocoberturasService.java +0 -0
  158. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/domain/entities/Autocoberturas.java +0 -0
  159. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/infrastructure/rest/AutocoberturasRestController.java +0 -0
  160. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/application/service/FindCalendarioTrabajadorService.java +0 -0
  161. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/domain/entities/CalendarioTrabajador.java +0 -0
  162. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/infrastructure/rest/CalendarioTrabajadorRestController.java +0 -0
  163. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/application/service/FindDepartamentoService.java +0 -0
  164. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/domain/entities/Departamento.java +0 -0
  165. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/infrastructure/rest/DepartamentoRestController.java +0 -0
  166. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/application/service/FindEmpleadoService.java +0 -0
  167. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/domain/entities/Empleado.java +0 -0
  168. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/infrastructure/rest/EmpleadoRestController.java +0 -0
  169. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/DemoApplication.java +0 -0
  170. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/config/FilterConfig.java +0 -0
  171. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/domain/Health.java +0 -0
  172. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/mapper/HealthMapper.java +0 -0
  173. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/repository/HealthRepository.java +0 -0
  174. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/service/HealthService.java +0 -0
  175. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/HealthRestController.java +0 -0
  176. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/NominaRestController.java +0 -0
  177. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/resources/application-dev.yml +0 -0
  178. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/resources/application.yml +0 -0
  179. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/resources/mapper/HealthMapper.xml +0 -0
  180. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_architecture_analyzer.py +0 -0
  181. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_architecture_summary.py +0 -0
  182. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_ast_extractor.py +0 -0
  183. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_audit_fixes.py +0 -0
  184. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_audit_sas_v2.py +0 -0
  185. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_block1_reliability.py +0 -0
  186. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_block2_coverage.py +0 -0
  187. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_block5_quality.py +0 -0
  188. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_broadleaf_fixes.py +0 -0
  189. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_bug_fixes_v1302.py +0 -0
  190. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_bug_fixes_v13115.py +0 -0
  191. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_bug_fixes_v1312.py +0 -0
  192. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_bug_fixes_v1313.py +0 -0
  193. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_bug_fixes_v16.py +0 -0
  194. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_bug_fixes_v2.py +0 -0
  195. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_canonical_ir.py +0 -0
  196. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_classifier.py +0 -0
  197. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_cli.py +0 -0
  198. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_code_notes_analyzer.py +0 -0
  199. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_context_scorer.py +0 -0
  200. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_contract_pipeline.py +0 -0
  201. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_coverage_parser.py +0 -0
  202. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_cross_consistency.py +0 -0
  203. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_dependency_analyzer_node_python.py +0 -0
  204. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_dependency_analyzer_polyglot.py +0 -0
  205. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_dependency_schema.py +0 -0
  206. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detector_dotnet.py +0 -0
  207. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detector_go_rust_java.py +0 -0
  208. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detector_nodejs.py +0 -0
  209. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detector_php_ruby_dart.py +0 -0
  210. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detector_python.py +0 -0
  211. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detector_universal_managed.py +0 -0
  212. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detector_universal_systems.py +0 -0
  213. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detectors_base.py +0 -0
  214. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_doc_analyzer_jsdom.py +0 -0
  215. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_doc_analyzer_python.py +0 -0
  216. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_encoding_regression.py +0 -0
  217. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_enterprise_benchmarks.py +0 -0
  218. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_graph_analyzer_polyglot.py +0 -0
  219. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_graph_analyzer_python_node.py +0 -0
  220. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_graph_schema.py +0 -0
  221. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_hybrid_inference.py +0 -0
  222. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration.py +0 -0
  223. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_dependencies.py +0 -0
  224. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_detection.py +0 -0
  225. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_docs.py +0 -0
  226. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_graph_modules.py +0 -0
  227. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_lqn.py +0 -0
  228. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_metrics.py +0 -0
  229. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_multistack.py +0 -0
  230. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_semantics.py +0 -0
  231. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_universal.py +0 -0
  232. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_java_spring_integration.py +0 -0
  233. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_mcp_runner.py +0 -0
  234. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_mcp_serve.py +0 -0
  235. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_mcp_tools.py +0 -0
  236. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_metrics_analyzer.py +0 -0
  237. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_output_ux.py +0 -0
  238. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_packaging.py +0 -0
  239. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_phase1_improvements.py +0 -0
  240. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_pipeline_integrity.py +0 -0
  241. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_real_projects.py +0 -0
  242. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_redactor.py +0 -0
  243. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_repository_ir.py +0 -0
  244. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_scanner.py +0 -0
  245. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_schema.py +0 -0
  246. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_schema_normalization.py +0 -0
  247. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_scoring_calibration.py +0 -0
  248. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_semantic_analyzer_node.py +0 -0
  249. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_semantic_analyzer_python.py +0 -0
  250. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_semantic_import_resolution.py +0 -0
  251. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_semantic_schema.py +0 -0
  252. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_signal_hierarchy.py +0 -0
  253. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_summarizer.py +0 -0
  254. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_surface_honesty.py +0 -0
  255. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_task_differentiation.py +0 -0
  256. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_telemetry.py +0 -0
  257. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_v131_improvements.py +0 -0
  258. {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_v1_10_regressions.py +0 -0
  259. {sourcecode-1.31.16 → 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)*
@@ -0,0 +1,129 @@
1
+ {
2
+ "schema_version": "1.0",
3
+ "mode": "contract",
4
+ "project": {
5
+ "type": "cli",
6
+ "stack": "python",
7
+ "frameworks": [
8
+ "Typer"
9
+ ],
10
+ "entry_points": [
11
+ "src/sourcecode/cli.py"
12
+ ],
13
+ "summary": "CLI: Deterministic codebase context for AI coding agents. Stack: Python (Typer)."
14
+ },
15
+ "stacks": [
16
+ {
17
+ "stack": "python",
18
+ "detection_method": "manifest",
19
+ "confidence": "high",
20
+ "frameworks": [
21
+ {
22
+ "name": "Typer",
23
+ "source": "manifest",
24
+ "confidence": "high",
25
+ "detected_via": [
26
+ "manifest:manifest",
27
+ "import typer (src/sourcecode/cli.py)"
28
+ ],
29
+ "version": null
30
+ }
31
+ ],
32
+ "package_manager": "pip",
33
+ "manifests": [
34
+ "pyproject.toml"
35
+ ],
36
+ "primary": true,
37
+ "root": ".",
38
+ "workspace": null,
39
+ "signals": [
40
+ "manifest:pyproject.toml",
41
+ "framework:Typer",
42
+ "package_manager:pip",
43
+ "entry:src/sourcecode/cli.py",
44
+ "entry:run_cli.py",
45
+ "extensions:160"
46
+ ],
47
+ "produced_by": "python",
48
+ "language_version": null,
49
+ "packaging": null,
50
+ "app_server_hint": null,
51
+ "spring_profiles": [],
52
+ "transactional_classes": []
53
+ }
54
+ ],
55
+ "contracts": [
56
+ {
57
+ "path": "tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/service/HealthService.java",
58
+ "language": "java",
59
+ "exports": [
60
+ {
61
+ "kind": "class",
62
+ "name": "HealthService",
63
+ "annotations": [
64
+ "@Service",
65
+ "@Transactional"
66
+ ]
67
+ },
68
+ {
69
+ "kind": "method",
70
+ "name": "check",
71
+ "signature": "public String check("
72
+ }
73
+ ],
74
+ "imports": [
75
+ "org.springframework.stereotype.Service",
76
+ "org.springframework.transaction.annotation.Transactional"
77
+ ]
78
+ }
79
+ ],
80
+ "contracts_meta": {
81
+ "total": 1,
82
+ "shown": 1,
83
+ "truncated": false
84
+ },
85
+ "summary": {
86
+ "files": 1,
87
+ "total": 162,
88
+ "methods": {
89
+ "ast": 160,
90
+ "heuristic": 2
91
+ }
92
+ },
93
+ "symbol_query": {
94
+ "symbol": "HealthService",
95
+ "definers_found": 1,
96
+ "importers_found": 0,
97
+ "importers_returned": 0,
98
+ "references_found": 0,
99
+ "total_returned": 1,
100
+ "truncated": false
101
+ },
102
+ "confidence": {
103
+ "overall": "high",
104
+ "stack": "high",
105
+ "entry_points": "high"
106
+ },
107
+ "analysis_gaps": [
108
+ {
109
+ "area": "dependencies",
110
+ "reason": "Dependencies not analyzed — use the full analyze command with dependency flags for complete context",
111
+ "impact": "medium"
112
+ },
113
+ {
114
+ "area": "env",
115
+ "reason": "Environment variables not analyzed — run with --env-map for operational context",
116
+ "impact": "low"
117
+ },
118
+ {
119
+ "area": "documentation",
120
+ "reason": "No Architecture Decision Records (ADRs) detected — missing docs/ or adr/ directory",
121
+ "impact": "low"
122
+ },
123
+ {
124
+ "area": "api_contract",
125
+ "reason": "No OpenAPI/Swagger contract detected — agents cannot auto-discover API surface without it",
126
+ "impact": "medium"
127
+ }
128
+ ]
129
+ }
@@ -0,0 +1,406 @@
1
+ {
2
+ "schema_version": "1.0",
3
+ "mode": "contract",
4
+ "project": {
5
+ "type": "cli",
6
+ "stack": "python",
7
+ "frameworks": [
8
+ "Typer"
9
+ ],
10
+ "entry_points": [
11
+ "src/sourcecode/cli.py"
12
+ ],
13
+ "summary": "CLI: Deterministic codebase context for AI coding agents. Stack: Python (Typer)."
14
+ },
15
+ "stacks": [
16
+ {
17
+ "stack": "python",
18
+ "detection_method": "manifest",
19
+ "confidence": "high",
20
+ "frameworks": [
21
+ {
22
+ "name": "Typer",
23
+ "source": "manifest",
24
+ "confidence": "high",
25
+ "detected_via": [
26
+ "manifest:manifest",
27
+ "import typer (src/sourcecode/cli.py)"
28
+ ],
29
+ "version": null
30
+ }
31
+ ],
32
+ "package_manager": "pip",
33
+ "manifests": [
34
+ "pyproject.toml"
35
+ ],
36
+ "primary": true,
37
+ "root": ".",
38
+ "workspace": null,
39
+ "signals": [
40
+ "manifest:pyproject.toml",
41
+ "framework:Typer",
42
+ "package_manager:pip",
43
+ "entry:src/sourcecode/cli.py",
44
+ "entry:run_cli.py",
45
+ "extensions:160"
46
+ ],
47
+ "produced_by": "python",
48
+ "language_version": null,
49
+ "packaging": null,
50
+ "app_server_hint": null,
51
+ "spring_profiles": [],
52
+ "transactional_classes": []
53
+ }
54
+ ],
55
+ "contracts": [
56
+ {
57
+ "path": "src/sourcecode/cli.py",
58
+ "role": "entrypoint",
59
+ "fn": [
60
+ "analyze_cmd(path: Path) -> None",
61
+ "config_cmd() -> None",
62
+ "endpoints_cmd(path: Path, output_path: Optional[Path], fo...",
63
+ "fix_bug_cmd(ctx: typer.Context, path: Path, symptom: Opti...",
64
+ "impact_cmd(target: str, path: Path, depth: int, output_pa..."
65
+ ],
66
+ "exports": [
67
+ "main",
68
+ "main_entry",
69
+ "mcp_init",
70
+ "mcp_remove",
71
+ "mcp_serve",
72
+ "mcp_status",
73
+ "modernize_cmd",
74
+ "onboard_cmd",
75
+ "prepare_context_cmd",
76
+ "repo_ir_cmd",
77
+ "review_pr_cmd",
78
+ "telemetry_disable",
79
+ "telemetry_enable",
80
+ "telemetry_status",
81
+ "version_callback",
82
+ "version_cmd"
83
+ ],
84
+ "deps": [
85
+ "sourcecode",
86
+ "typer"
87
+ ]
88
+ },
89
+ {
90
+ "path": "src/sourcecode/mcp/server.py",
91
+ "role": "entrypoint",
92
+ "fn": [
93
+ "config() -> dict",
94
+ "explain_context(repo_path: str) -> dict",
95
+ "fix_bug_context(repo_path: str, symptom: str) -> dict",
96
+ "generate_tests_context(repo_path: str, include_all: bool)...",
97
+ "get_agent_context(repo_path: str, git_context: bool) -> dict"
98
+ ],
99
+ "exports": [
100
+ "get_compact_context",
101
+ "get_delta",
102
+ "get_endpoints",
103
+ "get_impact_context",
104
+ "get_ir_summary",
105
+ "get_module_context",
106
+ "onboard_context",
107
+ "refactor_context",
108
+ "review_pr_context",
109
+ "telemetry",
110
+ "version"
111
+ ],
112
+ "deps": [
113
+ "mcp",
114
+ "sourcecode"
115
+ ]
116
+ },
117
+ {
118
+ "path": "src/sourcecode/canonical_ir.py",
119
+ "role": "util",
120
+ "fn": [
121
+ "build_canonical_ir(file_paths: list[str], root: Path, sin...",
122
+ "ir_dict_to_canonical(ir: dict, file_paths: Optional[list[...",
123
+ "project_blast_radius(cir: CanonicalRepositoryIR, target: ...",
124
+ "project_endpoint_surface(cir: CanonicalRepositoryIR) -> dict",
125
+ "project_route_surface(cir: CanonicalRepositoryIR) -> list..."
126
+ ],
127
+ "exports": [
128
+ {
129
+ "name": "CanonicalEndpoint",
130
+ "k": "class"
131
+ },
132
+ {
133
+ "name": "CanonicalRepositoryIR",
134
+ "k": "class"
135
+ },
136
+ {
137
+ "name": "CanonicalSecurity",
138
+ "k": "class"
139
+ },
140
+ "validate_canonical_ir"
141
+ ],
142
+ "deps": [
143
+ "sourcecode"
144
+ ]
145
+ },
146
+ {
147
+ "path": "src/sourcecode/context_scorer.py",
148
+ "role": "util",
149
+ "exports": [
150
+ {
151
+ "k": "class",
152
+ "names": [
153
+ "ContextScorer",
154
+ "NodeScore"
155
+ ]
156
+ }
157
+ ]
158
+ },
159
+ {
160
+ "path": "src/sourcecode/contract_model.py",
161
+ "role": "model",
162
+ "exports": [
163
+ {
164
+ "k": "class",
165
+ "names": [
166
+ "ContractSummary",
167
+ "ExportRecord",
168
+ "FileContract",
169
+ "FunctionSignature",
170
+ "ImportRecord",
171
+ "TypeDefinition",
172
+ "TypeField"
173
+ ]
174
+ }
175
+ ]
176
+ },
177
+ {
178
+ "path": "src/sourcecode/contract_pipeline.py",
179
+ "role": "util",
180
+ "fn": [
181
+ "build_dependency_graph(contracts: list[FileContract]) -> ..."
182
+ ],
183
+ "exports": [
184
+ {
185
+ "k": "class",
186
+ "names": [
187
+ "ContractPipeline"
188
+ ]
189
+ }
190
+ ],
191
+ "deps": [
192
+ "sourcecode"
193
+ ]
194
+ },
195
+ {
196
+ "path": "src/sourcecode/detectors/base.py",
197
+ "role": "util",
198
+ "exports": [
199
+ {
200
+ "k": "class",
201
+ "names": [
202
+ "AbstractDetector",
203
+ "DetectionContext"
204
+ ]
205
+ }
206
+ ],
207
+ "deps": [
208
+ "sourcecode"
209
+ ]
210
+ },
211
+ {
212
+ "path": "src/sourcecode/detectors/csproj_parser.py",
213
+ "role": "util",
214
+ "fn": [
215
+ "infer_architecture_pattern(projects: list[CsprojProject])...",
216
+ "parse_csproj(absolute_path: Path, relative_path: str) -> ..."
217
+ ],
218
+ "exports": [
219
+ {
220
+ "k": "class",
221
+ "names": [
222
+ "CsprojProject"
223
+ ]
224
+ }
225
+ ]
226
+ },
227
+ {
228
+ "path": "src/sourcecode/detectors/hybrid.py",
229
+ "role": "util",
230
+ "fn": [
231
+ "merge_framework_detections(manifest_detections: list[Fram...",
232
+ "scan_for_frameworks(root: Path, file_tree: dict[str, Any]..."
233
+ ],
234
+ "deps": [
235
+ "sourcecode"
236
+ ]
237
+ },
238
+ {
239
+ "path": "src/sourcecode/detectors/parsers.py",
240
+ "role": "util",
241
+ "fn": [
242
+ "find_declared_dependencies(raw: Any) -> list[str]",
243
+ "load_json_file(path: Path) -> Optional[dict[str, Any]]",
244
+ "load_toml_file(path: Path) -> Optional[dict[str, Any]]",
245
+ "read_text_lines(path: Path) -> list[str]",
246
+ "unique_strings(values: Iterable[str]) -> list[str]"
247
+ ]
248
+ },
249
+ {
250
+ "path": "src/sourcecode/detectors/tooling.py",
251
+ "role": "util",
252
+ "fn": [
253
+ "collect_tooling_signals(file_tree: dict[str, object]) -> ...",
254
+ "infer_package_manager(stack: str, file_tree: dict[str, ob..."
255
+ ],
256
+ "deps": [
257
+ "sourcecode"
258
+ ]
259
+ },
260
+ {
261
+ "path": "src/sourcecode/entrypoint_classifier.py",
262
+ "role": "util",
263
+ "fn": [
264
+ "classify_entry_point(ep: EntryPoint) -> Classification",
265
+ "is_production_entry_point(ep: EntryPoint) -> bool",
266
+ "normalize_entry_point(ep: EntryPoint) -> EntryPoint",
267
+ "runtime_relevance(ep: EntryPoint, classification: Classif..."
268
+ ],
269
+ "deps": [
270
+ "sourcecode"
271
+ ]
272
+ },
273
+ {
274
+ "path": "src/sourcecode/file_classifier.py",
275
+ "role": "util",
276
+ "exports": [
277
+ {
278
+ "k": "class",
279
+ "names": [
280
+ "FileClassification",
281
+ "FileClassifier"
282
+ ]
283
+ }
284
+ ],
285
+ "deps": [
286
+ "sourcecode"
287
+ ]
288
+ },
289
+ {
290
+ "path": "src/sourcecode/flow_analyzer.py",
291
+ "role": "util",
292
+ "fn": [
293
+ "analyze_behavioral_impact(changed_files: list[str], all_p...",
294
+ "analyze_execution_paths(changed_files: list[str], all_pat..."
295
+ ]
296
+ },
297
+ {
298
+ "path": "src/sourcecode/mcp/onboarding/applier.py",
299
+ "role": "util",
300
+ "fn": [
301
+ "apply_entry(config: dict) -> dict",
302
+ "is_installed(config: dict) -> bool",
303
+ "read_config(path: Path) -> dict",
304
+ "remove_entry(config: dict) -> dict",
305
+ "validate(path: Path) -> bool"
306
+ ],
307
+ "exports": [
308
+ "write_config"
309
+ ]
310
+ }
311
+ ],
312
+ "contracts_meta": {
313
+ "total": 15,
314
+ "shown": 15,
315
+ "truncated": false
316
+ },
317
+ "dependency_summary": {
318
+ "requested": true,
319
+ "total_count": 13,
320
+ "direct_count": 13,
321
+ "transitive_count": 0,
322
+ "ecosystems": [
323
+ "python"
324
+ ],
325
+ "sources": [
326
+ "manifest"
327
+ ],
328
+ "limitations": []
329
+ },
330
+ "key_dependencies": [
331
+ {
332
+ "name": "mcp",
333
+ "ecosystem": "python",
334
+ "scope": "direct",
335
+ "declared_version": ">=1.0.0",
336
+ "source": "manifest",
337
+ "manifest_path": "pyproject.toml",
338
+ "role": "runtime"
339
+ },
340
+ {
341
+ "name": "typer",
342
+ "ecosystem": "python",
343
+ "scope": "direct",
344
+ "declared_version": ">=0.24",
345
+ "source": "manifest",
346
+ "manifest_path": "pyproject.toml",
347
+ "role": "runtime"
348
+ },
349
+ {
350
+ "name": "pathspec",
351
+ "ecosystem": "python",
352
+ "scope": "direct",
353
+ "declared_version": ">=1.0",
354
+ "source": "manifest",
355
+ "manifest_path": "pyproject.toml",
356
+ "role": "parsing"
357
+ },
358
+ {
359
+ "name": "ruamel.yaml",
360
+ "ecosystem": "python",
361
+ "scope": "direct",
362
+ "declared_version": ">=0.18",
363
+ "source": "manifest",
364
+ "manifest_path": "pyproject.toml",
365
+ "role": "serialization"
366
+ },
367
+ {
368
+ "name": "tomli",
369
+ "ecosystem": "python",
370
+ "scope": "direct",
371
+ "declared_version": ">=2.0",
372
+ "source": "manifest",
373
+ "manifest_path": "pyproject.toml",
374
+ "role": "serialization"
375
+ }
376
+ ],
377
+ "summary": {
378
+ "files": 15,
379
+ "total": 78,
380
+ "methods": {
381
+ "ast": 78
382
+ }
383
+ },
384
+ "confidence": {
385
+ "overall": "high",
386
+ "stack": "high",
387
+ "entry_points": "high"
388
+ },
389
+ "analysis_gaps": [
390
+ {
391
+ "area": "env",
392
+ "reason": "Environment variables not analyzed — run with --env-map for operational context",
393
+ "impact": "low"
394
+ },
395
+ {
396
+ "area": "documentation",
397
+ "reason": "No Architecture Decision Records (ADRs) detected — missing docs/ or adr/ directory",
398
+ "impact": "low"
399
+ },
400
+ {
401
+ "area": "api_contract",
402
+ "reason": "No OpenAPI/Swagger contract detected — agents cannot auto-discover API surface without it",
403
+ "impact": "medium"
404
+ }
405
+ ]
406
+ }