sourcecode 5.9.0__tar.gz → 5.9.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sourcecode-5.9.0 → sourcecode-5.9.1}/CHANGELOG.md +25 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/PKG-INFO +5 -5
- {sourcecode-5.9.0 → sourcecode-5.9.1}/README.md +4 -4
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +7 -0
- sourcecode-5.9.1/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +98 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/DEFECT-LEDGER.md +17 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/DEVELOPMENT-ROADMAP.md +15 -1
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/EXECUTIVE-ROADMAP.md +12 -1
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/USER_GUIDE.md +3 -3
- {sourcecode-5.9.0 → sourcecode-5.9.1}/pyproject.toml +1 -1
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/cli.py +65 -16
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/cve_reachability.py +27 -1
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/output_bounds.py +34 -8
- {sourcecode-5.9.0 → sourcecode-5.9.1}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/.github/workflows/windows-battery.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/.gitignore +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/.ruff.toml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/CLAUDE.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/CODE_OF_CONDUCT.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/CONTRIBUTING.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/LICENSE +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/NOTICE +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/SECURITY.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/CACHE.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/MANUAL-USUARIO.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/PRODUCT-ROUTE.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/DESIGN-assessment-report.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/DESIGN-pack-manifest.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/overview.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/contracts.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/licensing-schema.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/migrate-check.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/pack-gate-github-actions.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/pack-gate-gitlab.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/README.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/perf/corpus-testing-2026-08-22.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/posture.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/privacy.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/schema.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/hatch_build.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/scripts/perf_gate.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/scripts/perf_harness.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/scripts/test_fast.sh +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/__main__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/access_drift.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/analysis_budget.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/answer_bounds.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/audit_clusters.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/audit_recipe.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/audit_report.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/audit_since.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/breaking_changes.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/build_modules.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/build_stamp.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/c4_render.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/cache.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/cache_model.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/cache_observation.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/ci_output.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/classifier.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/context_graph.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/cve_feed.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/defect_classes/__init__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/defect_classes/registry.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/empty_reach.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/endpoint_disposition.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/explain_endpoint.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/field_deprecations.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/findings_baseline.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/functional_routes.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/github_diff.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/intent_router.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/license.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/manifest_cache.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/migrate_check.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/migration_apply.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/output_ceiling.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/output_sink.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/pack_manifest.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/packs.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/parallel.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/parse_cache.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/path_display.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/phased_run.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/posture.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/pr_risk.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/product_info.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/progress.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/regress.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/release_info.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/remediation_diff.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/remediation_flow.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/repository_ir.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/resource_budget.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/risk.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/risk_model.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/sarif_emit.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/schema_producers.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/schema_registry.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/selection_contract.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/self_audit.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/selftest.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/timeline_cache.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/watch_loop.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/wired_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/supabase/functions/README.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.1}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.9.1] — 2026-08-26
|
|
4
|
+
|
|
5
|
+
*Audit correction and stress-validation patch release. The `AUD-608` fixes
|
|
6
|
+
from the `5.9.0` audit are shipped and documented; command contracts now
|
|
7
|
+
disclose their limits and failure boundaries.*
|
|
8
|
+
|
|
9
|
+
**Fixed**
|
|
10
|
+
|
|
11
|
+
- `cve` publishes that its dependency inventory comes from static manifests and
|
|
12
|
+
supported lockfiles, without implying Maven or Gradle graph resolution.
|
|
13
|
+
- `pr-risk --since` reports unreadable base refs as structured execution errors
|
|
14
|
+
instead of misleading `non_coverage`.
|
|
15
|
+
- `posture --diff --limit` bounds `permit_all` and effective-access evidence
|
|
16
|
+
maps while preserving unrelated `evidence` payloads.
|
|
17
|
+
- Seven new command helps state their command-level analysis and memory budget
|
|
18
|
+
applicability.
|
|
19
|
+
|
|
20
|
+
**Documentation and validation**
|
|
21
|
+
|
|
22
|
+
- README, roadmaps and defect ledger identify `5.9.1` as the current release;
|
|
23
|
+
the `5.9.0` audit remains historical evidence.
|
|
24
|
+
- Focused regression batteries pass for all four corrections. A representative
|
|
25
|
+
stress smoke test passed on seven repositories under
|
|
26
|
+
`Documents/workspace/testing` with isolated caches and clean stderr.
|
|
27
|
+
|
|
3
28
|
## [5.9.0] — 2026-08-26
|
|
4
29
|
|
|
5
30
|
*The `AUD-607` external round, closed: three defects fixed and the whole feature
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 5.9.
|
|
3
|
+
Version: 5.9.1
|
|
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
|
|
@@ -188,13 +188,13 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
|
|
|
188
188
|
answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
|
|
189
189
|
unset, or set it to `0`, to disable the ceiling explicitly.
|
|
190
190
|
|
|
191
|
-
**Current performance status.** Release 5.9.
|
|
191
|
+
**Current performance status.** Release 5.9.1 retains the shared Canonical IR
|
|
192
192
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
193
193
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
194
194
|
not duration promises. A controlled external warm-path audit has opened performance
|
|
195
195
|
and bounded-output regressions for this release; use `ask cache model <repo>` and
|
|
196
196
|
`--progress stderr` for supervised runs, and consult the
|
|
197
|
-
[latest external audit intake](docs/AUDIT-2026-08-26-EXTERNAL-5.
|
|
197
|
+
[latest external audit intake](docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md) before
|
|
198
198
|
treating a historical timing or bounded flag as a current guarantee.
|
|
199
199
|
|
|
200
200
|
**What a warm actually covers.** `ask cache warm` rebuilds the declared root views and their
|
|
@@ -222,7 +222,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
222
222
|
# pip / pipx
|
|
223
223
|
pipx install sourcecode # or: pip install sourcecode
|
|
224
224
|
|
|
225
|
-
ask version # ask 5.9.
|
|
225
|
+
ask version # ask 5.9.1 — and, on a build that has aged,
|
|
226
226
|
# how many releases have probably shipped since
|
|
227
227
|
```
|
|
228
228
|
|
|
@@ -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
|
|
@@ -139,13 +139,13 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
|
|
|
139
139
|
answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
|
|
140
140
|
unset, or set it to `0`, to disable the ceiling explicitly.
|
|
141
141
|
|
|
142
|
-
**Current performance status.** Release 5.9.
|
|
142
|
+
**Current performance status.** Release 5.9.1 retains the shared Canonical IR
|
|
143
143
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
144
144
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
145
145
|
not duration promises. A controlled external warm-path audit has opened performance
|
|
146
146
|
and bounded-output regressions for this release; use `ask cache model <repo>` and
|
|
147
147
|
`--progress stderr` for supervised runs, and consult the
|
|
148
|
-
[latest external audit intake](docs/AUDIT-2026-08-26-EXTERNAL-5.
|
|
148
|
+
[latest external audit intake](docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md) before
|
|
149
149
|
treating a historical timing or bounded flag as a current guarantee.
|
|
150
150
|
|
|
151
151
|
**What a warm actually covers.** `ask cache warm` rebuilds the declared root views and their
|
|
@@ -173,7 +173,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
173
173
|
# pip / pipx
|
|
174
174
|
pipx install sourcecode # or: pip install sourcecode
|
|
175
175
|
|
|
176
|
-
ask version # ask 5.9.
|
|
176
|
+
ask version # ask 5.9.1 — and, on a build that has aged,
|
|
177
177
|
# how many releases have probably shipped since
|
|
178
178
|
```
|
|
179
179
|
|
|
@@ -10,6 +10,13 @@ This note separates reproduced defects from unreproduced claims, inconclusive
|
|
|
10
10
|
measurements and feature intake, per the ledger's maintenance rule: no row is
|
|
11
11
|
closed from a report alone, and no row is dismissed from a report alone.
|
|
12
12
|
|
|
13
|
+
> **Historical snapshot.** The subsequent `5.9.0` reconciliation identified an
|
|
14
|
+
> effective-access payload shape not covered by this note's posture test, so
|
|
15
|
+
> its `AUD-607-O01` non-reproduction is superseded by `AUD-608-O01`. Its
|
|
16
|
+
> `cache warm` exit-143 observation was rejected after controlled runs found an
|
|
17
|
+
> external 120-second timeout. See
|
|
18
|
+
> [`AUDIT-2026-08-26-EXTERNAL-5.9.0.md`](AUDIT-2026-08-26-EXTERNAL-5.9.0.md).
|
|
19
|
+
|
|
13
20
|
## Executive Result
|
|
14
21
|
|
|
15
22
|
The reverification round confirms **five findings still closed on their third or
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# External Audit - 5.9.0
|
|
2
|
+
|
|
3
|
+
**Received:** 2026-08-26
|
|
4
|
+
**Audited revision:** `b4c3691c4110d863fedcd54a61a08fd2997e400c` (`5.9.0`)
|
|
5
|
+
**Method:** external findings reconciled against the released source tree
|
|
6
|
+
|
|
7
|
+
## Result
|
|
8
|
+
|
|
9
|
+
This is `AUD-608`. The report is not adopted verbatim: each item below records
|
|
10
|
+
the result of source-level reconciliation and the action justified by it.
|
|
11
|
+
|
|
12
|
+
## Confirmed defects
|
|
13
|
+
|
|
14
|
+
### AUD-608-C01 - `cve` does not disclose inventory coverage
|
|
15
|
+
|
|
16
|
+
**Priority:** P1
|
|
17
|
+
**Status:** closed in `fe1f624`
|
|
18
|
+
|
|
19
|
+
`ask cve` builds its inventory from static dependency analysis; it does not
|
|
20
|
+
resolve a Maven or Gradle dependency graph. A vulnerable transitive component
|
|
21
|
+
absent from that inventory can therefore be indistinguishable from no matching
|
|
22
|
+
advisory. Individual match records may contain scope, but the top-level result
|
|
23
|
+
and `--help` do not disclose the inventory coverage.
|
|
24
|
+
|
|
25
|
+
**Required correction:** publish inventory scope and non-coverage in output and
|
|
26
|
+
help; do not imply resolved transitive coverage without an explicitly declared
|
|
27
|
+
resolved-graph mode; add manifest-versus-resolved fixtures.
|
|
28
|
+
|
|
29
|
+
### AUD-608-P01 - `pr-risk --since` hides an execution error as non-coverage
|
|
30
|
+
|
|
31
|
+
**Priority:** P1
|
|
32
|
+
**Status:** closed in `b479465`
|
|
33
|
+
|
|
34
|
+
The `--since` path uses `ContextGraph` without importing it. A broad exception
|
|
35
|
+
handler turns the resulting `NameError` into `non_coverage`, then states that
|
|
36
|
+
the comparison was not requested. This is an execution failure, not an
|
|
37
|
+
analytical limitation.
|
|
38
|
+
|
|
39
|
+
**Required correction:** construct the base context correctly; return genuine
|
|
40
|
+
base-materialisation failures as structured errors; keep
|
|
41
|
+
`new_endpoints_basis` consistent with invocation and result; test both a valid
|
|
42
|
+
`--since` comparison and an unreadable base.
|
|
43
|
+
|
|
44
|
+
### AUD-608-O01 - effective-access branches bypass `posture --diff --limit`
|
|
45
|
+
|
|
46
|
+
**Priority:** P2
|
|
47
|
+
**Status:** closed in `5f8a50b`
|
|
48
|
+
|
|
49
|
+
`POSTURE_BOUNDED_LISTS` omits `permit_all`, while the shared helper bounds only
|
|
50
|
+
list values. Effective-access `evidence` is a dictionary and also bypasses the
|
|
51
|
+
cap. This is a real output-bounding gap in a diff shape absent from the earlier
|
|
52
|
+
reproduction.
|
|
53
|
+
|
|
54
|
+
**Required correction:** bound `permit_all` and bounded dictionaries, or
|
|
55
|
+
normalise them before the shared pass; exercise every list and map branch from
|
|
56
|
+
the public CLI; verify emitted bytes and estimated size fall under `--limit`.
|
|
57
|
+
|
|
58
|
+
## Carried documentation item
|
|
59
|
+
|
|
60
|
+
### AUD-607-U01 - new command help does not state budget-policy applicability
|
|
61
|
+
|
|
62
|
+
**Priority:** P3
|
|
63
|
+
**Status:** closed in `19811ac`
|
|
64
|
+
|
|
65
|
+
The helpers for `cve`, `drift`, `intent`, `pr-risk`, `remediate`,
|
|
66
|
+
`self-audit`, and `watch` expose generic ceilings but do not say whether
|
|
67
|
+
analysis or memory budgets apply. Help must state the applicable policy or
|
|
68
|
+
explicit non-applicability from the command registry.
|
|
69
|
+
|
|
70
|
+
## Rejected or follow-up observations
|
|
71
|
+
|
|
72
|
+
### AUD-607-U02 - `cache warm` exit 143
|
|
73
|
+
|
|
74
|
+
**Status:** not reproduced
|
|
75
|
+
|
|
76
|
+
The apparent failure was an external 120-second wrapper timeout. Controlled
|
|
77
|
+
runs with sufficient time completed successfully; no cache defect is tracked.
|
|
78
|
+
|
|
79
|
+
### AUD-608-C02 - UTF-8 mojibake reported for `chunk-file`
|
|
80
|
+
|
|
81
|
+
**Status:** external reproduction required
|
|
82
|
+
|
|
83
|
+
The released reader explicitly uses UTF-8 and serialises Unicode text; the
|
|
84
|
+
reported default-encoding cause is absent from source. Retain a platform/output
|
|
85
|
+
transport follow-up only until raw UTF-8 input and raw CLI output prove a
|
|
86
|
+
mismatch.
|
|
87
|
+
|
|
88
|
+
The cache-warm timing and compact empty-output reports are also rejected as
|
|
89
|
+
timeout artefacts after the audit's later controlled measurements.
|
|
90
|
+
|
|
91
|
+
## Reconciliation
|
|
92
|
+
|
|
93
|
+
- The audit revision is the current release revision, so these findings apply
|
|
94
|
+
to shipped `5.9.0` code.
|
|
95
|
+
- `AUD-608-O01` supersedes the earlier `AUD-607-O01` non-reproduction: the new
|
|
96
|
+
evidence identifies a previously untested effective-access payload shape.
|
|
97
|
+
- Previous closures remain closed unless a new public reproduction contradicts
|
|
98
|
+
them.
|
|
@@ -16,6 +16,23 @@ The facts these rows are keyed to are published: `ask schema facts-v1` prints th
|
|
|
16
16
|
|
|
17
17
|
## Current Synchronization
|
|
18
18
|
|
|
19
|
+
**External `5.9.0` audit received, 2026-08-26 - `AUD-608`; corrections shipped in `5.9.1`.** The audited
|
|
20
|
+
revision is the released `5.9.0` commit. The three confirmed corrections are
|
|
21
|
+
closed: `AUD-608-C01` (P1, `cve` now declares its static inventory scope,
|
|
22
|
+
`fe1f624`), `AUD-608-P01` (P1, `pr-risk --since` returns structured base-ref
|
|
23
|
+
errors, `b479465`), and `AUD-608-O01` (P2, `posture --diff --limit` bounds
|
|
24
|
+
`permit_all` plus effective-access evidence maps, `5f8a50b`). `AUD-607-U01`
|
|
25
|
+
is also closed (`19811ac`): the seven new command helps state budget-policy
|
|
26
|
+
non-applicability. `AUD-607-U02` is
|
|
27
|
+
withdrawn after controlled runs showed an external 120-second timeout;
|
|
28
|
+
`AUD-608-C02` (reported UTF-8 mojibake in `chunk-file`) remains a platform
|
|
29
|
+
reproduction follow-up because the released reader is explicitly UTF-8.
|
|
30
|
+
|
|
31
|
+
The new effective-access evidence supersedes the prior `AUD-607-O01`
|
|
32
|
+
non-reproduction: that check did not exercise the payload shape now identified.
|
|
33
|
+
Historical records below remain snapshots. Full evidence is in
|
|
34
|
+
[`AUDIT-2026-08-26-EXTERNAL-5.9.0.md`](AUDIT-2026-08-26-EXTERNAL-5.9.0.md).
|
|
35
|
+
|
|
19
36
|
**External `5.8.32` audit received, 2026-08-26 — `AUD-607`.** Two independent
|
|
20
37
|
reports ([`AUDIT-2026-08-26-EXTERNAL-5.8.32.md`](AUDIT-2026-08-26-EXTERNAL-5.8.32.md)):
|
|
21
38
|
a reverification round (9.7/10) and a comparison round against `5.8.31` (8/10).
|
|
@@ -3,7 +3,21 @@
|
|
|
3
3
|
*Chief-engineer development record. This is the internal, dev-facing counterpart to the
|
|
4
4
|
customer-facing `docs/EXECUTIVE-ROADMAP.md`.*
|
|
5
5
|
|
|
6
|
-
> **CURRENT QUEUE — release `5.9.
|
|
6
|
+
> **CURRENT QUEUE — release `5.9.1`; external reconciliation `AUD-608` is implemented.**
|
|
7
|
+
> `AUD-608-C01` is closed in `fe1f624`: `cve` declares static
|
|
8
|
+
> dependency-inventory coverage and non-coverage. `AUD-608-P01` is closed in
|
|
9
|
+
> `b479465`: `pr-risk --since` constructs its base context and surfaces failures
|
|
10
|
+
> as structured errors. `AUD-608-O01` is closed in `5f8a50b`: all
|
|
11
|
+
> effective-access branches in `posture --diff` are bounded and covered by
|
|
12
|
+
> byte-size tests. `AUD-607-U01` is closed in `19811ac`: seven command helps
|
|
13
|
+
> state analysis and memory budget non-applicability. `AUD-607-U02` is closed as a
|
|
14
|
+
> 120-second external timeout artefact. The reported `chunk-file` mojibake is
|
|
15
|
+
> follow-up only until a raw platform reproduction proves a Unicode mismatch.
|
|
16
|
+
> The earlier `AUD-607-O01` non-reproduction did not cover the newly identified
|
|
17
|
+
> effective-access shape and is superseded. Full evidence is in
|
|
18
|
+
> [`AUDIT-2026-08-26-EXTERNAL-5.9.0.md`](AUDIT-2026-08-26-EXTERNAL-5.9.0.md).
|
|
19
|
+
|
|
20
|
+
> **Historical queue — release `5.9.0`, following two external audits of `5.8.32`, received 2026-08-26 (`AUD-607`).**
|
|
7
21
|
> A reverification round (9.7/10) and a comparison round against `5.8.31` (8/10). **No regression reported by either round**;
|
|
8
22
|
> six previously closed findings hold on their third or fourth consecutive re-check.
|
|
9
23
|
> `AUD-607-C01` (P1, `chunk-file` chunk content did not match its own declared `start_line`/`end_line`; reproduction found
|
|
@@ -5,7 +5,18 @@
|
|
|
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
|
|
8
|
+
> **CURRENT UPDATE — release `5.9.1`, following the external `5.9.0` reconciliation (`AUD-608`).**
|
|
9
|
+
> Three defects confirmed in the shipped release are closed: `cve` now
|
|
10
|
+
> discloses its static inventory (`fe1f624`), `pr-risk --since` returns a
|
|
11
|
+
> structured error for unreadable base context (`b479465`), and
|
|
12
|
+
> `posture --diff --limit` bounds effective-access lists and maps (`5f8a50b`).
|
|
13
|
+
> The seven new command helps now state analysis and memory budget
|
|
14
|
+
> non-applicability (`19811ac`). The reported `cache warm` exit-143 was an external
|
|
15
|
+
> 120-second timeout, not a product regression. The prior posture
|
|
16
|
+
> non-reproduction did not cover the payload shape now identified. Details are
|
|
17
|
+
> in [`AUDIT-2026-08-26-EXTERNAL-5.9.0.md`](AUDIT-2026-08-26-EXTERNAL-5.9.0.md).
|
|
18
|
+
|
|
19
|
+
> **HISTORICAL STATUS — release `5.9.0`, following two external audits of `5.8.32`, 2026-08-26.** Two
|
|
9
20
|
> independent rounds scored the release **9.7/10** (reverification) and **8/10** (comparison against
|
|
10
21
|
> `5.8.31`). **Neither round reported a regression**, and both maintained the same commercial
|
|
11
22
|
> position: buy, at `$30-50` per developer per month. Six previously reported findings are confirmed
|
|
@@ -46,13 +46,13 @@ 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.1, `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 are included in release 5.9.
|
|
55
|
+
the two pack fixes are included in release 5.9.1, with release-artifact verification
|
|
56
56
|
remaining for detached execution and pack evidence.
|
|
57
57
|
|
|
58
58
|
---
|
|
@@ -206,7 +206,7 @@ pipx install sourcecode # isolated install, no venv needed
|
|
|
206
206
|
|
|
207
207
|
# Verify
|
|
208
208
|
ask version
|
|
209
|
-
# ask 5.9.
|
|
209
|
+
# ask 5.9.1
|
|
210
210
|
```
|
|
211
211
|
|
|
212
212
|
Requires Python 3.9+.
|
|
@@ -826,6 +826,31 @@ from sourcecode.analysis_budget import ( # noqa: E402
|
|
|
826
826
|
)
|
|
827
827
|
|
|
828
828
|
|
|
829
|
+
def _command_budget_help(command: str) -> Callable[[Callable[..., Any]], Callable[..., Any]]:
|
|
830
|
+
"""Append the command-level budget contract derived from the shared registry."""
|
|
831
|
+
from sourcecode.analysis_budget import budget_registry_name
|
|
832
|
+
|
|
833
|
+
if budget_registry_name(command) is not None:
|
|
834
|
+
policy = (
|
|
835
|
+
"\n\b\nBudget policy: this command is registered for "
|
|
836
|
+
"`ASK_MAX_ANALYSIS_SECONDS`; its result publishes the applicable "
|
|
837
|
+
"analysis-budget and memory contract."
|
|
838
|
+
)
|
|
839
|
+
else:
|
|
840
|
+
policy = (
|
|
841
|
+
"\n\b\nBudget policy: this command does not consume "
|
|
842
|
+
"`ASK_MAX_ANALYSIS_SECONDS` and does not create a command-level "
|
|
843
|
+
"`ASK_MAX_RSS_MB` enforcement scope. A delegated analysis, if any, "
|
|
844
|
+
"publishes its own budget contract."
|
|
845
|
+
)
|
|
846
|
+
|
|
847
|
+
def decorate(command_fn: Callable[..., Any]) -> Callable[..., Any]:
|
|
848
|
+
command_fn.__doc__ = (command_fn.__doc__ or "") + policy
|
|
849
|
+
return command_fn
|
|
850
|
+
|
|
851
|
+
return decorate
|
|
852
|
+
|
|
853
|
+
|
|
829
854
|
def _build_help_text(scope: "Optional[Any]" = None) -> str:
|
|
830
855
|
"""Build --help text dynamically based on current license state."""
|
|
831
856
|
try:
|
|
@@ -14508,7 +14533,12 @@ def posture_cmd(
|
|
|
14508
14533
|
# answered in — a `--diff` carries a bean list per profile set and a
|
|
14509
14534
|
# `--diff-ref` one per ref, so the bound has to reach every depth or the
|
|
14510
14535
|
# caller believes they bounded something they did not.
|
|
14511
|
-
from sourcecode.output_bounds import
|
|
14536
|
+
from sourcecode.output_bounds import (
|
|
14537
|
+
POSTURE_BOUNDED_LISTS,
|
|
14538
|
+
POSTURE_BOUNDED_MAPS,
|
|
14539
|
+
bound_lists,
|
|
14540
|
+
resolve_limit,
|
|
14541
|
+
)
|
|
14512
14542
|
|
|
14513
14543
|
_posture_limit = resolve_limit(limit, compact)
|
|
14514
14544
|
# B-8 / AUD-592-B01. A compact answer must retain one actionable unresolved
|
|
@@ -14518,6 +14548,7 @@ def posture_cmd(
|
|
|
14518
14548
|
_posture_limit = 1 if data.get("summary", {}).get("unresolved", 0) else 0
|
|
14519
14549
|
bound_lists(
|
|
14520
14550
|
data, POSTURE_BOUNDED_LISTS, _posture_limit,
|
|
14551
|
+
map_keys=POSTURE_BOUNDED_MAPS,
|
|
14521
14552
|
# `--compact` is a size contract for agent output. The monotone
|
|
14522
14553
|
# optimisation may keep a list whole when its disclosure costs more
|
|
14523
14554
|
# than that individual cut, leaving a large diff above the ceiling.
|
|
@@ -16543,6 +16574,7 @@ def _audit_population_for(root: "Path", *, progress: "Any" = None):
|
|
|
16543
16574
|
# ── self-audit (what this build can say about itself, and what it cannot) ────
|
|
16544
16575
|
|
|
16545
16576
|
@app.command("self-audit")
|
|
16577
|
+
@_command_budget_help("self-audit")
|
|
16546
16578
|
def self_audit_cmd(
|
|
16547
16579
|
fail_on: Optional[str] = typer.Option(
|
|
16548
16580
|
None, "--fail-on",
|
|
@@ -16619,6 +16651,7 @@ def self_audit_cmd(
|
|
|
16619
16651
|
# ── drift (what changed in the effective access, and when) ───────────────────
|
|
16620
16652
|
|
|
16621
16653
|
@app.command("drift")
|
|
16654
|
+
@_command_budget_help("drift")
|
|
16622
16655
|
def drift_cmd(
|
|
16623
16656
|
path: Path = typer.Argument(Path("."), help="Repository path (default: current directory)"),
|
|
16624
16657
|
profile: Optional[str] = typer.Option(
|
|
@@ -16759,6 +16792,7 @@ def drift_cmd(
|
|
|
16759
16792
|
# ── watch (re-answer only what changed, while you are still editing) ─────────
|
|
16760
16793
|
|
|
16761
16794
|
@app.command("watch")
|
|
16795
|
+
@_command_budget_help("watch")
|
|
16762
16796
|
def watch_cmd(
|
|
16763
16797
|
path: Path = typer.Argument(Path("."), help="Repository path (default: current directory)"),
|
|
16764
16798
|
once: bool = typer.Option(
|
|
@@ -16858,6 +16892,7 @@ def watch_cmd(
|
|
|
16858
16892
|
# ── pr-risk (the risk of THIS change, not the state of the repository) ───────
|
|
16859
16893
|
|
|
16860
16894
|
@app.command("pr-risk")
|
|
16895
|
+
@_command_budget_help("pr-risk")
|
|
16861
16896
|
def pr_risk_cmd(
|
|
16862
16897
|
path: Path = typer.Argument(Path("."), help="Repository path (default: current directory)"),
|
|
16863
16898
|
files: Optional[str] = typer.Option(
|
|
@@ -16901,6 +16936,7 @@ def pr_risk_cmd(
|
|
|
16901
16936
|
ask pr-risk . --files changed.txt --since origin/main --fail-on block
|
|
16902
16937
|
"""
|
|
16903
16938
|
from sourcecode.pr_risk import assess, VERDICT_BLOCK, VERDICT_REVIEW, VERDICT_UNKNOWN
|
|
16939
|
+
from sourcecode.context_graph import ContextGraph
|
|
16904
16940
|
from sourcecode.repository_ir import find_java_files
|
|
16905
16941
|
from sourcecode.spring_model import SpringSemanticModel
|
|
16906
16942
|
|
|
@@ -16939,7 +16975,7 @@ def pr_risk_cmd(
|
|
|
16939
16975
|
base_routes = None
|
|
16940
16976
|
if since:
|
|
16941
16977
|
_prog.start(f"differencing routes against {since}")
|
|
16942
|
-
from sourcecode.git_checkout import materialize_ref
|
|
16978
|
+
from sourcecode.git_checkout import RefError, materialize_ref
|
|
16943
16979
|
from sourcecode.pr_risk import _routes_of
|
|
16944
16980
|
|
|
16945
16981
|
try:
|
|
@@ -16947,14 +16983,24 @@ def pr_risk_cmd(
|
|
|
16947
16983
|
base_files = find_java_files(base_tree)
|
|
16948
16984
|
base_cir = ContextGraph.build(base_files, base_tree).cir
|
|
16949
16985
|
base_routes = _routes_of(base_cir)
|
|
16950
|
-
except
|
|
16951
|
-
|
|
16952
|
-
|
|
16953
|
-
|
|
16954
|
-
|
|
16955
|
-
|
|
16956
|
-
|
|
16957
|
-
|
|
16986
|
+
except RefError as exc:
|
|
16987
|
+
_emit_error_json(
|
|
16988
|
+
exc.code,
|
|
16989
|
+
exc.message,
|
|
16990
|
+
ref=since,
|
|
16991
|
+
hint="Pass a commit available in this repository; no ref is fetched or substituted.",
|
|
16992
|
+
)
|
|
16993
|
+
raise typer.Exit(code=1)
|
|
16994
|
+
except Exception as exc:
|
|
16995
|
+
_emit_error_json(
|
|
16996
|
+
EXECUTION_FAILED_CODE,
|
|
16997
|
+
f"Could not build the base route inventory for {since!r}: "
|
|
16998
|
+
f"{type(exc).__name__}: {exc}",
|
|
16999
|
+
ref=since,
|
|
17000
|
+
stage="base_route_inventory",
|
|
17001
|
+
hint="Fix the base tree or retry with a readable local ref; no comparison was produced.",
|
|
17002
|
+
)
|
|
17003
|
+
raise typer.Exit(code=1)
|
|
16958
17004
|
|
|
16959
17005
|
_prog.start("scoring the change")
|
|
16960
17006
|
result = assess(
|
|
@@ -16968,12 +17014,6 @@ def pr_risk_cmd(
|
|
|
16968
17014
|
finally:
|
|
16969
17015
|
_prog.stop()
|
|
16970
17016
|
|
|
16971
|
-
if since and base_routes is None:
|
|
16972
|
-
result.non_coverage.append(
|
|
16973
|
-
f"the base ref `{since}` could not be read, so no route was reported "
|
|
16974
|
-
f"as newly added: {_base_error}"
|
|
16975
|
-
)
|
|
16976
|
-
|
|
16977
17017
|
data = result.to_dict()
|
|
16978
17018
|
_emit_command_output(
|
|
16979
17019
|
_serialize_dict(data, format),
|
|
@@ -16998,6 +17038,7 @@ def pr_risk_cmd(
|
|
|
16998
17038
|
# ── remediate (finding → recipe → apply → verify, as one loop) ───────────────
|
|
16999
17039
|
|
|
17000
17040
|
@app.command("remediate")
|
|
17041
|
+
@_command_budget_help("remediate")
|
|
17001
17042
|
def remediate_cmd(
|
|
17002
17043
|
path: Path = typer.Argument(Path("."), help="Repository path (default: current directory)"),
|
|
17003
17044
|
write: bool = typer.Option(
|
|
@@ -17101,6 +17142,7 @@ def remediate_cmd(
|
|
|
17101
17142
|
# ── intent (natural language → a typed query this CLI already answers) ───────
|
|
17102
17143
|
|
|
17103
17144
|
@app.command("intent")
|
|
17145
|
+
@_command_budget_help("intent")
|
|
17104
17146
|
def intent_cmd(
|
|
17105
17147
|
question: str = typer.Argument(..., help="The question, in plain language."),
|
|
17106
17148
|
path: Path = typer.Argument(Path("."), help="Repository path (default: current directory)"),
|
|
@@ -17179,6 +17221,7 @@ def intent_cmd(
|
|
|
17179
17221
|
# ── cve (dependency advisories, gated on reachability) ───────────────────────
|
|
17180
17222
|
|
|
17181
17223
|
@app.command("cve")
|
|
17224
|
+
@_command_budget_help("cve")
|
|
17182
17225
|
def cve_cmd(
|
|
17183
17226
|
path: Path = typer.Argument(Path("."), help="Repository path (default: current directory)"),
|
|
17184
17227
|
feed: Optional[Path] = typer.Option(
|
|
@@ -17231,6 +17274,12 @@ def cve_cmd(
|
|
|
17231
17274
|
Nothing here answers "not reachable": reflection, SPI loading and container
|
|
17232
17275
|
wiring reach code no import statement names.
|
|
17233
17276
|
|
|
17277
|
+
\b
|
|
17278
|
+
Dependency coverage is the static manifest and supported-lockfile inventory.
|
|
17279
|
+
This command does not execute Maven or Gradle, so a transitive dependency
|
|
17280
|
+
absent from that inventory is not assessed. The JSON result publishes this
|
|
17281
|
+
coverage explicitly; it never treats an unobserved coordinate as safe.
|
|
17282
|
+
|
|
17234
17283
|
\b
|
|
17235
17284
|
ask cve . --feed ./osv-maven.json
|
|
17236
17285
|
ask cve . --feed ./feeds/ --reachable-only --fail-on reachable
|
|
@@ -371,6 +371,29 @@ def assess(
|
|
|
371
371
|
}
|
|
372
372
|
non_coverage: list[str] = []
|
|
373
373
|
|
|
374
|
+
# DependencyAnalyzer reads manifests and the lockfiles it understands. It
|
|
375
|
+
# deliberately does not execute Maven or Gradle, so a missing record cannot
|
|
376
|
+
# mean a dependency resolver proved the coordinate absent.
|
|
377
|
+
java_records = [
|
|
378
|
+
record for record in dependencies
|
|
379
|
+
if str(getattr(record, "ecosystem", "")).lower() == "java"
|
|
380
|
+
]
|
|
381
|
+
scopes_observed: dict[str, int] = {}
|
|
382
|
+
for record in java_records:
|
|
383
|
+
scope = str(getattr(record, "scope", None) or "unknown")
|
|
384
|
+
scopes_observed[scope] = scopes_observed.get(scope, 0) + 1
|
|
385
|
+
dependency_inventory = {
|
|
386
|
+
"basis": "static_manifests_and_supported_lockfiles",
|
|
387
|
+
"dependency_resolution": "not_performed",
|
|
388
|
+
"java_records_observed": len(java_records),
|
|
389
|
+
"scopes_observed": dict(sorted(scopes_observed.items())),
|
|
390
|
+
"non_coverage": (
|
|
391
|
+
"Maven and Gradle are not executed. Dependencies absent from the "
|
|
392
|
+
"static manifest or supported lockfile inventory, including "
|
|
393
|
+
"tool-resolved transitive dependencies, are not assessed."
|
|
394
|
+
),
|
|
395
|
+
}
|
|
396
|
+
|
|
374
397
|
if not feed.loaded:
|
|
375
398
|
# A refusal, not a clean scan. The caller turns this into an exit code.
|
|
376
399
|
return {
|
|
@@ -378,6 +401,7 @@ def assess(
|
|
|
378
401
|
"schema": SCHEMA_ID,
|
|
379
402
|
"status": "no_feed",
|
|
380
403
|
"feed": feed.to_dict(),
|
|
404
|
+
"dependency_inventory": dependency_inventory,
|
|
381
405
|
"dependencies_examined": 0,
|
|
382
406
|
"matches": [],
|
|
383
407
|
"counts": counts,
|
|
@@ -490,8 +514,10 @@ def assess(
|
|
|
490
514
|
"schema": SCHEMA_ID,
|
|
491
515
|
"status": "ok",
|
|
492
516
|
"feed": feed.to_dict(),
|
|
517
|
+
"dependency_inventory": dependency_inventory,
|
|
493
518
|
"dependencies_examined": examined,
|
|
494
519
|
"matches": matches,
|
|
495
520
|
"counts": counts,
|
|
496
|
-
"non_coverage": non_coverage
|
|
521
|
+
"non_coverage": [dependency_inventory["non_coverage"]]
|
|
522
|
+
+ non_coverage + list(feed.limitations),
|
|
497
523
|
}
|