sourcecode 5.5.0__tar.gz → 5.5.1__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-5.5.0 → sourcecode-5.5.1}/CHANGELOG.md +20 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/PKG-INFO +3 -3
- {sourcecode-5.5.0 → sourcecode-5.5.1}/README.md +2 -2
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/USER_GUIDE.md +1 -1
- {sourcecode-5.5.0 → sourcecode-5.5.1}/pyproject.toml +1 -1
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/cli.py +51 -6
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/reference_facts.py +13 -1
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/release_info.py +1 -1
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/repository_ir.py +49 -10
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/validation_surface.py +7 -11
- {sourcecode-5.5.0 → sourcecode-5.5.1}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/.gitignore +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/.ruff.toml +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/CLAUDE.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/CONTRIBUTING.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/LICENSE +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/SECURITY.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/CACHE.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/DEFECT-LEDGER.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/DEVELOPMENT-ROADMAP.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/EXECUTIVE-ROADMAP.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/MANUAL-USUARIO.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/overview.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/contracts.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/licensing-schema.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/migrate-check.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/README.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/posture.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/privacy.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/schema.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/raw +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/scripts/perf_gate.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/scripts/perf_harness.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/audit_report.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/cache.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/cache_model.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/classifier.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/context_graph.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/license.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/migrate_check.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/parallel.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/parse_cache.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/phased_run.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/posture.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/progress.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/risk.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/supabase/functions/README.md +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.5.0 → sourcecode-5.5.1}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -2,6 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [5.5.1] — 2026-08-13
|
|
6
|
+
|
|
7
|
+
**External audit corrections and command execution performance.**
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- **Impact callers** now expand accessor and interface frontiers consistently,
|
|
11
|
+
with caller symbols remaining a refinement of caller classes.
|
|
12
|
+
- **Endpoint and validation contracts** now expose test-surface policy, reuse
|
|
13
|
+
servlet declarations, and require real `Validator`/`setValidator` evidence.
|
|
14
|
+
- **Modernization references** now recognize nested types used by their
|
|
15
|
+
enclosing class.
|
|
16
|
+
- **Spring audit output** is bounded by default while explicit full output
|
|
17
|
+
remains available through `--output` and `--compact`.
|
|
18
|
+
- **Repeated command execution** reuses the cached analysis context and reports
|
|
19
|
+
independent cache-layer states for context, parse, snapshot, and RIS.
|
|
20
|
+
|
|
21
|
+
### Documentation
|
|
22
|
+
- Closed the 2026-08-13 external audit backlog in the roadmap with fix hashes
|
|
23
|
+
and regression coverage.
|
|
24
|
+
|
|
5
25
|
## [5.5.0] — 2026-08-12
|
|
6
26
|
|
|
7
27
|
**Audit backlog resolved and performance signals made explicit.**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 5.5.
|
|
3
|
+
Version: 5.5.1
|
|
4
4
|
Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Keywords: agents,ai,codebase,context,developer-tools,llm
|
|
@@ -42,7 +42,7 @@ Description-Content-Type: text/markdown
|
|
|
42
42
|
|
|
43
43
|
**Context · Impact · Migration · Architecture · Review — everything from one structural model.**
|
|
44
44
|
|
|
45
|
-

|
|
46
46
|

|
|
47
47
|
|
|
48
48
|
> **ASK Engine** is the product. The CLI command is **`ask`**. The legacy **`sourcecode`**
|
|
@@ -126,7 +126,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
126
126
|
# pip / pipx
|
|
127
127
|
pipx install sourcecode # or: pip install sourcecode
|
|
128
128
|
|
|
129
|
-
ask version # ask 5.5.
|
|
129
|
+
ask version # ask 5.5.1 — and, on a build that has aged,
|
|
130
130
|
# how many releases have probably shipped since
|
|
131
131
|
```
|
|
132
132
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**Context · Impact · Migration · Architecture · Review — everything from one structural model.**
|
|
6
6
|
|
|
7
|
-

|
|
8
8
|

|
|
9
9
|
|
|
10
10
|
> **ASK Engine** is the product. The CLI command is **`ask`**. The legacy **`sourcecode`**
|
|
@@ -88,7 +88,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
88
88
|
# pip / pipx
|
|
89
89
|
pipx install sourcecode # or: pip install sourcecode
|
|
90
90
|
|
|
91
|
-
ask version # ask 5.5.
|
|
91
|
+
ask version # ask 5.5.1 — and, on a build that has aged,
|
|
92
92
|
# how many releases have probably shipped since
|
|
93
93
|
```
|
|
94
94
|
|
|
@@ -3457,6 +3457,9 @@ def main(
|
|
|
3457
3457
|
_core_hash = ""
|
|
3458
3458
|
_core_flags_str = ""
|
|
3459
3459
|
_view_flags_str = ""
|
|
3460
|
+
# Reuse the freshness decision for cache metadata; otherwise the root
|
|
3461
|
+
# command repeats a full Git status walk after the analysis completes.
|
|
3462
|
+
_tree_is_dirty: Optional[bool] = None
|
|
3460
3463
|
|
|
3461
3464
|
if not no_cache:
|
|
3462
3465
|
try:
|
|
@@ -3506,6 +3509,8 @@ def main(
|
|
|
3506
3509
|
Path(_git_root_str) if _git_root_str else target,
|
|
3507
3510
|
scope=target,
|
|
3508
3511
|
)
|
|
3512
|
+
if _tree_sig and _git_sha:
|
|
3513
|
+
_tree_is_dirty = _tree_sig != _git_sha
|
|
3509
3514
|
if _tree_sig:
|
|
3510
3515
|
_core_key = f"{_tree_sig}-{_core_h}"
|
|
3511
3516
|
else:
|
|
@@ -3821,7 +3826,11 @@ def main(
|
|
|
3821
3826
|
if format == "json":
|
|
3822
3827
|
try:
|
|
3823
3828
|
from sourcecode.ris import _has_uncommitted_changes as _huc
|
|
3824
|
-
_uncommitted =
|
|
3829
|
+
_uncommitted = (
|
|
3830
|
+
_tree_is_dirty
|
|
3831
|
+
if _tree_is_dirty is not None
|
|
3832
|
+
else _huc(target)
|
|
3833
|
+
)
|
|
3825
3834
|
except Exception:
|
|
3826
3835
|
_uncommitted = False
|
|
3827
3836
|
_data_scope = "COMPACT" if compact else ("AGENT" if agent else "FULL")
|
|
@@ -4717,7 +4726,11 @@ def main(
|
|
|
4717
4726
|
if format == "json":
|
|
4718
4727
|
try:
|
|
4719
4728
|
from sourcecode.ris import _has_uncommitted_changes as _huc_fresh
|
|
4720
|
-
_uncommitted_fresh =
|
|
4729
|
+
_uncommitted_fresh = (
|
|
4730
|
+
_tree_is_dirty
|
|
4731
|
+
if _tree_is_dirty is not None
|
|
4732
|
+
else _huc_fresh(target)
|
|
4733
|
+
)
|
|
4721
4734
|
# _huc_fresh uses --untracked-files=no — it misses repos where all
|
|
4722
4735
|
# files are untracked (no staged/unstaged changes to tracked files).
|
|
4723
4736
|
# Promote to True when _allowed_changed_files contains untracked files.
|
|
@@ -6503,6 +6516,10 @@ def endpoints_cmd(
|
|
|
6503
6516
|
"the endpoint count, and the endpoint total is carried across as one "
|
|
6504
6517
|
"number rather than 3 500 rows.",
|
|
6505
6518
|
),
|
|
6519
|
+
include_tests: bool = typer.Option(
|
|
6520
|
+
False, "--include-tests",
|
|
6521
|
+
help="Include endpoints from test source and test-fixture modules; excluded by default.",
|
|
6522
|
+
),
|
|
6506
6523
|
client_usage: bool = typer.Option(
|
|
6507
6524
|
False, "--client-usage",
|
|
6508
6525
|
help="Join the routes against the HTTP calls written in the TypeScript/"
|
|
@@ -6563,7 +6580,7 @@ def endpoints_cmd(
|
|
|
6563
6580
|
_prog = Progress()
|
|
6564
6581
|
_prog.start("scanning endpoints")
|
|
6565
6582
|
try:
|
|
6566
|
-
data = _extract_java_endpoints(target)
|
|
6583
|
+
data = _extract_java_endpoints(target, include_tests=include_tests)
|
|
6567
6584
|
finally:
|
|
6568
6585
|
_prog.finish()
|
|
6569
6586
|
|
|
@@ -8989,9 +9006,26 @@ def spring_audit_cmd(
|
|
|
8989
9006
|
# 9,53 s on a 1 303-file repository) and it is the same parse the other
|
|
8990
9007
|
# knowledge commands share, so it is fetched rather than rebuilt — which
|
|
8991
9008
|
# is what makes a warm worth anything here (cold == warm before C3-94).
|
|
8992
|
-
|
|
8993
|
-
|
|
9009
|
+
_repo_root = _ctxcache.repo_root_of(target)
|
|
9010
|
+
cir, _cir_lookup = _ctxcache.get_or_build_cir(
|
|
9011
|
+
_repo_root, target, file_list, progress=_work_sink(_prog)
|
|
8994
9012
|
)
|
|
9013
|
+
_cache_state = {
|
|
9014
|
+
"context": "warm" if _cir_lookup.hit else "cold",
|
|
9015
|
+
"parse": "warm" if _cir_lookup.hit else "cold",
|
|
9016
|
+
}
|
|
9017
|
+
try:
|
|
9018
|
+
from sourcecode import cache as _cache_state_mod
|
|
9019
|
+
_cache_status = _cache_state_mod.status(target)
|
|
9020
|
+
_cache_state["snapshot"] = (
|
|
9021
|
+
"warm" if _cache_status.get("cached_cores") else "cold"
|
|
9022
|
+
)
|
|
9023
|
+
_cache_state["ris"] = (
|
|
9024
|
+
"warm" if _cache_status.get("ris_exists") else "cold"
|
|
9025
|
+
)
|
|
9026
|
+
except Exception:
|
|
9027
|
+
_cache_state["snapshot"] = "unknown"
|
|
9028
|
+
_cache_state["ris"] = "unknown"
|
|
8995
9029
|
# C3-85: the stretch between the last `linking` tick and the first rule
|
|
8996
9030
|
# tick reports nothing, and what stays on the line is `n/n` — a counter
|
|
8997
9031
|
# that finished, reading as a stage still running. Measured on keycloak
|
|
@@ -9142,7 +9176,18 @@ def spring_audit_cmd(
|
|
|
9142
9176
|
"phase that never ran is not evidence there is none."
|
|
9143
9177
|
)
|
|
9144
9178
|
|
|
9145
|
-
|
|
9179
|
+
_bounded_default = (
|
|
9180
|
+
not compact and output_path is None and format == "json" and not table
|
|
9181
|
+
)
|
|
9182
|
+
data = (
|
|
9183
|
+
combined.to_compact_dict()
|
|
9184
|
+
if compact or _bounded_default
|
|
9185
|
+
else combined.to_dict()
|
|
9186
|
+
)
|
|
9187
|
+
if _bounded_default:
|
|
9188
|
+
data.pop("mode", None)
|
|
9189
|
+
data["default_output"] = "bounded"
|
|
9190
|
+
data.setdefault("metadata", {})["cache_layers"] = _cache_state
|
|
9146
9191
|
if _stopped_early:
|
|
9147
9192
|
# C3-87: the block is composed by `PhasedRun.status`, which is the
|
|
9148
9193
|
# authority `risk` is now bound to as well — one vocabulary for
|
|
@@ -223,6 +223,18 @@ def _scan_repository(
|
|
|
223
223
|
for fqn in by_qualified[hit]:
|
|
224
224
|
if fqn not in nested_hits and nested[fqn][1] != rel:
|
|
225
225
|
nested_hits[fqn] = rel
|
|
226
|
+
# Nested types are often used unqualified by their enclosing
|
|
227
|
+
# class (`private Operation operation` or `Map<String, DATATYPE>`).
|
|
228
|
+
# The declaration is not a reference; a second occurrence is.
|
|
229
|
+
for fqn, (qualified, owner_file) in nested.items():
|
|
230
|
+
if owner_file != rel or fqn in nested_hits:
|
|
231
|
+
continue
|
|
232
|
+
nested_name = qualified.rsplit(".", 1)[-1]
|
|
233
|
+
unqualified = re.findall(
|
|
234
|
+
rf"(?<!\.)\b{re.escape(nested_name)}\b", text
|
|
235
|
+
)
|
|
236
|
+
if len(unqualified) > 1:
|
|
237
|
+
nested_hits[fqn] = rel
|
|
226
238
|
scan_java = len(nested_hits) < len(nested)
|
|
227
239
|
if not scan_config and not scan_java:
|
|
228
240
|
return config_hits, nested_hits, literal_hits
|
|
@@ -311,7 +323,7 @@ def analyze_type_references(nodes: "list[dict]", root: Path) -> ReferenceFacts:
|
|
|
311
323
|
entries.append(TypeReference(
|
|
312
324
|
status=REFERENCED,
|
|
313
325
|
basis=(
|
|
314
|
-
f"
|
|
326
|
+
f"referenced by its enclosing source in {nested_hits[fqn]}"
|
|
315
327
|
if fqn in nested_hits
|
|
316
328
|
else f"referenced by a class literal in {literal_refs[fqn]}"
|
|
317
329
|
),
|
|
@@ -27,7 +27,7 @@ from typing import Any, Optional
|
|
|
27
27
|
#: The date `__version__` was released, from that version's CHANGELOG entry.
|
|
28
28
|
#: `tests/test_release_info.py` fails the build if the two disagree, so this is
|
|
29
29
|
#: a copy of a fact rather than a second authority for it.
|
|
30
|
-
RELEASE_DATE = "2026-08-
|
|
30
|
+
RELEASE_DATE = "2026-08-13"
|
|
31
31
|
|
|
32
32
|
#: Releases per day, measured over the 30 releases before this one (the same
|
|
33
33
|
#: computation the test re-runs against the CHANGELOG). Stable across window
|
|
@@ -6362,10 +6362,13 @@ def is_test_source_file(rel_path: str) -> bool:
|
|
|
6362
6362
|
# Convenience: find Java files in a repo
|
|
6363
6363
|
# ---------------------------------------------------------------------------
|
|
6364
6364
|
|
|
6365
|
-
def extract_java_endpoints(
|
|
6365
|
+
def extract_java_endpoints(
|
|
6366
|
+
root: Path, *, include_tests: bool = False
|
|
6367
|
+
) -> "dict[str, Any]":
|
|
6366
6368
|
"""Extract REST endpoint surface from Java source files.
|
|
6367
6369
|
|
|
6368
6370
|
Canonical endpoint extractor — uses IR symbol extraction + _build_route_surface().
|
|
6371
|
+
Test-fixture modules remain auditable by default and can be included explicitly.
|
|
6369
6372
|
Security extraction delegated to _route_security_from_sym (single source of truth);
|
|
6370
6373
|
results stored in route["security_annotations"] by _build_route_surface.
|
|
6371
6374
|
|
|
@@ -6674,7 +6677,8 @@ def extract_java_endpoints(root: Path) -> "dict[str, Any]":
|
|
|
6674
6677
|
# counted with, the real API surface — but they are preserved in their own bucket
|
|
6675
6678
|
# so nothing is silently dropped and the exclusion is auditable.
|
|
6676
6679
|
_test_util_endpoints = [e for e in endpoints if e.get("scope") == "test_util"]
|
|
6677
|
-
|
|
6680
|
+
if not include_tests:
|
|
6681
|
+
endpoints = [e for e in endpoints if e.get("scope") != "test_util"]
|
|
6678
6682
|
|
|
6679
6683
|
# "no_security_signal" = no recognized security annotation at method OR class level.
|
|
6680
6684
|
# Note: repos may use framework-level security (e.g. Keycloak itself) with no
|
|
@@ -6898,7 +6902,7 @@ def extract_java_endpoints(root: Path) -> "dict[str, Any]":
|
|
|
6898
6902
|
pass
|
|
6899
6903
|
# Surface test-fixture endpoints excluded from the production surface above.
|
|
6900
6904
|
# Reported separately (not hidden) so the exclusion is transparent and auditable.
|
|
6901
|
-
if _test_util_endpoints:
|
|
6905
|
+
if _test_util_endpoints and not include_tests:
|
|
6902
6906
|
result["test_util_endpoints"] = _test_util_endpoints
|
|
6903
6907
|
result["test_util_excluded"] = len(_test_util_endpoints)
|
|
6904
6908
|
result.setdefault("notes", []).append(
|
|
@@ -6906,6 +6910,8 @@ def extract_java_endpoints(root: Path) -> "dict[str, Any]":
|
|
|
6906
6910
|
f"module(s) under src/main were excluded from the production surface "
|
|
6907
6911
|
f"(see test_util_endpoints)."
|
|
6908
6912
|
)
|
|
6913
|
+
elif _test_util_endpoints:
|
|
6914
|
+
result["test_util_included"] = len(_test_util_endpoints)
|
|
6909
6915
|
# Surface incomplete-endpoint warnings (interface-defined controllers) only when
|
|
6910
6916
|
# present, to keep output backward-compatible for the common case.
|
|
6911
6917
|
if endpoint_warnings:
|
|
@@ -6964,6 +6970,17 @@ def extract_java_endpoints(root: Path) -> "dict[str, Any]":
|
|
|
6964
6970
|
if any(r.get("framework") == "jax_rs" for r in routes):
|
|
6965
6971
|
_nonspring.pop("jax_rs", None)
|
|
6966
6972
|
|
|
6973
|
+
# Servlet mappings are a URL declaration population, not a count of
|
|
6974
|
+
# HttpServlet classes. Reuse the servlet extractor so `endpoints` and
|
|
6975
|
+
# `endpoints --servlets` publish the same authoritative census.
|
|
6976
|
+
try:
|
|
6977
|
+
from sourcecode.servlet_surface import build_servlet_surface
|
|
6978
|
+
|
|
6979
|
+
_nonspring["servlets"] = int(
|
|
6980
|
+
build_servlet_surface(root).get("declarations", 0)
|
|
6981
|
+
)
|
|
6982
|
+
except Exception:
|
|
6983
|
+
pass
|
|
6967
6984
|
_nonspring_total = sum(_nonspring.values())
|
|
6968
6985
|
if _nonspring_total:
|
|
6969
6986
|
_frameworks = [k for k, v in _nonspring.items() if v]
|
|
@@ -7264,6 +7281,23 @@ def compute_blast_radius(
|
|
|
7264
7281
|
# class-level node traversable at all (C1-16), and rebuilding it per node
|
|
7265
7282
|
# would make the walk quadratic in the graph.
|
|
7266
7283
|
_rg_index = _class_method_index(reverse_graph)
|
|
7284
|
+
|
|
7285
|
+
def _walk_callers(_node: str) -> list[str]:
|
|
7286
|
+
"""Expand method frontiers through their owning class as well.
|
|
7287
|
+
|
|
7288
|
+
Service-locator accessors enter the frontier as ``Class#accessor`` while
|
|
7289
|
+
callers of the class are indexed under its method keys. Keeping the
|
|
7290
|
+
exact lookup preserves method-level reach; adding the enclosing class
|
|
7291
|
+
lookup prevents that frontier from becoming a false terminal node.
|
|
7292
|
+
"""
|
|
7293
|
+
candidates = list(_all_callers_from_rg(
|
|
7294
|
+
_node, reverse_graph, _rg_index, _impl_graph
|
|
7295
|
+
))
|
|
7296
|
+
if "#" in _node:
|
|
7297
|
+
candidates.extend(_all_callers_from_rg(
|
|
7298
|
+
_enclosing_class(_node), reverse_graph, _rg_index, _impl_graph
|
|
7299
|
+
))
|
|
7300
|
+
return list(dict.fromkeys(candidates))
|
|
7267
7301
|
# Callers inject the interface, not the implementation, so a walk that does not
|
|
7268
7302
|
# know the implements relation stops one hop short of every DI consumer. Without
|
|
7269
7303
|
# it this traversal reached 200 classes and **no controller at all** for
|
|
@@ -7298,14 +7332,14 @@ def compute_blast_radius(
|
|
|
7298
7332
|
_expanded.add(_sym)
|
|
7299
7333
|
matched_fqns = _expanded
|
|
7300
7334
|
for seed in matched_fqns:
|
|
7301
|
-
_seed_callers =
|
|
7335
|
+
_seed_callers = _walk_callers(seed)
|
|
7302
7336
|
if len(_seed_callers) > _HUB_CALLER_THRESHOLD and max_depth > 1:
|
|
7303
7337
|
_effective_depth = 1
|
|
7304
7338
|
_hub_class_guard = True
|
|
7305
7339
|
break
|
|
7306
7340
|
|
|
7307
7341
|
for seed in matched_fqns:
|
|
7308
|
-
callers =
|
|
7342
|
+
callers = _walk_callers(seed)
|
|
7309
7343
|
for c in callers:
|
|
7310
7344
|
if c not in all_affected:
|
|
7311
7345
|
all_affected[c] = 1
|
|
@@ -7391,7 +7425,7 @@ def compute_blast_radius(
|
|
|
7391
7425
|
node, depth = queue.pop(0)
|
|
7392
7426
|
if depth >= _effective_depth:
|
|
7393
7427
|
continue
|
|
7394
|
-
for caller in
|
|
7428
|
+
for caller in _walk_callers(node):
|
|
7395
7429
|
if caller not in visited:
|
|
7396
7430
|
visited.add(caller)
|
|
7397
7431
|
all_affected[caller] = depth + 1
|
|
@@ -7414,7 +7448,7 @@ def compute_blast_radius(
|
|
|
7414
7448
|
_snode, _sdepth = _sample_queue.pop(0)
|
|
7415
7449
|
if _sdepth >= _HUB_SAMPLE_DEPTH:
|
|
7416
7450
|
continue
|
|
7417
|
-
for _scaller in
|
|
7451
|
+
for _scaller in _walk_callers(_snode):
|
|
7418
7452
|
if _scaller not in _sample_visited:
|
|
7419
7453
|
_sample_visited.add(_scaller)
|
|
7420
7454
|
all_affected[_scaller] = _sdepth + 1
|
|
@@ -7615,7 +7649,12 @@ def compute_blast_radius(
|
|
|
7615
7649
|
_direct_caller_classes = sorted(
|
|
7616
7650
|
caller_classes(direct_callers, exclude=matched_fqns)
|
|
7617
7651
|
)
|
|
7618
|
-
|
|
7652
|
+
_direct_class_set = set(_direct_caller_classes)
|
|
7653
|
+
_direct_caller_symbols = sorted(
|
|
7654
|
+
symbol for symbol in direct_callers
|
|
7655
|
+
if _enclosing_class(symbol) in _direct_class_set
|
|
7656
|
+
)
|
|
7657
|
+
n_direct_symbols = len(_direct_caller_symbols)
|
|
7619
7658
|
n_direct_classes = len(_direct_caller_classes)
|
|
7620
7659
|
n_direct = n_direct_symbols
|
|
7621
7660
|
n_indirect = len(indirect_callers)
|
|
@@ -7827,8 +7866,8 @@ def compute_blast_radius(
|
|
|
7827
7866
|
else _direct_caller_classes[:_direct_cap]
|
|
7828
7867
|
),
|
|
7829
7868
|
"direct_caller_symbols": (
|
|
7830
|
-
|
|
7831
|
-
else
|
|
7869
|
+
_direct_caller_symbols if _direct_cap is None
|
|
7870
|
+
else _direct_caller_symbols[:_direct_cap]
|
|
7832
7871
|
),
|
|
7833
7872
|
"indirect_callers": _indirect_summary,
|
|
7834
7873
|
"container_wired": [w.to_dict() for w in _container_wired],
|
|
@@ -484,18 +484,15 @@ def _programmatic_validation_signals(graph: "ContextGraph") -> "list[str]":
|
|
|
484
484
|
if _is_excluded(t.source_file):
|
|
485
485
|
continue
|
|
486
486
|
sig = (t.signature or "")
|
|
487
|
-
if
|
|
487
|
+
if (
|
|
488
|
+
"org.springframework.validation.Validator" not in sig
|
|
489
|
+
and not re.search(r"\bimplements\s+Validator\b", sig)
|
|
490
|
+
):
|
|
488
491
|
continue
|
|
489
492
|
if "ConstraintValidator" in sig:
|
|
490
493
|
continue
|
|
491
494
|
evidence.append(f"{t.fqn} implements org.springframework.validation.Validator")
|
|
492
495
|
|
|
493
|
-
for m in graph.symbols(kind="method"):
|
|
494
|
-
if _is_excluded(m.source_file):
|
|
495
|
-
continue
|
|
496
|
-
if m.has_annotation("InitBinder"):
|
|
497
|
-
evidence.append(f"{m.fqn} is annotated with @InitBinder")
|
|
498
|
-
|
|
499
496
|
if evidence:
|
|
500
497
|
return sorted(dict.fromkeys(evidence))
|
|
501
498
|
|
|
@@ -627,6 +624,7 @@ def build_validation_surface(
|
|
|
627
624
|
"detected": True,
|
|
628
625
|
"evidence": programmatic_evidence,
|
|
629
626
|
}
|
|
627
|
+
result["programmatic_validation_gaps"] = []
|
|
630
628
|
spec_path = endpoints_data.get("openapi_spec")
|
|
631
629
|
if spec_path:
|
|
632
630
|
result["openapi_spec"] = spec_path
|
|
@@ -717,7 +715,7 @@ def build_validation_surface(
|
|
|
717
715
|
"outside the declared-constraint surface this command models."
|
|
718
716
|
).strip()
|
|
719
717
|
if not result.get("gaps"):
|
|
720
|
-
result["
|
|
718
|
+
result["programmatic_validation_gaps"] = [
|
|
721
719
|
{
|
|
722
720
|
"method": "",
|
|
723
721
|
"path": "",
|
|
@@ -727,7 +725,6 @@ def build_validation_surface(
|
|
|
727
725
|
"confidence": "Likely",
|
|
728
726
|
}
|
|
729
727
|
]
|
|
730
|
-
result["summary"]["gaps"] = 1
|
|
731
728
|
|
|
732
729
|
_reconcile_with_code_axis(result, graph, root)
|
|
733
730
|
if programmatic_evidence:
|
|
@@ -740,7 +737,7 @@ def build_validation_surface(
|
|
|
740
737
|
if programmatic_note.strip() not in note:
|
|
741
738
|
result["note"] = (note + programmatic_note).strip()
|
|
742
739
|
if not result.get("gaps"):
|
|
743
|
-
result["
|
|
740
|
+
result["programmatic_validation_gaps"] = [
|
|
744
741
|
{
|
|
745
742
|
"method": "",
|
|
746
743
|
"path": "",
|
|
@@ -750,7 +747,6 @@ def build_validation_surface(
|
|
|
750
747
|
"confidence": "Likely",
|
|
751
748
|
}
|
|
752
749
|
]
|
|
753
|
-
result["summary"]["gaps"] = 1
|
|
754
750
|
return result
|
|
755
751
|
|
|
756
752
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/DESIGN-knowledge-provider-integration.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/DESIGN-p6-semantic-integration-engine.md
RENAMED
|
File without changes
|
|
File without changes
|
{sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/DESIGN-robustness-security-inference.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md
RENAMED
|
File without changes
|
{sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/REPORT-p6-integration-detector-comparison.md
RENAMED
|
File without changes
|
{sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/REPORT-p8-flow-analyzer-migration.md
RENAMED
|
File without changes
|
{sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/REPORT-p9-integration-detector-migration.md
RENAMED
|
File without changes
|
|
File without changes
|
{sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/adr/0002-source-evidence-boundary.md
RENAMED
|
File without changes
|
{sourcecode-5.5.0 → sourcecode-5.5.1}/docs/architecture/adr/0003-architectural-characterization.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.5.0 → sourcecode-5.5.1}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md
RENAMED
|
File without changes
|
{sourcecode-5.5.0 → sourcecode-5.5.1}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.5.0 → sourcecode-5.5.1}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md
RENAMED
|
File without changes
|
|
File without changes
|
{sourcecode-5.5.0 → sourcecode-5.5.1}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|