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.
- sourcecode-1.31.17/.continue-here.md +145 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-06d2f793.json +129 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-0bed428d.json +406 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-1457dd37.json +129 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-1da953a8.json +122 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-218f2312.json +570 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-2ab2bdd3.json +390 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-3077fe4e.json +4012 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-30daccea.json +266 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-542cb39a.json +244 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-6d9137f2.json +351 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-72866fd0.json +570 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-8afce878.json +122 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-9d0d48c4.json +244 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-9d1f2878.json +406 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-a071a9df.json +266 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-a1077d85.json +390 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-a72aa41f.json +351 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-b9ee8ffa.json +4012 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-c5fc7db0.json +266 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-cf823b7a.json +266 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-d2d141a4.json +13534 -0
- sourcecode-1.31.17/.sourcecode-cache/snapshot-bc358fa-fc0985b2.json +13534 -0
- sourcecode-1.31.17/AUDIT_REAL_REPOS.md +539 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/PKG-INFO +111 -40
- {sourcecode-1.31.16 → sourcecode-1.31.17}/README.md +110 -39
- {sourcecode-1.31.16 → sourcecode-1.31.17}/pyproject.toml +1 -1
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/__init__.py +1 -1
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/repository_ir.py +141 -1
- sourcecode-1.31.16/.continue-here.md +0 -108
- sourcecode-1.31.16/AUDIT_REAL_REPOS.md +0 -619
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.agents/skills/source-command-gsd-join-discord/SKILL.md +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.agents/skills/source-command-gsd-review-backlog/SKILL.md +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.agents/skills/source-command-gsd-workstreams/SKILL.md +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.gitignore +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.ruff.toml +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-3b5997a-fa5c742c.json +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-07db8d0b.json +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-178c65fa.json +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-379aba51.json +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-530bd9cf.json +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-56888a2a.json +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-5b602060.json +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-5ea1c8f1.json +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-6934996c.json +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-7b6dd6cc.json +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-8cb41bc4.json +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/.sourcecode-cache/snapshot-88dc388-c9ab42a3.json +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/CHANGELOG.md +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/CONTRIBUTING.md +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/LICENSE +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/SECURITY.md +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/docs/privacy.md +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/docs/schema.md +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/raw +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/run_cli.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/classifier.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/cli.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/flow_analyzer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/progress.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/redactor.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/scanner.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/schema.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/serializer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/src/sourcecode/workspace.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/__init__.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/conftest.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/coverage.xml +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/fastapi_app/pyproject.toml +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/fastapi_app/src/main.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/go_service/cmd/api/main.go +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/go_service/go.mod +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/jacoco.xml +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/latin1_sample.java +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/latin1_sample_iso.java +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/lcov.info +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/nextjs_app/app/page.tsx +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/nextjs_app/package.json +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/nextjs_app/pnpm-lock.yaml +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/apps/web/app/page.tsx +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/apps/web/package.json +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/packages/api/main.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/packages/api/pyproject.toml +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/pnpm_monorepo/pnpm-workspace.yaml +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/pom.xml +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/DemoApplication.java +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/config/FilterConfig.java +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/domain/Health.java +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/mapper/HealthMapper.java +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/repository/HealthRepository.java +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/service/HealthService.java +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/HealthRestController.java +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/NominaRestController.java +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/resources/application-dev.yml +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/resources/application.yml +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/fixtures/spring_boot_minimal/src/main/resources/mapper/HealthMapper.xml +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_architecture_analyzer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_architecture_summary.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_ast_extractor.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_audit_fixes.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_audit_sas_v2.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_block1_reliability.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_block2_coverage.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_block5_quality.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_broadleaf_fixes.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_bug_fixes_v1302.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_bug_fixes_v13115.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_bug_fixes_v1312.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_bug_fixes_v1313.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_bug_fixes_v16.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_bug_fixes_v2.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_canonical_ir.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_classifier.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_cli.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_code_notes_analyzer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_context_scorer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_contract_pipeline.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_coverage_parser.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_cross_consistency.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_dependency_analyzer_node_python.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_dependency_analyzer_polyglot.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_dependency_schema.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detector_dotnet.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detector_go_rust_java.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detector_nodejs.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detector_php_ruby_dart.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detector_python.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detector_universal_managed.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detector_universal_systems.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_detectors_base.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_doc_analyzer_jsdom.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_doc_analyzer_python.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_encoding_regression.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_enterprise_benchmarks.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_graph_analyzer_polyglot.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_graph_analyzer_python_node.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_graph_schema.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_hybrid_inference.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_dependencies.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_detection.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_docs.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_graph_modules.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_lqn.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_metrics.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_multistack.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_semantics.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_integration_universal.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_java_spring_integration.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_mcp_runner.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_mcp_serve.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_mcp_tools.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_metrics_analyzer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_output_ux.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_packaging.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_phase1_improvements.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_pipeline_integrity.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_real_projects.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_redactor.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_repository_ir.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_scanner.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_schema.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_schema_normalization.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_scoring_calibration.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_semantic_analyzer_node.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_semantic_analyzer_python.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_semantic_import_resolution.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_semantic_schema.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_signal_hierarchy.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_summarizer.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_surface_honesty.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_task_differentiation.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_telemetry.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_v131_improvements.py +0 -0
- {sourcecode-1.31.16 → sourcecode-1.31.17}/tests/test_v1_10_regressions.py +0 -0
- {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
|
+
}
|