sourcecode 5.9.18__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.18 → sourcecode-5.9.22}/CHANGELOG.md +61 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/PKG-INFO +19 -10
- {sourcecode-5.9.18 → sourcecode-5.9.22}/README.md +18 -9
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-31-REMEDIATION-5.9.18.md +10 -1
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/DEFECT-LEDGER.md +4 -2
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/DEVELOPMENT-ROADMAP.md +37 -2
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/EXECUTIVE-ROADMAP.md +1 -1
- sourcecode-5.9.22/docs/RD-JVM-ASK-TRIAGE-2026-08-31.md +78 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/USER_GUIDE.md +13 -8
- {sourcecode-5.9.18 → 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.18 → sourcecode-5.9.22}/pyproject.toml +1 -1
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/canonical_ir.py +11 -4
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/cli.py +13 -11
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/context_graph.py +24 -18
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/git_checkout.py +8 -1
- sourcecode-5.9.22/src/sourcecode/jvm_inventory.py +294 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/migrate_check.py +7 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/parallel.py +3 -11
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/release_info.py +1 -1
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/repository_ir.py +93 -20
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/risk.py +3 -2
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/schema_registry.py +2 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/.github/workflows/windows-battery.yml +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/.github/workflows/windows-regression.yml +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/.gitignore +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/.ruff.toml +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/CLAUDE.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/CODE_OF_CONDUCT.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/CONTRIBUTING.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/LICENSE +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/NOTICE +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/SECURITY.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-28-EXTERNAL-5.9.10.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.16.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.17.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/CACHE.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/MANUAL-USUARIO.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/PRODUCT-ROUTE.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/RELEASE-VERIFICATION.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/DESIGN-assessment-report.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/DESIGN-pack-manifest.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/overview.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/contracts.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/licensing-schema.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/pack-gate-github-actions.yml +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/pack-gate-gitlab.yml +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/README.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/perf/corpus-testing-2026-08-22.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/posture.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/privacy.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/schema.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/hatch_build.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/scripts/context_cost_harness.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/scripts/perf_gate.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/scripts/perf_harness.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/scripts/test_fast.sh +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/scripts/windows_reliability_matrix.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/__main__.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/access_drift.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/analysis_budget.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/answer_bounds.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/audit_clusters.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/audit_recipe.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/audit_report.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/audit_since.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/audit_verify.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/baseline_attestation.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/breaking_changes.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/build_modules.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/build_stamp.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/c4_render.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/cache.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/cache_model.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/cache_observation.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/ci_output.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/classifier.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/click_runtime.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/cve_feed.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/cve_reachability.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/defect_classes/__init__.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/defect_classes/registry.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/empty_reach.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/endpoint_disposition.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/explain_endpoint.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/field_deprecations.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/findings_baseline.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/functional_routes.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/github_diff.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/intent_router.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/license.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/manifest_cache.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/migration_apply.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/output_bounds.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/output_ceiling.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/output_sink.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/pack_manifest.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/packs.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/parse_cache.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/path_display.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/phased_run.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/posture.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/pr_risk.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/product_info.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/progress.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/regress.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/regulatory_pack.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/remediation_diff.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/remediation_flow.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/remediation_report.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/resource_budget.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/risk_model.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/sarif_emit.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/schema_producers.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/selection_contract.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/self_audit.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/selftest.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/timeline_cache.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/vex.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/watch_loop.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/wired_surface.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/supabase/functions/README.md +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.9.18 → sourcecode-5.9.22}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -1,5 +1,66 @@
|
|
|
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
|
+
|
|
51
|
+
## [5.9.19] — 2026-08-31
|
|
52
|
+
|
|
53
|
+
*Critical `pack gate --since` compatibility correction.*
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
|
|
57
|
+
- Git-ref materialization now extracts tar members compatibly on Python 3.9–3.11 while retaining `filter="data"` on Python 3.12+.
|
|
58
|
+
- Added regression coverage for the legacy and current tarfile APIs and strengthened the pack stderr forwarding assertion.
|
|
59
|
+
|
|
60
|
+
### Verification Boundary
|
|
61
|
+
|
|
62
|
+
- Focused pack, ref-materialization and output-contract tests pass. Native Windows repetition remains required for the broader `AUD-621` reliability findings.
|
|
63
|
+
|
|
3
64
|
## [5.9.18] — 2026-08-31
|
|
4
65
|
|
|
5
66
|
*Windows reliability remediation follow-up.*
|
|
@@ -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
|
|
@@ -221,6 +221,12 @@ there. Use `ask cache model <repo>`, `--progress stderr`, `audit-report
|
|
|
221
221
|
[current reliability queue](docs/DEVELOPMENT-ROADMAP.md#external-audit-intake--aud-616-re-audit-release-5910)
|
|
222
222
|
before treating a historical timing or bounded flag as a current guarantee.
|
|
223
223
|
|
|
224
|
+
A post-remediation re-audit of `5.9.18` also found a separate `pack gate --since`
|
|
225
|
+
regression on Windows: the git-ref materialization path could resolve to Python
|
|
226
|
+
3.10 and fail in `tarfile` before the stderr-forwarding fix mattered. Release
|
|
227
|
+
`5.9.19` adds the version-compatible extraction path; native Windows repetition
|
|
228
|
+
is still required before treating `pack gate` as production CI evidence.
|
|
229
|
+
|
|
224
230
|
**CI delivery and workspace licensing.** `migrate-check --format sarif` emits
|
|
225
231
|
ASK-owned migration findings with source locations and provenance; it does not
|
|
226
232
|
re-emit imported scanner findings. `ask auth workspace <repo>...` previews the
|
|
@@ -236,11 +242,14 @@ entitlement errors in CI and does not change per-repository gates or billing.
|
|
|
236
242
|
|
|
237
243
|
Release 5.9.17 also carries the boundary-contract hardening: missing consumer repositories,
|
|
238
244
|
malformed CVE feeds and unresolved `pack gate --since` refs fail as structured
|
|
239
|
-
input errors; duplicate same-commit baselines are never overwritten.
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
245
|
+
input errors; duplicate same-commit baselines are never overwritten. That
|
|
246
|
+
contract is still not enough to make `pack gate` CI-safe on Windows, because the
|
|
247
|
+
materialization path can still hit a Python 3.10 tarfile mismatch in mixed
|
|
248
|
+
environments. `posture --diff` validates unknown profiles when the repository
|
|
249
|
+
declares profiles. In `endpoints --compact`, an empty `endpoints` list is
|
|
250
|
+
explicitly marked as an intentional omission, not an empty API; unresolved
|
|
251
|
+
`impact` and `impact-chain` queries exit non-zero, including on repositories
|
|
252
|
+
without Java sources.
|
|
244
253
|
|
|
245
254
|
**What a warm actually covers.** `ask cache warm` rebuilds the declared root views and their
|
|
246
255
|
shared structural layers (L1/L2 + the Repository Intelligence Snapshot + the shared Canonical
|
|
@@ -267,11 +276,11 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
267
276
|
# pip / pipx
|
|
268
277
|
pipx install sourcecode # or: pip install sourcecode
|
|
269
278
|
|
|
270
|
-
ask version # ask 5.9.
|
|
279
|
+
ask version # ask 5.9.22 — and, on a build that has aged,
|
|
271
280
|
# how many releases have probably shipped since
|
|
272
281
|
```
|
|
273
282
|
|
|
274
|
-
> **Package vs. command.** The install package is named `sourcecode` this release
|
|
283
|
+
> **Package vs. command.** The install package is named `sourcecode` in this release
|
|
275
284
|
> (renaming the distribution is a separate, breaking change). Installing it gives you the
|
|
276
285
|
> canonical **`ask`** command plus the deprecated **`sourcecode`** alias.
|
|
277
286
|
|
|
@@ -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
|
|
@@ -172,6 +172,12 @@ there. Use `ask cache model <repo>`, `--progress stderr`, `audit-report
|
|
|
172
172
|
[current reliability queue](docs/DEVELOPMENT-ROADMAP.md#external-audit-intake--aud-616-re-audit-release-5910)
|
|
173
173
|
before treating a historical timing or bounded flag as a current guarantee.
|
|
174
174
|
|
|
175
|
+
A post-remediation re-audit of `5.9.18` also found a separate `pack gate --since`
|
|
176
|
+
regression on Windows: the git-ref materialization path could resolve to Python
|
|
177
|
+
3.10 and fail in `tarfile` before the stderr-forwarding fix mattered. Release
|
|
178
|
+
`5.9.19` adds the version-compatible extraction path; native Windows repetition
|
|
179
|
+
is still required before treating `pack gate` as production CI evidence.
|
|
180
|
+
|
|
175
181
|
**CI delivery and workspace licensing.** `migrate-check --format sarif` emits
|
|
176
182
|
ASK-owned migration findings with source locations and provenance; it does not
|
|
177
183
|
re-emit imported scanner findings. `ask auth workspace <repo>...` previews the
|
|
@@ -187,11 +193,14 @@ entitlement errors in CI and does not change per-repository gates or billing.
|
|
|
187
193
|
|
|
188
194
|
Release 5.9.17 also carries the boundary-contract hardening: missing consumer repositories,
|
|
189
195
|
malformed CVE feeds and unresolved `pack gate --since` refs fail as structured
|
|
190
|
-
input errors; duplicate same-commit baselines are never overwritten.
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
196
|
+
input errors; duplicate same-commit baselines are never overwritten. That
|
|
197
|
+
contract is still not enough to make `pack gate` CI-safe on Windows, because the
|
|
198
|
+
materialization path can still hit a Python 3.10 tarfile mismatch in mixed
|
|
199
|
+
environments. `posture --diff` validates unknown profiles when the repository
|
|
200
|
+
declares profiles. In `endpoints --compact`, an empty `endpoints` list is
|
|
201
|
+
explicitly marked as an intentional omission, not an empty API; unresolved
|
|
202
|
+
`impact` and `impact-chain` queries exit non-zero, including on repositories
|
|
203
|
+
without Java sources.
|
|
195
204
|
|
|
196
205
|
**What a warm actually covers.** `ask cache warm` rebuilds the declared root views and their
|
|
197
206
|
shared structural layers (L1/L2 + the Repository Intelligence Snapshot + the shared Canonical
|
|
@@ -218,11 +227,11 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
218
227
|
# pip / pipx
|
|
219
228
|
pipx install sourcecode # or: pip install sourcecode
|
|
220
229
|
|
|
221
|
-
ask version # ask 5.9.
|
|
230
|
+
ask version # ask 5.9.22 — and, on a build that has aged,
|
|
222
231
|
# how many releases have probably shipped since
|
|
223
232
|
```
|
|
224
233
|
|
|
225
|
-
> **Package vs. command.** The install package is named `sourcecode` this release
|
|
234
|
+
> **Package vs. command.** The install package is named `sourcecode` in this release
|
|
226
235
|
> (renaming the distribution is a separate, breaking change). Installing it gives you the
|
|
227
236
|
> canonical **`ask`** command plus the deprecated **`sourcecode`** alias.
|
|
228
237
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
| Finding | Change | Evidence in this checkout |
|
|
9
9
|
|---|---|---|
|
|
10
|
-
| `AUD-621-PACK-STDERR` | Pack child stderr uses UTF-8 with replacement; the forwarding loop cannot terminate on a decode exception. | Pack progress and manifest tests pass; a regression test asserts the subprocess decoding contract. |
|
|
10
|
+
| `AUD-621-PACK-STDERR` | Pack child stderr uses UTF-8 with replacement; the forwarding loop cannot terminate on a decode exception. | Pack progress and manifest tests pass; a regression test asserts the subprocess decoding contract. This fixes one failure mode only. |
|
|
11
11
|
| `AUD-621-R` | Windows parse-worker construction is forbidden, backing up the existing sequential fallback. | Parallel Windows-contract tests pass; the six-command reliability matrix completes on the engineering host. |
|
|
12
12
|
| Validation regression found during verification | Expected `typer.Exit` validation exits bypass the analysis-failure wrapper. | `risk` and `audit-report` invalid-profile regressions pass with `INVALID_INPUT` and exit 2. |
|
|
13
13
|
|
|
@@ -18,3 +18,12 @@
|
|
|
18
18
|
- `AUD-621-CONTEXT`: phase profile and intermediate-size benchmark before a performance claim for the 24,073-file corpus.
|
|
19
19
|
|
|
20
20
|
Release `5.9.18` is therefore suitable only for bounded, supervised use until those gates are met.
|
|
21
|
+
|
|
22
|
+
## Post-remediation regression
|
|
23
|
+
|
|
24
|
+
A 2026-08-31 re-audit found a separate `pack gate --since` failure that is not the
|
|
25
|
+
stderr-forwarding bug above: the git-ref materialization path can execute under
|
|
26
|
+
Python 3.10 and raise `TypeError: TarFile.extract() got an unexpected keyword
|
|
27
|
+
argument 'filter'` when `tarfile` is called with `filter="data"`. That makes the
|
|
28
|
+
pack path unsafe in mixed-Python Windows environments until the interpreter is
|
|
29
|
+
pinned and the tar extraction call is version-guarded.
|
|
@@ -16,7 +16,7 @@ The facts these rows are keyed to are published: `ask schema facts-v1` prints th
|
|
|
16
16
|
|
|
17
17
|
## Current Synchronization — External Audit `AUD-621`
|
|
18
18
|
|
|
19
|
-
**Release `5.9.
|
|
19
|
+
**Release `5.9.19` remediation.** The stderr-decoding fix for `AUD-621-PACK-STDERR` remains in code, and the distinct `pack gate --since` crash found by the post-remediation re-audit is corrected with a Python 3.9–3.11-compatible tar extraction path. `AUD-621-R` has a second Windows barrier at process-pool construction, complementing the sequential fallback. The broader findings remain open until their required native Windows evidence is recorded; `AUD-621-CONTEXT` and `AUD-621-WIN-PROC` are unchanged.
|
|
20
20
|
|
|
21
21
|
**Re-audit of release `5.9.17`, received 2026-08-31.** Four independent
|
|
22
22
|
Windows measurements overturn the apparent partial recovery of the shared
|
|
@@ -31,7 +31,9 @@ The audit also isolates a new, high-confidence Windows defect in `pack gate`:
|
|
|
31
31
|
the `_forward_stderr` thread decodes child output using the active codepage,
|
|
32
32
|
raises `UnicodeDecodeError` on UTF-8 bytes, then stops draining the pipe. The
|
|
33
33
|
child can block once that pipe fills. Two independent forks captured the same
|
|
34
|
-
traceback.
|
|
34
|
+
traceback. A separate re-audit then found that `pack gate --since` can still
|
|
35
|
+
fail earlier in `git_checkout.py` under Python 3.10, so the stderr fix is
|
|
36
|
+
necessary but not sufficient. The full evidence is
|
|
35
37
|
[`AUDIT-2026-08-31-EXTERNAL-5.9.17.md`](AUDIT-2026-08-31-EXTERNAL-5.9.17.md).
|
|
36
38
|
|
|
37
39
|
| ID | Severity | Status | Evidence and required closure |
|
|
@@ -1,11 +1,46 @@
|
|
|
1
1
|
# ASK — Development Roadmap
|
|
2
2
|
|
|
3
|
-
### Release 5.9.
|
|
3
|
+
### Release 5.9.20 — JVM evidence inventory
|
|
4
4
|
|
|
5
|
-
|
|
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
|
+
|
|
23
|
+
### Release 5.9.19 — `AUD-621` remediation
|
|
24
|
+
|
|
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
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
> `pack assessment` and `pack gate`, and make evidence and safe change the
|
|
6
6
|
> product surface. This roadmap must not introduce a competing product thesis.
|
|
7
7
|
|
|
8
|
-
> **CURRENT UPDATE — release `5.9.
|
|
8
|
+
> **CURRENT UPDATE — release `5.9.19`, remediation.** Windows parse workers are now forbidden at their construction point, `pack gate` drains UTF-8 child stderr safely, and `pack gate --since` extracts git refs compatibly on Python 3.9–3.14. Expected validation exits remain typed input errors. These are code fixes, not native-Windows closure evidence: keep bounded pilots until the required repetition and process-lifecycle measurements complete.
|
|
9
9
|
|
|
10
10
|
> **CURRENT UPDATE — release `5.9.17`, external re-audit.** The restored command
|
|
11
11
|
> surface and prior validation fixes remain stable, but the shared Windows worker
|
|
@@ -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.
|
|
@@ -46,16 +46,18 @@ CLI commands — impact, endpoints, spring-audit, explain, … each a pro
|
|
|
46
46
|
The key idea: the extraction is **content-addressed**. Commands reuse the parse cache and,
|
|
47
47
|
where their analysed scope matches, the shared Canonical IR; `ask cache model` names what a
|
|
48
48
|
warm buys for each command rather than implying that every projection costs the same. In
|
|
49
|
-
5.9.
|
|
49
|
+
5.9.19, `validation` enters through that shared CIR and `data-exposure` reuses one semantic
|
|
50
50
|
model across all declared label seeds. (The extraction and consumption contract is fixed in
|
|
51
51
|
the architecture ADRs 0001–0004 under `docs/architecture/`.)
|
|
52
52
|
|
|
53
53
|
The current external pack audit intake is tracked in
|
|
54
54
|
[`AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md`](AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md);
|
|
55
|
-
the two pack fixes
|
|
56
|
-
|
|
55
|
+
the two pack fixes were tracked in release 5.9.18 as intended changes, and
|
|
56
|
+
release 5.9.19 adds the tarfile compatibility correction found by the later
|
|
57
|
+
re-audit. Release-artifact verification remains for detached execution and pack
|
|
58
|
+
evidence, and native Windows reliability evidence is still required.
|
|
57
59
|
|
|
58
|
-
### Reliability contracts in 5.9.
|
|
60
|
+
### Reliability contracts in 5.9.19
|
|
59
61
|
|
|
60
62
|
**Failures must be visible.** `risk`, `verify`, `audit-report` and
|
|
61
63
|
`migrate-check` turn unexpected analysis failures into structured
|
|
@@ -67,8 +69,11 @@ closing platform-specific findings.
|
|
|
67
69
|
**Current Windows limitation.** The `5.9.17` external audit reproduced the
|
|
68
70
|
shared worker-start failure in `risk`, `verify`, `audit-report`, `spring-audit`,
|
|
69
71
|
`migrate-check` and `migrate-apply`. Do not use these commands as a production
|
|
70
|
-
CI gate on Windows until the native matrix closes them.
|
|
71
|
-
|
|
72
|
+
CI gate on Windows until the native matrix closes them. A 2026-08-31 re-audit
|
|
73
|
+
also found a separate `pack gate --since` crash in the git-ref materialization
|
|
74
|
+
path when the subprocess resolves to Python 3.10 and hits the Python 3.12-only
|
|
75
|
+
`TarFile.extract(..., filter="data")` API. Release 5.9.19 adds a compatible
|
|
76
|
+
fallback; the command still requires native repeat evidence. See the
|
|
72
77
|
[development roadmap](DEVELOPMENT-ROADMAP.md#external-audit-intake--aud-621-re-audit-release-5917).
|
|
73
78
|
|
|
74
79
|
**A deadline the root analysis honours.** `ASK_MAX_ANALYSIS_SECONDS=<seconds>` now
|
|
@@ -274,7 +279,7 @@ pipx install sourcecode # isolated install, no venv needed
|
|
|
274
279
|
|
|
275
280
|
# Verify
|
|
276
281
|
ask version
|
|
277
|
-
# ask 5.9.
|
|
282
|
+
# ask 5.9.19
|
|
278
283
|
```
|
|
279
284
|
|
|
280
285
|
Requires Python 3.9+.
|
|
@@ -327,7 +332,7 @@ value in field use, and they are the ones to learn first:
|
|
|
327
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. |
|
|
328
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. |
|
|
329
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. |
|
|
330
|
-
| `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. |
|
|
331
336
|
|
|
332
337
|
Everything else is either a projection of the same model (`impact`, `export`, `explain`) or an
|
|
333
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"})
|