sourcecode 5.9.19__tar.gz → 5.9.22__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.9.19 → sourcecode-5.9.22}/CHANGELOG.md +48 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/PKG-INFO +4 -4
- {sourcecode-5.9.19 → sourcecode-5.9.22}/README.md +3 -3
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/DEVELOPMENT-ROADMAP.md +35 -0
- sourcecode-5.9.22/docs/RD-JVM-ASK-TRIAGE-2026-08-31.md +78 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/USER_GUIDE.md +1 -1
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/migrate-check.md +24 -0
- sourcecode-5.9.22/docs/perf/baselines/5.9.22/petclinic__ask__cold.json +59 -0
- sourcecode-5.9.22/docs/perf/baselines/5.9.22/petclinic__ask__warm.json +47 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/pyproject.toml +1 -1
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/canonical_ir.py +11 -4
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/cli.py +13 -11
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/context_graph.py +24 -18
- sourcecode-5.9.22/src/sourcecode/jvm_inventory.py +294 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/migrate_check.py +7 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/parallel.py +3 -11
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/repository_ir.py +93 -20
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/risk.py +3 -2
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/schema_registry.py +2 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/.github/workflows/windows-battery.yml +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/.github/workflows/windows-regression.yml +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/.gitignore +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/.ruff.toml +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/CLAUDE.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/CODE_OF_CONDUCT.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/CONTRIBUTING.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/LICENSE +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/NOTICE +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/SECURITY.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-28-EXTERNAL-5.9.10.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.16.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.17.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-2026-08-31-REMEDIATION-5.9.18.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/CACHE.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/DEFECT-LEDGER.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/EXECUTIVE-ROADMAP.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/MANUAL-USUARIO.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/PRODUCT-ROUTE.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/RELEASE-VERIFICATION.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/DESIGN-assessment-report.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/DESIGN-pack-manifest.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/overview.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/contracts.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/licensing-schema.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/pack-gate-github-actions.yml +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/pack-gate-gitlab.yml +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/README.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/perf/corpus-testing-2026-08-22.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/posture.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/privacy.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/schema.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/hatch_build.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/scripts/context_cost_harness.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/scripts/perf_gate.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/scripts/perf_harness.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/scripts/test_fast.sh +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/scripts/windows_reliability_matrix.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/__main__.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/access_drift.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/analysis_budget.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/answer_bounds.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/audit_clusters.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/audit_recipe.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/audit_report.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/audit_since.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/audit_verify.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/baseline_attestation.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/breaking_changes.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/build_modules.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/build_stamp.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/c4_render.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/cache.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/cache_model.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/cache_observation.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/ci_output.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/classifier.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/click_runtime.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/cve_feed.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/cve_reachability.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/defect_classes/__init__.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/defect_classes/registry.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/empty_reach.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/endpoint_disposition.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/explain_endpoint.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/field_deprecations.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/findings_baseline.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/functional_routes.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/github_diff.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/intent_router.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/license.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/manifest_cache.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/migration_apply.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/output_bounds.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/output_ceiling.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/output_sink.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/pack_manifest.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/packs.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/parse_cache.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/path_display.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/phased_run.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/posture.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/pr_risk.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/product_info.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/progress.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/regress.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/regulatory_pack.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/release_info.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/remediation_diff.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/remediation_flow.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/remediation_report.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/resource_budget.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/risk_model.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/sarif_emit.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/schema_producers.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/selection_contract.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/self_audit.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/selftest.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/timeline_cache.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/vex.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/watch_loop.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/wired_surface.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/supabase/functions/README.md +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.9.19 → sourcecode-5.9.22}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.9.22] — 2026-08-31
|
|
4
|
+
|
|
5
|
+
*Large-repository route projection performance.*
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Inherited route projection now resolves parent candidates through a module/name
|
|
10
|
+
index instead of scanning every class for every child. The ambiguity rule and
|
|
11
|
+
emitted routes remain unchanged, while cold `--agent --full` improved from about
|
|
12
|
+
20.5 to 19.6 seconds on openmrs-core and from 32.0 to 30.8 seconds on Jenkins.
|
|
13
|
+
|
|
14
|
+
### Verification Boundary
|
|
15
|
+
|
|
16
|
+
- Endpoint, inheritance, canonical IR and migration regression tests pass. Large
|
|
17
|
+
cold runs remain memory-heavy; reducing the duplicated canonical/raw model is
|
|
18
|
+
still required before claiming the 8/10 performance target.
|
|
19
|
+
|
|
20
|
+
## [5.9.21] — 2026-08-31
|
|
21
|
+
|
|
22
|
+
*Cold-path memory and JVM inventory performance follow-up.*
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- Full CIR builds no longer retain every Java source body in the per-file linking
|
|
27
|
+
queue; the linking pass rereads source only when needed and keeps repository
|
|
28
|
+
constants and annotation references as compact metadata.
|
|
29
|
+
- Completed linking drops pass-local containers before canonical projection, reducing
|
|
30
|
+
overlap between raw IR assembly and the canonical model.
|
|
31
|
+
- `migrate-check` JVM inventory reuses the already discovered Java file list instead
|
|
32
|
+
of walking and rescanning the source tree a second time.
|
|
33
|
+
|
|
34
|
+
### Verification Boundary
|
|
35
|
+
|
|
36
|
+
- Focused JVM, CIR cache-equivalence, canonical IR, source-span and migration tests
|
|
37
|
+
pass. Cold `--agent --full` remains memory-heavy on large repositories: the latest
|
|
38
|
+
controlled run measured about 710 MB on openmrs-core and 1.24 GB on Jenkins; this
|
|
39
|
+
release does not claim that the 8/10 performance target is fully reached.
|
|
40
|
+
|
|
41
|
+
## [5.9.20] — 2026-08-31
|
|
42
|
+
|
|
43
|
+
*JVM ecosystem evidence and local SBOM inventory.*
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
|
|
47
|
+
- `migrate-check` now publishes bounded `jvm_inventory` evidence for JVM frameworks, Java runtime declarations in CI/containers, modern JVM patterns and local CycloneDX/SPDX JSON documents.
|
|
48
|
+
- Added deterministic, negative-control and schema-registry coverage for the new inventory.
|
|
49
|
+
- Documented the accepted JVM R&D scope and its explicit no-network/non-coverage boundaries.
|
|
50
|
+
|
|
3
51
|
## [5.9.19] — 2026-08-31
|
|
4
52
|
|
|
5
53
|
*Critical `pack gate --since` compatibility correction.*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 5.9.
|
|
3
|
+
Version: 5.9.22
|
|
4
4
|
Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/HarounDominique/sourcecode
|
|
6
6
|
Project-URL: Repository, https://github.com/HarounDominique/sourcecode
|
|
@@ -59,7 +59,7 @@ Description-Content-Type: text/markdown
|
|
|
59
59
|
> question. All analysis is local and deterministic; see [Privacy](#configuration--privacy)
|
|
60
60
|
> before inspecting a repository whose telemetry policy you need to control.
|
|
61
61
|
|
|
62
|
-

|
|
63
63
|

|
|
64
64
|
|
|
65
65
|
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
|
|
@@ -196,7 +196,7 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
|
|
|
196
196
|
answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
|
|
197
197
|
unset, or set it to `0`, to disable the ceiling explicitly.
|
|
198
198
|
|
|
199
|
-
**Current performance status.** Release 5.9.
|
|
199
|
+
**Current performance status.** Release 5.9.22 retains the shared Canonical IR
|
|
200
200
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
201
201
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
202
202
|
not duration promises. It also removes two repeated walks of the same file tree in
|
|
@@ -276,7 +276,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
276
276
|
# pip / pipx
|
|
277
277
|
pipx install sourcecode # or: pip install sourcecode
|
|
278
278
|
|
|
279
|
-
ask version # ask 5.9.
|
|
279
|
+
ask version # ask 5.9.22 — and, on a build that has aged,
|
|
280
280
|
# how many releases have probably shipped since
|
|
281
281
|
```
|
|
282
282
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
> question. All analysis is local and deterministic; see [Privacy](#configuration--privacy)
|
|
11
11
|
> before inspecting a repository whose telemetry policy you need to control.
|
|
12
12
|
|
|
13
|
-

|
|
14
14
|

|
|
15
15
|
|
|
16
16
|
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
|
|
@@ -147,7 +147,7 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
|
|
|
147
147
|
answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
|
|
148
148
|
unset, or set it to `0`, to disable the ceiling explicitly.
|
|
149
149
|
|
|
150
|
-
**Current performance status.** Release 5.9.
|
|
150
|
+
**Current performance status.** Release 5.9.22 retains the shared Canonical IR
|
|
151
151
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
152
152
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
153
153
|
not duration promises. It also removes two repeated walks of the same file tree in
|
|
@@ -227,7 +227,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
227
227
|
# pip / pipx
|
|
228
228
|
pipx install sourcecode # or: pip install sourcecode
|
|
229
229
|
|
|
230
|
-
ask version # ask 5.9.
|
|
230
|
+
ask version # ask 5.9.22 — and, on a build that has aged,
|
|
231
231
|
# how many releases have probably shipped since
|
|
232
232
|
```
|
|
233
233
|
|
|
@@ -1,11 +1,46 @@
|
|
|
1
1
|
# ASK — Development Roadmap
|
|
2
2
|
|
|
3
|
+
### Release 5.9.20 — JVM evidence inventory
|
|
4
|
+
|
|
5
|
+
The accepted JVM R&D scope is implemented in `migrate-check`: local framework,
|
|
6
|
+
toolchain, runtime-pattern and Docker/CI evidence plus bounded CycloneDX/SPDX JSON
|
|
7
|
+
reading. The output is advisory and additive; no network, dependency resolution,
|
|
8
|
+
CVE lookup, signature verification or runtime recommendation is performed.
|
|
9
|
+
|
|
10
|
+
### Performance pass — 2026-08-31
|
|
11
|
+
|
|
12
|
+
The JVM inventory no longer rediscovers the Java tree inside `migrate-check`: the
|
|
13
|
+
command reuses its already-resolved source population and only discovers local
|
|
14
|
+
configuration, CI, container and SBOM candidates. On the current testing corpus,
|
|
15
|
+
fresh measurements were approximately 4.8 s for `openmrs-core` and 7.6 s for
|
|
16
|
+
`jenkins` using `migrate-check --compact`; no output or readiness semantics changed.
|
|
17
|
+
|
|
18
|
+
This is a bounded improvement, not closure of the performance target. The remaining
|
|
19
|
+
8/10 work is the cold/full-graph path and high-cost `--agent`, `posture`, `risk` and
|
|
20
|
+
`impact-chain` cases. Those require separate profiling and memory measurements before
|
|
21
|
+
claiming a broad speedup.
|
|
22
|
+
|
|
3
23
|
### Release 5.9.19 — `AUD-621` remediation
|
|
4
24
|
|
|
5
25
|
Release `5.9.19` carries the `5.9.18` Windows safeguards and fixes the separate `pack gate --since` crash caused by calling the Python 3.12-only tarfile filter API on Python 3.10. The compatibility path is covered by regression tests; native Windows repetition remains required for the broader reliability findings.
|
|
6
26
|
|
|
7
27
|
These code changes do not replace the required native evidence. `AUD-621-R` and `AUD-621-WIN-PROC` remain open until the repetition matrix and process-tree cases pass on native Windows; `AUD-621-CONTEXT` remains profiling work.
|
|
8
28
|
|
|
29
|
+
### JVM I+D triage — accepted scope from 2026-08-31
|
|
30
|
+
|
|
31
|
+
The external JVM report has been depurated against primary sources and the current
|
|
32
|
+
ASK route. It receives a limited green light: extend `migrate-check` with a
|
|
33
|
+
source-backed JDK/build/framework inventory (P0), then add small detectors for
|
|
34
|
+
virtual threads, `ScopedValue`, modules, native-image/jlink/jpackage and Java
|
|
35
|
+
versions declared by CI or containers (P1). The decision record, accepted facts,
|
|
36
|
+
rejected scope and sources are in
|
|
37
|
+
[`RD-JVM-ASK-TRIAGE-2026-08-31.md`](RD-JVM-ASK-TRIAGE-2026-08-31.md).
|
|
38
|
+
|
|
39
|
+
This does not authorize embeddings, hosted vector search, APM/repository
|
|
40
|
+
integrations, Sigstore verification, CVE database work or prescriptive runtime
|
|
41
|
+
tuning. A local CycloneDX/SPDX reader remains a conditional P2 experiment and
|
|
42
|
+
must preserve ASK's no-network, source-evidence and non-coverage contracts.
|
|
43
|
+
|
|
9
44
|
### External Audit Intake — `AUD-621` re-audit, release 5.9.17
|
|
10
45
|
|
|
11
46
|
The 2026-08-31 re-audit corrects the optimistic interpretation of the previous
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Depuracion I+D JVM para ASK
|
|
2
|
+
|
|
3
|
+
**Fecha:** 2026-08-31
|
|
4
|
+
**Entrada:** informe externo sobre novedades del ecosistema JVM 2025-2026
|
|
5
|
+
**Decision:** luz verde parcial para inventario y deteccion estructural; no para ampliar ASK a busqueda vectorial, APM o integraciones externas.
|
|
6
|
+
|
|
7
|
+
## Criterio
|
|
8
|
+
|
|
9
|
+
Una propuesta entra en el roadmap solo si cumple las cuatro condiciones siguientes:
|
|
10
|
+
|
|
11
|
+
- aporta un hecho que ASK pueda verificar localmente;
|
|
12
|
+
- puede publicarse con ruta y linea de evidencia;
|
|
13
|
+
- no requiere red, credenciales ni una base externa durante el analisis;
|
|
14
|
+
- mejora una pregunta que ASK ya responde sobre modernizacion, arquitectura o seguridad del cambio.
|
|
15
|
+
|
|
16
|
+
El informe original es util como lista de hipotesis, pero no como inventario de actualidad: mezcla releases confirmadas, roadmaps, previsiones y afirmaciones de proveedor sin enlaces reproducibles. Las versiones concretas no se convierten en reglas hasta que exista una fuente primaria y una prueba sobre un repositorio fixture.
|
|
17
|
+
|
|
18
|
+
## Hechos aceptados
|
|
19
|
+
|
|
20
|
+
| Area | Hecho verificable | Uso en ASK |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| JDK 25 | `import module` esta finalizado en JEP 511; los archivos fuente compactos y los `main` de instancia pertenecen a JEP 512. | Detectar sintaxis y declarar el nivel de lenguaje observado, sin recomendar una migracion automaticamente. |
|
|
23
|
+
| Spring | Spring Framework 7 y Spring Boot 4.0 mantienen Java 17 como baseline y adoptan Java 25 como foco. | Extender la evidencia de version/framework de `migrate-check` y separar Boot 3/4. |
|
|
24
|
+
| Quarkus | Quarkus 3.31 declara soporte para Java 25, incluyendo runtime images y native builds con Mandrel. | Reconocer toolchain y empaquetado, sin inferir que Java 25 sea una recomendacion para todos los proyectos. |
|
|
25
|
+
| Jakarta EE | Jakarta EE 11 requiere Java 17 o superior e incorpora Jakarta Data 1.0, soporte para records y recursos basados en virtual threads. | Mejorar la lectura de stack y de requisitos de plataforma. |
|
|
26
|
+
| Gradle | Gradle 9 requiere JVM 17 o superior para ejecutar el daemon; toolchains permiten compilar para niveles diferentes. | Separar JVM del build y nivel de compilacion en el inventario. |
|
|
27
|
+
| SBOM | CycloneDX 1.7 y SPDX 3.0 son formatos publicos con esquemas y serializaciones verificables. | Posible entrada local futura; no implica una base CVE ni una integracion de repositorio. |
|
|
28
|
+
|
|
29
|
+
Fuentes primarias: [JEP 511](https://openjdk.org/jeps/8344700), [Spring Framework 7](https://spring.io/blog/2025/11/13/spring-framework-7-0-general-availability), [Spring Boot 4.0](https://spring.io/blog/2025/11/20/spring-boot-4-0-0-available-now), [Quarkus 3.31](https://quarkus.io/blog/quarkus-3-31-released/), [Jakarta EE 11](https://jakarta.ee/specifications/platform/11/), [Gradle 9](https://docs.gradle.org/current/userguide/upgrading_major_version_9.html), [CycloneDX](https://cyclonedx.org/specification/overview/) y [SPDX](https://spdx.dev/use/specifications/).
|
|
30
|
+
|
|
31
|
+
## Propuestas aceptadas
|
|
32
|
+
|
|
33
|
+
### P0 — Inventario de toolchain y framework
|
|
34
|
+
|
|
35
|
+
Ampliar el inventario existente de `migrate-check` para publicar, cuando haya evidencia:
|
|
36
|
+
|
|
37
|
+
- version de lenguaje/JDK objetivo y version de runtime declarada;
|
|
38
|
+
- proveedor o distribucion JDK solo cuando aparece de forma explicita;
|
|
39
|
+
- Maven/Gradle, wrapper, plugin y toolchain;
|
|
40
|
+
- Spring Boot, Spring Framework, Hibernate, Jakarta EE, Quarkus y Micronaut;
|
|
41
|
+
- separacion entre "declarado por build", "detectado en codigo" y "no observado".
|
|
42
|
+
|
|
43
|
+
No se debe resolver una version consultando Maven Central ni inferir el proveedor a partir de una imagen generica. La salida debe conservar el modelo actual de ASK: hecho, fuente, confianza y no cobertura.
|
|
44
|
+
|
|
45
|
+
### P1 — Patrones JVM con evidencia
|
|
46
|
+
|
|
47
|
+
Añadir detecciones pequenas y especificas para:
|
|
48
|
+
|
|
49
|
+
- `Thread.ofVirtual`, `Executors.newVirtualThreadPerTaskExecutor` y APIs equivalentes;
|
|
50
|
+
- `ScopedValue`;
|
|
51
|
+
- `module-info.java` e instrucciones de empaquetado `jlink`, `jpackage` y `native-image`;
|
|
52
|
+
- version de Java en Dockerfiles y pipelines CI cuando el fichero esta en el repositorio.
|
|
53
|
+
|
|
54
|
+
Cada detector debe producir una observacion `archivo:linea`, evitar recomendaciones normativas y no alterar las poblaciones actuales de endpoints, riesgo o impacto. Si un patron no puede confirmarse, debe quedar como `unknown` o no observado, nunca como ausencia.
|
|
55
|
+
|
|
56
|
+
### P2 — Entrada local de SBOM, incorporada
|
|
57
|
+
|
|
58
|
+
Se incorpora el parseo local de SBOM CycloneDX/SPDX en JSON ya presentes en el repositorio. El alcance se limita a formato, version y coordenadas de componentes. Quedan fuera la consulta de CVEs, la validacion de licencias, la verificacion Sigstore, la conexion con Artifactory/Nexus y el almacenamiento de claves.
|
|
59
|
+
|
|
60
|
+
La implementacion se ejecuta sin red y con limites de tamano. No confunde "componente declarado" con "vulnerabilidad explotable"; XML y documentos no reconocidos permanecen fuera del alcance explicito.
|
|
61
|
+
|
|
62
|
+
## No aprobado
|
|
63
|
+
|
|
64
|
+
- Embeddings, Qdrant/Pinecone y busqueda semantica como camino principal: coste, deriva y falta de evidencia de que la busqueda estructural actual sea el cuello de botella.
|
|
65
|
+
- Subida o correlacion de perfiles JFR/async-profiler: superficie de privacidad y operacion fuera del producto actual.
|
|
66
|
+
- Plugins directos para APM, Artifactory, Nexus, Sigstore o proveedores JDK: dependencia externa y coste de mantenimiento desproporcionado.
|
|
67
|
+
- Recomendaciones automaticas de GC, Java 25 o framework: el repositorio no prueba por si solo la carga de produccion ni la compatibilidad operacional.
|
|
68
|
+
- Extender ASK a Docker/Kubernetes/Go como analizador general: no es una consecuencia de detectar un fichero de pipeline o una imagen base.
|
|
69
|
+
|
|
70
|
+
## Criterios de cierre
|
|
71
|
+
|
|
72
|
+
La iniciativa no se considera hecha por reconocer una cadena. Debe aportar fixtures de Maven y Gradle, al menos un proyecto Spring Boot, uno Quarkus o Jakarta, un Dockerfile/CI con version Java y controles negativos. La bateria debe comprobar:
|
|
73
|
+
|
|
74
|
+
- evidencia de archivo y linea;
|
|
75
|
+
- determinismo frio/caliente y ausencia de red;
|
|
76
|
+
- distincion entre declarado, observado y desconocido;
|
|
77
|
+
- no regresion byte a byte de los payloads existentes cuando los nuevos campos no aplican;
|
|
78
|
+
- limites de salida y no mutacion del repositorio.
|
|
@@ -332,7 +332,7 @@ value in field use, and they are the ones to learn first:
|
|
|
332
332
|
| `ask posture . --diff dev:prod` | The only command that answers *"what changes about effective access between two profile sets, across every endpoint at once"*. Experimental, and the most differentiated capability in the product. |
|
|
333
333
|
| `ask endpoints .` | Every REST endpoint with its **effective path** (context-path + `spring.mvc.servlet.path` resolved), inferred security policy and per-endpoint confidence. Turns "audit the API" into a list. |
|
|
334
334
|
| `ask spring-audit .` | Transactional anomalies that a compiler cannot see — `@Transactional` on a private method is a silent CGLIB no-op — plus the security surface. |
|
|
335
|
-
| `ask migrate-check . --compact` | Boot 2→3 readiness plus Java LTS/licensing inventory: blockers, effort, target JDK evidence and explicit licensing-review signals. |
|
|
335
|
+
| `ask migrate-check . --compact` | Boot 2→3 readiness plus Java LTS/licensing and local JVM ecosystem inventory: blockers, effort, target JDK evidence, framework/runtime signals and explicit licensing-review signals. |
|
|
336
336
|
|
|
337
337
|
Everything else is either a projection of the same model (`impact`, `export`, `explain`) or an
|
|
338
338
|
agent-facing packaging of it (`--compact`, `--agent`, `prepare-context`). The full surface is
|
|
@@ -97,6 +97,30 @@ resolved for this field, and ASK does not make a legal entitlement claim. If the
|
|
|
97
97
|
not declare a Java version, the inventory reports `java_version_unknown`; it never treats missing
|
|
98
98
|
evidence as ready for the target LTS.
|
|
99
99
|
|
|
100
|
+
## JVM ecosystem inventory (`jvm_inventory`)
|
|
101
|
+
|
|
102
|
+
The report also includes `jvm_inventory` (`jvm-inventory-v1`), a bounded and
|
|
103
|
+
advisory evidence block for modernization planning. It records local build
|
|
104
|
+
coordinates and source imports for Spring Boot/Framework, Hibernate, Jakarta EE,
|
|
105
|
+
Quarkus and Micronaut, plus evidence for virtual threads, `ScopedValue`, Java
|
|
106
|
+
modules, `native-image`, `jlink`, `jpackage`, and Java versions declared in Docker
|
|
107
|
+
or CI files. Source/build evidence includes a POSIX path and line number; SBOM
|
|
108
|
+
documents include their local path and format/version.
|
|
109
|
+
|
|
110
|
+
Frameworks are classified as `declared_only`, `observed_only`,
|
|
111
|
+
`declared_and_observed`, or `unobserved`; missing evidence is not a positive claim.
|
|
112
|
+
The scanner reads local text only, caps its file/evidence population, does not
|
|
113
|
+
execute Maven/Gradle, resolve dependencies, access the network, inspect a CVE
|
|
114
|
+
database, or make runtime recommendations. It is additive and does not affect
|
|
115
|
+
readiness, findings, effort, or existing endpoint populations.
|
|
116
|
+
|
|
117
|
+
The conditional P2 SBOM reader is available under `jvm_inventory.sbom` for
|
|
118
|
+
local CycloneDX JSON (`bomFormat`) and SPDX JSON (`spdxVersion`) documents. It
|
|
119
|
+
reports document format/version and bounded component coordinates only. It does
|
|
120
|
+
not query CVE or license databases, verify signatures, contact artifact
|
|
121
|
+
repositories, or make a supply-chain verdict. XML SBOMs and unrecognized JSON
|
|
122
|
+
remain outside this reader and are not interpreted.
|
|
123
|
+
|
|
100
124
|
## Claim provenance (`evidence_manifest`)
|
|
101
125
|
|
|
102
126
|
Every JSON report also includes `evidence_manifest`: a compact index of the claims already
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "perf-baseline-v1",
|
|
3
|
+
"tool_version": "5.9.22",
|
|
4
|
+
"captured_at": "2026-09-01T08:51:30Z",
|
|
5
|
+
"command": "ask",
|
|
6
|
+
"repo": {
|
|
7
|
+
"name": "spring-petclinic",
|
|
8
|
+
"commit": "45649e0",
|
|
9
|
+
"files": 47,
|
|
10
|
+
"bytes": 123264,
|
|
11
|
+
"classes": 25,
|
|
12
|
+
"methods": 72
|
|
13
|
+
},
|
|
14
|
+
"scale_dimensions": {
|
|
15
|
+
"files": 47,
|
|
16
|
+
"classes": 25,
|
|
17
|
+
"methods": 72
|
|
18
|
+
},
|
|
19
|
+
"scale_dimensions_basis": "The repository axes this timing is expected to scale over. A performance claim without these dimensions is not comparable across repositories.",
|
|
20
|
+
"mode": "cold",
|
|
21
|
+
"runs": 2,
|
|
22
|
+
"wall_ms": {
|
|
23
|
+
"p50": 742.306,
|
|
24
|
+
"p95": 753.485,
|
|
25
|
+
"min": 729.885,
|
|
26
|
+
"max": 754.727
|
|
27
|
+
},
|
|
28
|
+
"phase_ms": {
|
|
29
|
+
"discovery": {
|
|
30
|
+
"p50": 6.152,
|
|
31
|
+
"p95": 6.238
|
|
32
|
+
},
|
|
33
|
+
"detection": {
|
|
34
|
+
"p50": 19.386,
|
|
35
|
+
"p95": 19.954
|
|
36
|
+
},
|
|
37
|
+
"analysis": {
|
|
38
|
+
"p50": 126.555,
|
|
39
|
+
"p95": 127.517
|
|
40
|
+
},
|
|
41
|
+
"serialize": {
|
|
42
|
+
"p50": 0.898,
|
|
43
|
+
"p95": 0.906
|
|
44
|
+
},
|
|
45
|
+
"unattributed_p50": 589.315
|
|
46
|
+
},
|
|
47
|
+
"rss_peak_bytes": {
|
|
48
|
+
"p50": 75284480.0,
|
|
49
|
+
"p95": 75284480.0
|
|
50
|
+
},
|
|
51
|
+
"env": {
|
|
52
|
+
"python": "3.14.6",
|
|
53
|
+
"os": "darwin",
|
|
54
|
+
"cpu": "arm",
|
|
55
|
+
"cores": 8,
|
|
56
|
+
"hostname_hash": "3972fec0",
|
|
57
|
+
"host_id_declared": false
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "perf-baseline-v1",
|
|
3
|
+
"tool_version": "5.9.22",
|
|
4
|
+
"captured_at": "2026-09-01T08:51:32Z",
|
|
5
|
+
"command": "ask",
|
|
6
|
+
"repo": {
|
|
7
|
+
"name": "spring-petclinic",
|
|
8
|
+
"commit": "45649e0",
|
|
9
|
+
"files": 47,
|
|
10
|
+
"bytes": 123264,
|
|
11
|
+
"classes": 25,
|
|
12
|
+
"methods": 72
|
|
13
|
+
},
|
|
14
|
+
"scale_dimensions": {
|
|
15
|
+
"files": 47,
|
|
16
|
+
"classes": 25,
|
|
17
|
+
"methods": 72
|
|
18
|
+
},
|
|
19
|
+
"scale_dimensions_basis": "The repository axes this timing is expected to scale over. A performance claim without these dimensions is not comparable across repositories.",
|
|
20
|
+
"mode": "warm",
|
|
21
|
+
"runs": 2,
|
|
22
|
+
"wall_ms": {
|
|
23
|
+
"p50": 352.405,
|
|
24
|
+
"p95": 356.578,
|
|
25
|
+
"min": 347.768,
|
|
26
|
+
"max": 357.042
|
|
27
|
+
},
|
|
28
|
+
"phase_ms": {
|
|
29
|
+
"discovery": null,
|
|
30
|
+
"detection": null,
|
|
31
|
+
"analysis": null,
|
|
32
|
+
"serialize": null,
|
|
33
|
+
"instrumentation": "absent"
|
|
34
|
+
},
|
|
35
|
+
"rss_peak_bytes": {
|
|
36
|
+
"p50": 75284480.0,
|
|
37
|
+
"p95": 75284480.0
|
|
38
|
+
},
|
|
39
|
+
"env": {
|
|
40
|
+
"python": "3.14.6",
|
|
41
|
+
"os": "darwin",
|
|
42
|
+
"cpu": "arm",
|
|
43
|
+
"cores": 8,
|
|
44
|
+
"hostname_hash": "3972fec0",
|
|
45
|
+
"host_id_declared": false
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -528,10 +528,17 @@ def ir_dict_to_canonical(
|
|
|
528
528
|
files = sorted(file_set)
|
|
529
529
|
|
|
530
530
|
# Sorted call graph edges — stable ordering: from, type, to
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
)
|
|
531
|
+
# The raw graph is owned by this CIR conversion and its edge order is not
|
|
532
|
+
# observable until after conversion. Sort in place instead of creating a
|
|
533
|
+
# second repository-sized list during the raw/CIR overlap peak.
|
|
534
|
+
if isinstance(edges, list):
|
|
535
|
+
edges.sort(key=lambda e: (e.get("from", ""), e.get("type", ""), e.get("to", "")))
|
|
536
|
+
call_graph = edges
|
|
537
|
+
else:
|
|
538
|
+
call_graph = sorted(
|
|
539
|
+
edges,
|
|
540
|
+
key=lambda e: (e.get("from", ""), e.get("type", ""), e.get("to", "")),
|
|
541
|
+
)
|
|
535
542
|
|
|
536
543
|
# Dependency edges (structural subset of call_graph)
|
|
537
544
|
_dep_types = frozenset({"imports", "extends", "implements", "injects"})
|
|
@@ -4404,7 +4404,9 @@ app = typer.Typer(
|
|
|
4404
4404
|
name="ask",
|
|
4405
4405
|
help=_HELP,
|
|
4406
4406
|
add_completion=False,
|
|
4407
|
-
|
|
4407
|
+
# Rich's Windows help renderer can drop options from long command panels;
|
|
4408
|
+
# plain Click help keeps the complete option contract visible there.
|
|
4409
|
+
rich_markup_mode=None if os.name == "nt" else "rich",
|
|
4408
4410
|
no_args_is_help=False,
|
|
4409
4411
|
)
|
|
4410
4412
|
|
|
@@ -7531,6 +7533,7 @@ def prepare_context_cmd(
|
|
|
7531
7533
|
Path("."),
|
|
7532
7534
|
help="Repository path to analyze (default: current directory)",
|
|
7533
7535
|
),
|
|
7536
|
+
jobs: Optional[int] = _jobs_option(),
|
|
7534
7537
|
since: Optional[str] = typer.Option(
|
|
7535
7538
|
None,
|
|
7536
7539
|
"--since",
|
|
@@ -7605,7 +7608,6 @@ def prepare_context_cmd(
|
|
|
7605
7608
|
),
|
|
7606
7609
|
),
|
|
7607
7610
|
progress_mode: Optional[str] = _progress_option(),
|
|
7608
|
-
jobs: Optional[int] = _jobs_option(),
|
|
7609
7611
|
) -> None:
|
|
7610
7612
|
"""Task-specific context for AI coding agents.
|
|
7611
7613
|
|
|
@@ -8426,6 +8428,7 @@ def repo_ir_cmd(
|
|
|
8426
8428
|
Path("."),
|
|
8427
8429
|
help="Repository root to analyze (default: current directory)",
|
|
8428
8430
|
),
|
|
8431
|
+
jobs: Optional[int] = _jobs_option(),
|
|
8429
8432
|
since: Optional[str] = typer.Option(
|
|
8430
8433
|
None,
|
|
8431
8434
|
"--since",
|
|
@@ -8491,7 +8494,6 @@ def repo_ir_cmd(
|
|
|
8491
8494
|
help="Compress output with gzip. Requires --output. Reduces large IR files by ~70-80%.",
|
|
8492
8495
|
),
|
|
8493
8496
|
progress_mode: Optional[str] = _progress_option(),
|
|
8494
|
-
jobs: Optional[int] = _jobs_option(),
|
|
8495
8497
|
) -> None:
|
|
8496
8498
|
"""Deterministic symbol-level IR for Java repositories.
|
|
8497
8499
|
|
|
@@ -9185,6 +9187,7 @@ def endpoints_cmd(
|
|
|
9185
9187
|
Path("."),
|
|
9186
9188
|
help="Repository path to scan for REST endpoints (default: current directory)",
|
|
9187
9189
|
),
|
|
9190
|
+
jobs: Optional[int] = _jobs_option(),
|
|
9188
9191
|
output_path: Optional[Path] = typer.Option(
|
|
9189
9192
|
None, "--output", "-o",
|
|
9190
9193
|
help="Write output to a file instead of stdout.",
|
|
@@ -9251,7 +9254,6 @@ def endpoints_cmd(
|
|
|
9251
9254
|
"than protect).",
|
|
9252
9255
|
),
|
|
9253
9256
|
progress_mode: Optional[str] = _progress_option(),
|
|
9254
|
-
jobs: Optional[int] = _jobs_option(),
|
|
9255
9257
|
) -> None:
|
|
9256
9258
|
"""Extract REST API endpoint surface from Java source files.
|
|
9257
9259
|
|
|
@@ -9806,6 +9808,7 @@ def export_cmd(
|
|
|
9806
9808
|
Path("."),
|
|
9807
9809
|
help="Repository path to export (default: current directory)",
|
|
9808
9810
|
),
|
|
9811
|
+
jobs: Optional[int] = _jobs_option(),
|
|
9809
9812
|
output_path: Optional[Path] = typer.Option(
|
|
9810
9813
|
None, "--output", "-o",
|
|
9811
9814
|
help="Write output to a file instead of stdout.",
|
|
@@ -9848,7 +9851,6 @@ def export_cmd(
|
|
|
9848
9851
|
"written on the diagram whenever it bites.",
|
|
9849
9852
|
),
|
|
9850
9853
|
progress_mode: Optional[str] = _progress_option(),
|
|
9851
|
-
jobs: Optional[int] = _jobs_option(),
|
|
9852
9854
|
) -> None:
|
|
9853
9855
|
"""Export structured, tool-agnostic codebase views for downstream tooling.
|
|
9854
9856
|
|
|
@@ -10015,6 +10017,7 @@ def validation_cmd(
|
|
|
10015
10017
|
Path("."),
|
|
10016
10018
|
help="Repository path to scan for request-body validation (default: current directory)",
|
|
10017
10019
|
),
|
|
10020
|
+
jobs: Optional[int] = _jobs_option(),
|
|
10018
10021
|
output_path: Optional[Path] = typer.Option(
|
|
10019
10022
|
None, "--output", "-o",
|
|
10020
10023
|
help="Write output to a file instead of stdout.",
|
|
@@ -10045,7 +10048,6 @@ def validation_cmd(
|
|
|
10045
10048
|
help=_NO_CACHE_SUBCOMMAND_HELP,
|
|
10046
10049
|
),
|
|
10047
10050
|
progress_mode: Optional[str] = _progress_option(),
|
|
10048
|
-
jobs: Optional[int] = _jobs_option(),
|
|
10049
10051
|
) -> None:
|
|
10050
10052
|
"""Map request-body validation per endpoint (constraints + custom validators).
|
|
10051
10053
|
|
|
@@ -12173,6 +12175,7 @@ def spring_audit_cmd(
|
|
|
12173
12175
|
Path("."),
|
|
12174
12176
|
help="Repository path to audit (default: current directory)",
|
|
12175
12177
|
),
|
|
12178
|
+
jobs: Optional[int] = _jobs_option(),
|
|
12176
12179
|
output_path: Optional[Path] = typer.Option(
|
|
12177
12180
|
None, "--output", "-o",
|
|
12178
12181
|
help="Write output to a file instead of stdout.",
|
|
@@ -12304,7 +12307,6 @@ def spring_audit_cmd(
|
|
|
12304
12307
|
),
|
|
12305
12308
|
detach: bool = _detach_option(),
|
|
12306
12309
|
progress_mode: Optional[str] = _progress_option(),
|
|
12307
|
-
jobs: Optional[int] = _jobs_option(),
|
|
12308
12310
|
) -> None:
|
|
12309
12311
|
"""Spring semantic audit: {{RULE_SUMMARY}}.
|
|
12310
12312
|
|
|
@@ -13483,6 +13485,7 @@ def risk_cmd(
|
|
|
13483
13485
|
Path("."),
|
|
13484
13486
|
help="Repository path (default: current directory).",
|
|
13485
13487
|
),
|
|
13488
|
+
jobs: Optional[int] = _jobs_option(),
|
|
13486
13489
|
limit: int = typer.Option(
|
|
13487
13490
|
50, "--limit", help="How many composed risks to publish (highest first).", min=0,
|
|
13488
13491
|
),
|
|
@@ -13542,7 +13545,6 @@ def risk_cmd(
|
|
|
13542
13545
|
allow_partial: bool = _allow_partial_option(),
|
|
13543
13546
|
detach: bool = _detach_option(),
|
|
13544
13547
|
progress_mode: Optional[str] = _progress_option(),
|
|
13545
|
-
jobs: Optional[int] = _jobs_option(),
|
|
13546
13548
|
) -> None:
|
|
13547
13549
|
"""What each defect actually costs, once reach and access are in it.
|
|
13548
13550
|
|
|
@@ -14796,6 +14798,7 @@ def posture_cmd(
|
|
|
14796
14798
|
Path("."),
|
|
14797
14799
|
help="Repository path (default: current directory).",
|
|
14798
14800
|
),
|
|
14801
|
+
jobs: Optional[int] = _jobs_option(),
|
|
14799
14802
|
profile: Optional[str] = typer.Option(
|
|
14800
14803
|
None,
|
|
14801
14804
|
"--profile",
|
|
@@ -14877,7 +14880,6 @@ def posture_cmd(
|
|
|
14877
14880
|
format: str = _format_option(help="Output format: json or yaml."),
|
|
14878
14881
|
copy: bool = _copy_option(),
|
|
14879
14882
|
progress_mode: Optional[str] = _progress_option(),
|
|
14880
|
-
jobs: Optional[int] = _jobs_option(),
|
|
14881
14883
|
) -> None:
|
|
14882
14884
|
"""Which beans are wired under a profile set — and which cannot be decided.
|
|
14883
14885
|
|
|
@@ -15300,6 +15302,7 @@ def migrate_check_cmd(
|
|
|
15300
15302
|
Path("."),
|
|
15301
15303
|
help="Repository path to scan (default: current directory)",
|
|
15302
15304
|
),
|
|
15305
|
+
jobs: Optional[int] = _jobs_option(),
|
|
15303
15306
|
output_path: Optional[Path] = typer.Option(
|
|
15304
15307
|
None, "--output", "-o",
|
|
15305
15308
|
help="Write output to a file instead of stdout.",
|
|
@@ -15441,7 +15444,6 @@ def migrate_check_cmd(
|
|
|
15441
15444
|
),
|
|
15442
15445
|
detach: bool = _detach_option(),
|
|
15443
15446
|
progress_mode: Optional[str] = _progress_option(),
|
|
15444
|
-
jobs: Optional[int] = _jobs_option(),
|
|
15445
15447
|
) -> None:
|
|
15446
15448
|
"""Spring Boot 2→3 migration readiness + Java LTS/licensing inventory.
|
|
15447
15449
|
|
|
@@ -15847,6 +15849,7 @@ def impact_chain_cmd(
|
|
|
15847
15849
|
Path("."),
|
|
15848
15850
|
help="Repository root (default: current directory)",
|
|
15849
15851
|
),
|
|
15852
|
+
jobs: Optional[int] = _jobs_option(),
|
|
15850
15853
|
depth: int = typer.Option(
|
|
15851
15854
|
4,
|
|
15852
15855
|
"--depth",
|
|
@@ -15886,7 +15889,6 @@ def impact_chain_cmd(
|
|
|
15886
15889
|
),
|
|
15887
15890
|
),
|
|
15888
15891
|
progress_mode: Optional[str] = _progress_option(),
|
|
15889
|
-
jobs: Optional[int] = _jobs_option(),
|
|
15890
15892
|
) -> None:
|
|
15891
15893
|
"""Spring impact-chain: systemic blast radius of a symbol; TX/SEC findings are opt-in.
|
|
15892
15894
|
|