sourcecode 5.9.0__tar.gz → 5.9.2__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.2}/CHANGELOG.md +47 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/PKG-INFO +26 -10
- {sourcecode-5.9.0 → sourcecode-5.9.2}/README.md +25 -9
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +7 -0
- sourcecode-5.9.2/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +98 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/CACHE.md +2 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/DEFECT-LEDGER.md +17 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/DEVELOPMENT-ROADMAP.md +25 -5
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/EXECUTIVE-ROADMAP.md +15 -1
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/PRODUCT-ROUTE.md +5 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/USER_GUIDE.md +59 -9
- {sourcecode-5.9.0 → sourcecode-5.9.2}/pyproject.toml +1 -1
- sourcecode-5.9.2/scripts/context_cost_harness.py +183 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/audit_report.py +20 -0
- sourcecode-5.9.2/src/sourcecode/audit_verify.py +76 -0
- sourcecode-5.9.2/src/sourcecode/baseline_attestation.py +77 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/cache_model.py +5 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/cli.py +405 -25
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/cve_reachability.py +27 -1
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/format_contract.py +5 -1
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/license.py +42 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/output_bounds.py +34 -8
- sourcecode-5.9.2/src/sourcecode/regulatory_pack.py +84 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/release_info.py +1 -1
- sourcecode-5.9.2/src/sourcecode/remediation_report.py +78 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/sarif_emit.py +54 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/schema_registry.py +12 -0
- sourcecode-5.9.2/src/sourcecode/vex.py +83 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/.github/workflows/windows-battery.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/.gitignore +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/.ruff.toml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/CLAUDE.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/CODE_OF_CONDUCT.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/CONTRIBUTING.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/LICENSE +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/NOTICE +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/SECURITY.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/MANUAL-USUARIO.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/DESIGN-assessment-report.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/DESIGN-pack-manifest.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/overview.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/contracts.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/licensing-schema.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/migrate-check.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/pack-gate-github-actions.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/pack-gate-gitlab.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/README.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/perf/corpus-testing-2026-08-22.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/posture.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/privacy.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/schema.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/hatch_build.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/scripts/perf_gate.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/scripts/perf_harness.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/scripts/test_fast.sh +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/__main__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/access_drift.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/analysis_budget.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/answer_bounds.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/audit_clusters.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/audit_recipe.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/audit_since.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/breaking_changes.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/build_modules.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/build_stamp.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/c4_render.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/cache.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/cache_observation.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/ci_output.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/classifier.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/context_graph.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/cve_feed.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/defect_classes/__init__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/defect_classes/registry.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/empty_reach.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/endpoint_disposition.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/explain_endpoint.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/field_deprecations.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/findings_baseline.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/functional_routes.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/github_diff.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/intent_router.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/manifest_cache.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/migrate_check.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/migration_apply.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/output_ceiling.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/output_sink.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/pack_manifest.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/packs.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/parallel.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/parse_cache.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/path_display.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/phased_run.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/posture.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/pr_risk.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/product_info.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/progress.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/regress.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/remediation_diff.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/remediation_flow.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/repository_ir.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/resource_budget.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/risk.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/risk_model.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/schema_producers.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/selection_contract.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/self_audit.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/selftest.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/timeline_cache.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/watch_loop.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/wired_surface.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/supabase/functions/README.md +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.9.0 → sourcecode-5.9.2}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -1,5 +1,52 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.9.2] — 2026-08-27
|
|
4
|
+
|
|
5
|
+
*Commercial positioning increment: bounded agent context, reproducible cost
|
|
6
|
+
measurement, source-level SARIF delivery and workspace entitlement pilot.*
|
|
7
|
+
|
|
8
|
+
**Added**
|
|
9
|
+
|
|
10
|
+
- `repo-ir --budget-tokens N` composes with `--since` and declares graph
|
|
11
|
+
non-coverage instead of truncating an answer.
|
|
12
|
+
- `scripts/context_cost_harness.py` compares two declared task commands without
|
|
13
|
+
a shell and publishes no delta unless both sides resolve comparably.
|
|
14
|
+
- `migrate-check --format sarif` emits ASK-owned migration findings with source
|
|
15
|
+
locations, provenance and non-coverage.
|
|
16
|
+
- `auth workspace --enforce` provides an opt-in named-buyer pilot using the
|
|
17
|
+
existing Pro gate; advisory mode remains the default.
|
|
18
|
+
|
|
19
|
+
**Documentation and validation**
|
|
20
|
+
|
|
21
|
+
- README, user guide, roadmap and CLI help describe the new commercial surfaces.
|
|
22
|
+
- The changes were verified against the four repositories in
|
|
23
|
+
`Documents/workspace/testing` and the focused regression batteries.
|
|
24
|
+
|
|
25
|
+
## [5.9.1] — 2026-08-26
|
|
26
|
+
|
|
27
|
+
*Audit correction and stress-validation patch release. The `AUD-608` fixes
|
|
28
|
+
from the `5.9.0` audit are shipped and documented; command contracts now
|
|
29
|
+
disclose their limits and failure boundaries.*
|
|
30
|
+
|
|
31
|
+
**Fixed**
|
|
32
|
+
|
|
33
|
+
- `cve` publishes that its dependency inventory comes from static manifests and
|
|
34
|
+
supported lockfiles, without implying Maven or Gradle graph resolution.
|
|
35
|
+
- `pr-risk --since` reports unreadable base refs as structured execution errors
|
|
36
|
+
instead of misleading `non_coverage`.
|
|
37
|
+
- `posture --diff --limit` bounds `permit_all` and effective-access evidence
|
|
38
|
+
maps while preserving unrelated `evidence` payloads.
|
|
39
|
+
- Seven new command helps state their command-level analysis and memory budget
|
|
40
|
+
applicability.
|
|
41
|
+
|
|
42
|
+
**Documentation and validation**
|
|
43
|
+
|
|
44
|
+
- README, roadmaps and defect ledger identify `5.9.1` as the current release;
|
|
45
|
+
the `5.9.0` audit remains historical evidence.
|
|
46
|
+
- Focused regression batteries pass for all four corrections. A representative
|
|
47
|
+
stress smoke test passed on seven repositories under
|
|
48
|
+
`Documents/workspace/testing` with isolated caches and clean stderr.
|
|
49
|
+
|
|
3
50
|
## [5.9.0] — 2026-08-26
|
|
4
51
|
|
|
5
52
|
*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.2
|
|
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
|
|
@@ -122,6 +122,14 @@ the CI signal; `--allow-unverified` can change only that exit code, never the
|
|
|
122
122
|
reported verdict. Every pack carries a manifest with component invocations,
|
|
123
123
|
source evidence and content fingerprints.
|
|
124
124
|
|
|
125
|
+
For agent integrations, `ask repo-ir --since <ref> --budget-tokens N` bounds the
|
|
126
|
+
serialized inline answer. If the full graph does not fit, ASK returns its summary
|
|
127
|
+
view and declares `token_budget.coverage: non_coverage`; it never silently truncates
|
|
128
|
+
JSON. For a rerunnable cost comparison, use `scripts/context_cost_harness.py` with
|
|
129
|
+
explicit `--with-ask` and `--without-ask` command templates. It executes without a
|
|
130
|
+
shell and publishes a token delta only when both commands resolve and `--comparable`
|
|
131
|
+
is declared.
|
|
132
|
+
|
|
125
133
|
The [Product Route](docs/PRODUCT-ROUTE.md) is normative: ASK focuses on
|
|
126
134
|
deterministic evidence for Java/Spring modernization and safe change. Packs
|
|
127
135
|
compose existing commands; they do not hide or replace them.
|
|
@@ -188,15 +196,22 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
|
|
|
188
196
|
answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
|
|
189
197
|
unset, or set it to `0`, to disable the ceiling explicitly.
|
|
190
198
|
|
|
191
|
-
**Current performance status.** Release 5.9.
|
|
199
|
+
**Current performance status.** Release 5.9.2 retains the shared Canonical IR
|
|
192
200
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
193
201
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
194
202
|
not duration promises. A controlled external warm-path audit has opened performance
|
|
195
203
|
and bounded-output regressions for this release; use `ask cache model <repo>` and
|
|
196
204
|
`--progress stderr` for supervised runs, and consult the
|
|
197
|
-
[latest external audit intake](docs/AUDIT-2026-08-26-EXTERNAL-5.
|
|
205
|
+
[latest external audit intake](docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md) before
|
|
198
206
|
treating a historical timing or bounded flag as a current guarantee.
|
|
199
207
|
|
|
208
|
+
**CI delivery and workspace licensing.** `migrate-check --format sarif` emits
|
|
209
|
+
ASK-owned migration findings with source locations and provenance; it does not
|
|
210
|
+
re-emit imported scanner findings. `ask auth workspace <repo>...` previews the
|
|
211
|
+
aggregate Java entitlement. `--enforce` is an opt-in named-buyer pilot that reuses
|
|
212
|
+
the existing Pro gate; advisory mode remains the default and no billing is
|
|
213
|
+
performed by the CLI.
|
|
214
|
+
|
|
200
215
|
**What a warm actually covers.** `ask cache warm` rebuilds the declared root views and their
|
|
201
216
|
shared structural layers (L1/L2 + the Repository Intelligence Snapshot + the shared Canonical
|
|
202
217
|
IR). Pass `--views compact` or `--views compact,agent` to warm only selected views; without
|
|
@@ -222,7 +237,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
222
237
|
# pip / pipx
|
|
223
238
|
pipx install sourcecode # or: pip install sourcecode
|
|
224
239
|
|
|
225
|
-
ask version # ask 5.9.
|
|
240
|
+
ask version # ask 5.9.2 — and, on a build that has aged,
|
|
226
241
|
# how many releases have probably shipped since
|
|
227
242
|
```
|
|
228
243
|
|
|
@@ -506,27 +521,28 @@ from it.
|
|
|
506
521
|
| `posture` | supported | which beans a profile set wires, and how effective endpoint access differs between two sets | the most differentiated capability here. `--resolve-environments` says which set the repository decides; `--profile-from <file>` reads the artefact that actually decides it (Kubernetes manifest, compose file, deployment plan, `Dockerfile`, dotenv) and answers under that set, with the `file:line` — deciding nothing leaves the verdict untouched |
|
|
507
522
|
| `risk` | supported | what each defect actually costs, once reach, access, write effect and the shape of the input path are in it | `defect_severity × reachability × auth_verdict × write_effect × query_construction × input_constraints`; every factor names its authority; the `query_construction` factor covers MyBatis `${}` splicing with a three-state verdict (`reaches` / `does_not_reach` / `undecidable`) and publishes the census; `--table --rule SEC-008 --band high --top-n 20` gives audit triage without `jq` |
|
|
508
523
|
| `enrich` | experimental | another scanner's SARIF findings, ranked by what this repository does with them | `--sarif <log>`; same composition as `risk`, with `--table --rule <id> --band high --top-n 20` for triage |
|
|
509
|
-
| `audit-report` | supported | human audit bundle over existing `risk` + `posture` evidence, optionally signed | includes `evidence_manifest` claim provenance; `--format markdown`; `--sign-key <file>` signs canonical JSON with HMAC-SHA256 |
|
|
524
|
+
| `audit-report` | supported | human audit bundle over existing `risk` + `posture` evidence, optionally signed | includes `evidence_manifest` claim provenance; `--format markdown`; `--sign-key <file>` signs canonical JSON with HMAC-SHA256; `--pack ens` adds a technical ENS control matrix |
|
|
525
|
+
| `audit-verify` | supported | offline verification of a signed `audit-report` bundle | recomputes the canonical payload and HMAC-SHA256; returns `valid: true/false` and a CI-friendly exit code without re-running the audit |
|
|
510
526
|
| `migrate-recipe` | supported | the migration report as the OpenRewrite recipe that applies it | only recipes a finding named; the manual remainder published beside them; writes nothing without `--write`, and never a runnable command for an empty recipe list |
|
|
511
527
|
| `migrate-apply` | supported | apply a measured recipe without touching the main tree | Maven and Gradle executors; plan by default; `--write` requires clean Git, pinned version and isolated worktree; no automatic commit or merge |
|
|
512
528
|
| `data-exposure` | supported | which routes can carry the data you labelled, and who reaches them | labels declared in `sourcecode.config.json` — never inferred from a name; `signature` and `call_reach` evidence published apart, field-level flow out of scope (NC-008). With nothing declared, `ask data-exposure /path/to/repo` answers `answered: false` and hands back the file, the key and an example to declare — it never reports zero exposed routes |
|
|
513
529
|
| `data-exposure --init` | supported | generate review-only label candidates | writes only `.ask/data-label-candidates-v1.json` with `status: proposed_only`; it never activates labels |
|
|
514
530
|
| `endpoints` | core | every REST endpoint, effective path, security policy, confidence | Spring MVC + JAX-RS (~65 % recall on JAX-RS sub-resource locators). `--compact` answers the exposure census without the rows; `--servlets` lists the servlet-mounted surface as its own population; `--client-usage` says which routes the TS/JS client in this repository actually calls; `--consumer <repo>` (repeatable) joins the routes against consumers in **other** repositories — TypeScript/JS and Java — and turns the census into a surface-reduction plan: open and called (fix now), open and called by nobody (delete rather than guard), and calls this server serves no route for |
|
|
515
531
|
| `spring-audit` | core | transactional anomalies + security configuration/exposure + validation gaps | `--ci`, `-f github-comment`, or `-f github-actions` for native CI annotations; `--table --rule SEC-008 --top-n 20` for human-scale review. Every run inventories its own rules — `rules_run`, `rules_not_run`, `rules_partially_run`, `rules_run_count`/`rules_total` — so "all of them" is a fact, not an assumption |
|
|
516
|
-
| `migrate-check` | core | Boot 2→3 readiness + Java LTS/licensing inventory: located blockers, per-dimension score, effort, detected Java 8/11/17/21/25 evidence and explicit licensing-review signals | `--target-jdk 25` sets the target LTS route; `--blast-radius` orders the re-test plan; `--format github-actions` emits a stable CI annotation; `--table --rule MIG-001 --band critical --top-n 20` for blocker triage |
|
|
532
|
+
| `migrate-check` | core | Boot 2→3 readiness + Java LTS/licensing inventory: located blockers, per-dimension score, effort, detected Java 8/11/17/21/25 evidence and explicit licensing-review signals | `--target-jdk 25` sets the target LTS route; `--blast-radius` orders the re-test plan; `--format github-actions` emits a stable CI annotation; `--format sarif` emits located ASK-owned findings; `--table --rule MIG-001 --band critical --top-n 20` for blocker triage |
|
|
517
533
|
| `impact` / `impact-chain` | core | blast radius of a change, to the endpoints it reaches | target the **interface**, not the `Impl` |
|
|
518
534
|
| `pr-impact` | core | the same, scoped to a PR diff | local `git diff HEAD`, `--since REF`, explicit `--files`, or opt-in `--pr NUMBER`; `--format github-actions` emits CI annotations; `--fail-on` gates |
|
|
519
535
|
| `verify` | core | does the repo satisfy its declared contracts, **relative to a baseline** | `.ask/contracts.yml`; `--format github-actions` emits a native CI annotation while preserving exit 0/1/2. `.ask/waivers.yml` adjudicates a finding as *not a defect here* (stable id + required reason, optional expiry) so a reviewed row stops holding the gate red — a baseline records accepted debt, a waiver says it was never a defect |
|
|
520
536
|
| `verify-edit` | supported | did the working-tree edits change runtime behaviour | semantic diff gate for the edit loop |
|
|
521
537
|
| `--compact` / `--agent` | — | bounded structural context for an agent | flags of the root command, not commands: not tiered |
|
|
522
538
|
| `onboard` / `explain` / `cold-start` | supported | orientation in an unfamiliar repo; per-class summary; bootstrap snapshot | `onboard` publishes `population`, `population_unit` and `population_total` for its source-file universe |
|
|
523
|
-
| `export` / `repo-ir` / `schema` | supported | tool-agnostic views (C4, module graph, integrations); symbol-level IR; published JSON Schemas | `export --c4 --render mermaid\|svg` **draws** the model instead of only emitting it
|
|
539
|
+
| `export` / `repo-ir` / `schema` | supported | tool-agnostic views (C4, module graph, integrations); symbol-level IR; published JSON Schemas | `export --c4 --render mermaid\|svg` **draws** the model instead of only emitting it; `repo-ir --since REF --budget-tokens N` provides bounded, deterministic agent context |
|
|
524
540
|
| `modernize` | supported | coupling hubs, cycles, dead zones, refactor candidates | |
|
|
525
541
|
| `review-pr` / `fix-bug` / `prepare-context` | supported | diff review, symptom triage, task-shaped context | |
|
|
526
542
|
| `plan` / `compare` / `delta` / `contract-diff` | supported | what to review for a change; candidates by measured cost; outcome of a change; public-contract break | no verdicts, measured cost only |
|
|
527
543
|
| `validation` | supported | request-body validation coverage and gaps | |
|
|
528
|
-
| `baseline capture\|diff
|
|
529
|
-
| `cve` | supported | which dependency advisories a route can actually **reach** — not which are on the classpath | reads a **local** OSV feed (`--feed`)
|
|
544
|
+
| `baseline capture\|diff\|trend\|attest` | supported | versioned architectural metrics over time, findings history and a bounded read-only evidence attestation (`baseline-attestation-v1`) with explicit comparability and non-coverage | trend reporting and evidence continuity, not gating or legal compliance. Baselines land in `.ask/baselines` **inside the repository** or an external `--dir`; automate capture with [baseline-ci.yml](docs/baseline-ci.yml) |
|
|
545
|
+
| `cve` | supported | which dependency advisories a route can actually **reach** — not which are on the classpath | reads a **local** OSV feed (`--feed`) and optional local VEX statements (`--vex`); VEX is matched exactly and annotates `accepted_by_vex` without changing reachability; takes no network at analysis time |
|
|
530
546
|
| `intent` | supported | a plain-language question, resolved to the typed `retrieve` query that answers it | `ask intent "what breaks if I change OrderService?"`. A scored lexical match against a declared vocabulary — **no model, no generation** — so it resolves identically on every machine. It selects a query and prints it; `--run` executes it. A question fitting two intents too closely is refused with both named, because a well-formed answer to a question you did not ask is invisible once printed |
|
|
531
547
|
| `remediate` | supported | the loop from a finding to a **verified** change | audit → recipe → apply in a dedicated worktree → `verify-edit`. Dry by default. Most findings are not mechanical and the plan says which and why; an apply that could not be verified reports `unverified`, never `applied` |
|
|
532
548
|
| `pr-risk` | supported | one verdict for **this diff** — does the change make things worse? | `pack gate` answers about the repository; this answers about the change. Joins `pr-impact` reach, endpoint access, the shared risk model and CODEOWNERS. `--since` differences route inventories so `new_endpoints` is a fact rather than a guess. A changed file that maps to no class caps the verdict at `UNKNOWN`, which fails every gate — a partial blast radius is not a small one |
|
|
@@ -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
|
|
@@ -73,6 +73,14 @@ the CI signal; `--allow-unverified` can change only that exit code, never the
|
|
|
73
73
|
reported verdict. Every pack carries a manifest with component invocations,
|
|
74
74
|
source evidence and content fingerprints.
|
|
75
75
|
|
|
76
|
+
For agent integrations, `ask repo-ir --since <ref> --budget-tokens N` bounds the
|
|
77
|
+
serialized inline answer. If the full graph does not fit, ASK returns its summary
|
|
78
|
+
view and declares `token_budget.coverage: non_coverage`; it never silently truncates
|
|
79
|
+
JSON. For a rerunnable cost comparison, use `scripts/context_cost_harness.py` with
|
|
80
|
+
explicit `--with-ask` and `--without-ask` command templates. It executes without a
|
|
81
|
+
shell and publishes a token delta only when both commands resolve and `--comparable`
|
|
82
|
+
is declared.
|
|
83
|
+
|
|
76
84
|
The [Product Route](docs/PRODUCT-ROUTE.md) is normative: ASK focuses on
|
|
77
85
|
deterministic evidence for Java/Spring modernization and safe change. Packs
|
|
78
86
|
compose existing commands; they do not hide or replace them.
|
|
@@ -139,15 +147,22 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
|
|
|
139
147
|
answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
|
|
140
148
|
unset, or set it to `0`, to disable the ceiling explicitly.
|
|
141
149
|
|
|
142
|
-
**Current performance status.** Release 5.9.
|
|
150
|
+
**Current performance status.** Release 5.9.2 retains the shared Canonical IR
|
|
143
151
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
144
152
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
145
153
|
not duration promises. A controlled external warm-path audit has opened performance
|
|
146
154
|
and bounded-output regressions for this release; use `ask cache model <repo>` and
|
|
147
155
|
`--progress stderr` for supervised runs, and consult the
|
|
148
|
-
[latest external audit intake](docs/AUDIT-2026-08-26-EXTERNAL-5.
|
|
156
|
+
[latest external audit intake](docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md) before
|
|
149
157
|
treating a historical timing or bounded flag as a current guarantee.
|
|
150
158
|
|
|
159
|
+
**CI delivery and workspace licensing.** `migrate-check --format sarif` emits
|
|
160
|
+
ASK-owned migration findings with source locations and provenance; it does not
|
|
161
|
+
re-emit imported scanner findings. `ask auth workspace <repo>...` previews the
|
|
162
|
+
aggregate Java entitlement. `--enforce` is an opt-in named-buyer pilot that reuses
|
|
163
|
+
the existing Pro gate; advisory mode remains the default and no billing is
|
|
164
|
+
performed by the CLI.
|
|
165
|
+
|
|
151
166
|
**What a warm actually covers.** `ask cache warm` rebuilds the declared root views and their
|
|
152
167
|
shared structural layers (L1/L2 + the Repository Intelligence Snapshot + the shared Canonical
|
|
153
168
|
IR). Pass `--views compact` or `--views compact,agent` to warm only selected views; without
|
|
@@ -173,7 +188,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
173
188
|
# pip / pipx
|
|
174
189
|
pipx install sourcecode # or: pip install sourcecode
|
|
175
190
|
|
|
176
|
-
ask version # ask 5.9.
|
|
191
|
+
ask version # ask 5.9.2 — and, on a build that has aged,
|
|
177
192
|
# how many releases have probably shipped since
|
|
178
193
|
```
|
|
179
194
|
|
|
@@ -457,27 +472,28 @@ from it.
|
|
|
457
472
|
| `posture` | supported | which beans a profile set wires, and how effective endpoint access differs between two sets | the most differentiated capability here. `--resolve-environments` says which set the repository decides; `--profile-from <file>` reads the artefact that actually decides it (Kubernetes manifest, compose file, deployment plan, `Dockerfile`, dotenv) and answers under that set, with the `file:line` — deciding nothing leaves the verdict untouched |
|
|
458
473
|
| `risk` | supported | what each defect actually costs, once reach, access, write effect and the shape of the input path are in it | `defect_severity × reachability × auth_verdict × write_effect × query_construction × input_constraints`; every factor names its authority; the `query_construction` factor covers MyBatis `${}` splicing with a three-state verdict (`reaches` / `does_not_reach` / `undecidable`) and publishes the census; `--table --rule SEC-008 --band high --top-n 20` gives audit triage without `jq` |
|
|
459
474
|
| `enrich` | experimental | another scanner's SARIF findings, ranked by what this repository does with them | `--sarif <log>`; same composition as `risk`, with `--table --rule <id> --band high --top-n 20` for triage |
|
|
460
|
-
| `audit-report` | supported | human audit bundle over existing `risk` + `posture` evidence, optionally signed | includes `evidence_manifest` claim provenance; `--format markdown`; `--sign-key <file>` signs canonical JSON with HMAC-SHA256 |
|
|
475
|
+
| `audit-report` | supported | human audit bundle over existing `risk` + `posture` evidence, optionally signed | includes `evidence_manifest` claim provenance; `--format markdown`; `--sign-key <file>` signs canonical JSON with HMAC-SHA256; `--pack ens` adds a technical ENS control matrix |
|
|
476
|
+
| `audit-verify` | supported | offline verification of a signed `audit-report` bundle | recomputes the canonical payload and HMAC-SHA256; returns `valid: true/false` and a CI-friendly exit code without re-running the audit |
|
|
461
477
|
| `migrate-recipe` | supported | the migration report as the OpenRewrite recipe that applies it | only recipes a finding named; the manual remainder published beside them; writes nothing without `--write`, and never a runnable command for an empty recipe list |
|
|
462
478
|
| `migrate-apply` | supported | apply a measured recipe without touching the main tree | Maven and Gradle executors; plan by default; `--write` requires clean Git, pinned version and isolated worktree; no automatic commit or merge |
|
|
463
479
|
| `data-exposure` | supported | which routes can carry the data you labelled, and who reaches them | labels declared in `sourcecode.config.json` — never inferred from a name; `signature` and `call_reach` evidence published apart, field-level flow out of scope (NC-008). With nothing declared, `ask data-exposure /path/to/repo` answers `answered: false` and hands back the file, the key and an example to declare — it never reports zero exposed routes |
|
|
464
480
|
| `data-exposure --init` | supported | generate review-only label candidates | writes only `.ask/data-label-candidates-v1.json` with `status: proposed_only`; it never activates labels |
|
|
465
481
|
| `endpoints` | core | every REST endpoint, effective path, security policy, confidence | Spring MVC + JAX-RS (~65 % recall on JAX-RS sub-resource locators). `--compact` answers the exposure census without the rows; `--servlets` lists the servlet-mounted surface as its own population; `--client-usage` says which routes the TS/JS client in this repository actually calls; `--consumer <repo>` (repeatable) joins the routes against consumers in **other** repositories — TypeScript/JS and Java — and turns the census into a surface-reduction plan: open and called (fix now), open and called by nobody (delete rather than guard), and calls this server serves no route for |
|
|
466
482
|
| `spring-audit` | core | transactional anomalies + security configuration/exposure + validation gaps | `--ci`, `-f github-comment`, or `-f github-actions` for native CI annotations; `--table --rule SEC-008 --top-n 20` for human-scale review. Every run inventories its own rules — `rules_run`, `rules_not_run`, `rules_partially_run`, `rules_run_count`/`rules_total` — so "all of them" is a fact, not an assumption |
|
|
467
|
-
| `migrate-check` | core | Boot 2→3 readiness + Java LTS/licensing inventory: located blockers, per-dimension score, effort, detected Java 8/11/17/21/25 evidence and explicit licensing-review signals | `--target-jdk 25` sets the target LTS route; `--blast-radius` orders the re-test plan; `--format github-actions` emits a stable CI annotation; `--table --rule MIG-001 --band critical --top-n 20` for blocker triage |
|
|
483
|
+
| `migrate-check` | core | Boot 2→3 readiness + Java LTS/licensing inventory: located blockers, per-dimension score, effort, detected Java 8/11/17/21/25 evidence and explicit licensing-review signals | `--target-jdk 25` sets the target LTS route; `--blast-radius` orders the re-test plan; `--format github-actions` emits a stable CI annotation; `--format sarif` emits located ASK-owned findings; `--table --rule MIG-001 --band critical --top-n 20` for blocker triage |
|
|
468
484
|
| `impact` / `impact-chain` | core | blast radius of a change, to the endpoints it reaches | target the **interface**, not the `Impl` |
|
|
469
485
|
| `pr-impact` | core | the same, scoped to a PR diff | local `git diff HEAD`, `--since REF`, explicit `--files`, or opt-in `--pr NUMBER`; `--format github-actions` emits CI annotations; `--fail-on` gates |
|
|
470
486
|
| `verify` | core | does the repo satisfy its declared contracts, **relative to a baseline** | `.ask/contracts.yml`; `--format github-actions` emits a native CI annotation while preserving exit 0/1/2. `.ask/waivers.yml` adjudicates a finding as *not a defect here* (stable id + required reason, optional expiry) so a reviewed row stops holding the gate red — a baseline records accepted debt, a waiver says it was never a defect |
|
|
471
487
|
| `verify-edit` | supported | did the working-tree edits change runtime behaviour | semantic diff gate for the edit loop |
|
|
472
488
|
| `--compact` / `--agent` | — | bounded structural context for an agent | flags of the root command, not commands: not tiered |
|
|
473
489
|
| `onboard` / `explain` / `cold-start` | supported | orientation in an unfamiliar repo; per-class summary; bootstrap snapshot | `onboard` publishes `population`, `population_unit` and `population_total` for its source-file universe |
|
|
474
|
-
| `export` / `repo-ir` / `schema` | supported | tool-agnostic views (C4, module graph, integrations); symbol-level IR; published JSON Schemas | `export --c4 --render mermaid\|svg` **draws** the model instead of only emitting it
|
|
490
|
+
| `export` / `repo-ir` / `schema` | supported | tool-agnostic views (C4, module graph, integrations); symbol-level IR; published JSON Schemas | `export --c4 --render mermaid\|svg` **draws** the model instead of only emitting it; `repo-ir --since REF --budget-tokens N` provides bounded, deterministic agent context |
|
|
475
491
|
| `modernize` | supported | coupling hubs, cycles, dead zones, refactor candidates | |
|
|
476
492
|
| `review-pr` / `fix-bug` / `prepare-context` | supported | diff review, symptom triage, task-shaped context | |
|
|
477
493
|
| `plan` / `compare` / `delta` / `contract-diff` | supported | what to review for a change; candidates by measured cost; outcome of a change; public-contract break | no verdicts, measured cost only |
|
|
478
494
|
| `validation` | supported | request-body validation coverage and gaps | |
|
|
479
|
-
| `baseline capture\|diff
|
|
480
|
-
| `cve` | supported | which dependency advisories a route can actually **reach** — not which are on the classpath | reads a **local** OSV feed (`--feed`)
|
|
495
|
+
| `baseline capture\|diff\|trend\|attest` | supported | versioned architectural metrics over time, findings history and a bounded read-only evidence attestation (`baseline-attestation-v1`) with explicit comparability and non-coverage | trend reporting and evidence continuity, not gating or legal compliance. Baselines land in `.ask/baselines` **inside the repository** or an external `--dir`; automate capture with [baseline-ci.yml](docs/baseline-ci.yml) |
|
|
496
|
+
| `cve` | supported | which dependency advisories a route can actually **reach** — not which are on the classpath | reads a **local** OSV feed (`--feed`) and optional local VEX statements (`--vex`); VEX is matched exactly and annotates `accepted_by_vex` without changing reachability; takes no network at analysis time |
|
|
481
497
|
| `intent` | supported | a plain-language question, resolved to the typed `retrieve` query that answers it | `ask intent "what breaks if I change OrderService?"`. A scored lexical match against a declared vocabulary — **no model, no generation** — so it resolves identically on every machine. It selects a query and prints it; `--run` executes it. A question fitting two intents too closely is refused with both named, because a well-formed answer to a question you did not ask is invisible once printed |
|
|
482
498
|
| `remediate` | supported | the loop from a finding to a **verified** change | audit → recipe → apply in a dedicated worktree → `verify-edit`. Dry by default. Most findings are not mechanical and the plan says which and why; an apply that could not be verified reports `unverified`, never `applied` |
|
|
483
499
|
| `pr-risk` | supported | one verdict for **this diff** — does the change make things worse? | `pack gate` answers about the repository; this answers about the change. Joins `pr-impact` reach, endpoint access, the shared risk model and CODEOWNERS. `--since` differences route inventories so `new_endpoints` is a fact rather than a guess. A changed file that maps to no class caps the verdict at `UNKNOWN`, which fails every gate — a partial blast radius is not a small one |
|
|
@@ -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.
|
|
@@ -137,6 +137,7 @@ The second anchor is the field one, and it carries its own build for the same re
|
|
|
137
137
|
| `chunk-file` | nothing | not timed | no | — | Reads one file; nothing to cache. |
|
|
138
138
|
| `intent` | nothing | not timed | no | — | Resolving a question is a string operation over a declared vocabulary; only --run reaches the retrieval engine. |
|
|
139
139
|
| `self-audit` | nothing | not timed | no | — | Reads this build's own registries and manifest; it never analyses a repository, so there is nothing to cache. |
|
|
140
|
+
| `remediation-report` | nothing | not timed | no | — | Reads the bundled remediation ledger and build provenance; it analyses no repository and uses no cache layer. |
|
|
140
141
|
| `drift` | the shared work | not timed | no | `parse`, `cir` | Resolves the posture through the shared CIR; --against resolves a second profile set over the same parse. |
|
|
141
142
|
| `watch` | the shared work | not timed | yes | `parse`, `cir` | Warms once, then answers each save against the warm IR — the reason a per-save question is affordable at all. |
|
|
142
143
|
| `pr-risk` | the shared work | not timed | no | `parse`, `cir` | Reuses the shared CIR for the blast radius; --since builds a second IR over the base tree, which is not cached. |
|
|
@@ -147,6 +148,7 @@ The second anchor is the field one, and it carries its own build for the same re
|
|
|
147
148
|
| `explain-endpoint` | the shared work | not measured on the battery yet — bounded by `endpoints` on the same repository | yes | `cir`, `parse` | Builds the repository IR to answer about ONE route, so the warm it shares with `endpoints` and `posture` is the whole difference between a question you ask once and a question you ask twenty times. |
|
|
148
149
|
| `selftest` | the shared work | not timed | no | `cir`, `parse` | Runs the ledger's acceptance criteria by invoking other commands against this repository, so it inherits their layers — a warm makes those runs warm. It holds no cache of its own and stores nothing. |
|
|
149
150
|
| `regress` | nothing | not timed | no | — | Diffs two payload files this CLI already wrote; analyses no source, so no cache layer applies. What it reads about caching is the `cache_layers` field inside those payloads — to refuse a comparison taken under different cache states, not to use one. |
|
|
151
|
+
| `audit-verify` | nothing | not timed | no | — | Verifies one local report and key; it does not inspect a repository or use ASK analysis caches. |
|
|
150
152
|
| `trend` | nothing | not timed | no | — | Reads stored baseline artifacts from disk; analyses no source, so no cache layer applies. Same command as `baseline trend`. |
|
|
151
153
|
| `baseline` | the shared work | capture 8.7 s → 3.6 s | no | `parse` | `capture`/`diff`/`trend` over architectural metrics. The field figure is `capture`, the subcommand that analyses; `trend` reads stored artifacts and has its own row. |
|
|
152
154
|
| `retrieve` | the shared work | not timed | no | `cir`, `parse` | Every query builds or reuses the shared CIR a warm builds. |
|
|
@@ -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.2`; 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
|
|
@@ -84,6 +98,7 @@ aspirations: each is asserted by that row's tests.
|
|
|
84
98
|
| `AUD-607-X07` | P3 | Stored finding baselines across releases. | `ask baseline capture/diff/trend --kind findings` (`findings-baseline-v1`) | **Implemented (`55b93c2`).** The same store as the architectural series, prefixed so neither reads the other's documents. `first_seen` is the earliest STORED capture and the payload says so. A rename is published as one resolved and one new. |
|
|
85
99
|
| `AUD-607-X08` | P3 | Environment drift alerting. | `ask drift` (`access-drift-v1`) | **Implemented (`6463fdf`).** One arithmetic for both axes (time and environment), so the two answers cannot disagree. `newly_unmatched` and `newly_matched` are separate buckets; a `removed` route is never reported as having become safe. |
|
|
86
100
|
| `AUD-607-X09` | P3 | `self-audit` — run ASK against its own build. | `ask self-audit` (`self-audit-v1`) | **Implemented (`f1fa913`), with its "not recommended" reason shipped inside the payload.** The semantic engine does not apply to Python source, so those figures are absent and declared rather than reported as zeros. What it does check — cache model, format contract, schema registry and output affordances over the INSTALLED build — found a real drift on its first run. |
|
|
101
|
+
| `ASK-COM-01` | P1 | Continuous evidence attestation over persisted baseline history. | `ask baseline attest` (`baseline-attestation-v1`) | **Implemented.** Read-only projection of architecture or findings trend; publishes capture boundaries, latest commit, comparability and explicit non-coverage. It never claims legal compliance, improvement, or a clean zero without history. |
|
|
87
102
|
|
|
88
103
|
### Explicitly Rejected
|
|
89
104
|
|
|
@@ -663,12 +678,17 @@ Java file, ~500 MB per 24 000-file repository), which is a sizing document and a
|
|
|
663
678
|
**What blocks `S-18` is `S-27`, and no memo saw it.** The row below is the reason `fleet`
|
|
664
679
|
moves ahead of everything except `S-23`.
|
|
665
680
|
|
|
681
|
+
**S-27 measurement increment shipped:** `ask auth workspace <repo>...` now publishes
|
|
682
|
+
`workspace-entitlement-v1` with unique repository count, aggregate Java population and
|
|
683
|
+
an explicit `advisory_only` policy status. It does not alter the existing per-repository
|
|
684
|
+
gate; entitlement enforcement remains pending named-buyer validation.
|
|
685
|
+
|
|
666
686
|
| # | Row | Mechanism | Done when |
|
|
667
687
|
|---|---|---|---|
|
|
668
|
-
| `S-27` | **The licence axis cannot charge the buyer the product is being built for** ⭐ — `P-13` | `is_large_repo()` counts Java files **per repository path** against `_FREE_REPO_JAVA_FILE_LIMIT = 500
|
|
669
|
-
| `S-28`
|
|
670
|
-
| `S-29` | **The remediation record becomes a public, generated page**
|
|
671
|
-
| `S-30` | **The token bill becomes a measured number, and `--since` carries the budget** |
|
|
688
|
+
| `S-27` ◑ | **The licence axis cannot charge the buyer the product is being built for** ⭐ — `P-13` | `is_large_repo()` counts Java files **per repository path** against `_FREE_REPO_JAVA_FILE_LIMIT = 500`, while `auth workspace` aggregates the fleet. The opt-in `--enforce` pilot now applies the existing Pro gate to that aggregate without changing per-repository behavior or billing code. | Measurement and pilot gate shipped. Full activation remains conditional on named-buyer validation; no default user is charged or blocked. |
|
|
689
|
+
| `S-28` ✅ | **SARIF out — the findings reach the tab the developer already reads** — **closed with source-level migration export:** `pack gate`, `spring-audit`, `verify` and `migrate-check` emit SARIF 2.1.0 through dedicated ASK-owned renderers. Source findings carry their own locations; contract and gate decisions remain locationless where no source span exists. | The output channel is now available for the ASK-owned finding populations, with provenance and non-coverage preserved. Imported SARIF remains input to `enrich` and is never re-emitted as ASK discovery. |
|
|
690
|
+
| `S-29` ✅ | **The remediation record becomes a public, generated page** — **closed:** `remediation-report` publishes the redacted projection of the shipped ledger with counts, distributions, provenance and closure coverage. Private narrative and paths stay excluded; the output is explicitly a trust artifact, not an SLA or security verdict. | `ask remediation-report` is the generated public projection; its tests assert redaction, provenance and consistency with the ledger. |
|
|
691
|
+
| `S-30` ✅ | **The token bill becomes a measured number, and `--since` carries the budget** | **Shipped:** `repo-ir --budget-tokens N` composes with `--since`, and `scripts/context_cost_harness.py` measures a declared task with and without ASK. It publishes bytes/tokens, build and tree state, output hashes and a delta only when both commands resolve and the operator declares `--comparable`; otherwise it records `not_comparable` without a commercial figure. The stateful session proposal remains refused because it would make answers depend on what the agent claims to have seen, breaking determinism. | Closed for the stateless scope: budgeted bounded view plus reproducible two-command harness. No agent quality claim is published by default; comparable task definitions and their rerunnable artifacts remain the operator's evidence. |
|
|
672
692
|
|
|
673
693
|
**One anti-goal recorded here so it is refused once.** No rule DSL and no third-party rule
|
|
674
694
|
plugins for the architecture contracts of `S-23`'s neighbourhood. The memo cites *"grep grew
|
|
@@ -5,7 +5,21 @@
|
|
|
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.2`, following the external `5.9.0` reconciliation (`AUD-608`).**
|
|
9
|
+
> The commercial increment adds stateless context budgets, a reproducible context-cost harness,
|
|
10
|
+
> source-level migration SARIF and an opt-in workspace entitlement pilot. Advisory behaviour remains
|
|
11
|
+
> the default; named-buyer validation is still required before broad enforcement.
|
|
12
|
+
> Three defects confirmed in the shipped release are closed: `cve` now
|
|
13
|
+
> discloses its static inventory (`fe1f624`), `pr-risk --since` returns a
|
|
14
|
+
> structured error for unreadable base context (`b479465`), and
|
|
15
|
+
> `posture --diff --limit` bounds effective-access lists and maps (`5f8a50b`).
|
|
16
|
+
> The seven new command helps now state analysis and memory budget
|
|
17
|
+
> non-applicability (`19811ac`). The reported `cache warm` exit-143 was an external
|
|
18
|
+
> 120-second timeout, not a product regression. The prior posture
|
|
19
|
+
> non-reproduction did not cover the payload shape now identified. Details are
|
|
20
|
+
> in [`AUDIT-2026-08-26-EXTERNAL-5.9.0.md`](AUDIT-2026-08-26-EXTERNAL-5.9.0.md).
|
|
21
|
+
|
|
22
|
+
> **HISTORICAL STATUS — release `5.9.0`, following two external audits of `5.8.32`, 2026-08-26.** Two
|
|
9
23
|
> independent rounds scored the release **9.7/10** (reverification) and **8/10** (comparison against
|
|
10
24
|
> `5.8.31`). **Neither round reported a regression**, and both maintained the same commercial
|
|
11
25
|
> position: buy, at `$30-50` per developer per month. Six previously reported findings are confirmed
|
|
@@ -180,6 +180,11 @@ vulnerability is exploitable; and `not_observed` is explicitly not a statement
|
|
|
180
180
|
of safety, because reflection, SPI loading and container wiring reach code no
|
|
181
181
|
source edge names.
|
|
182
182
|
|
|
183
|
+
An operator may also pass `--vex` with local, exact advisory/package decisions.
|
|
184
|
+
ASK publishes those decisions as `accepted_by_vex` while preserving its own
|
|
185
|
+
reachability verdict; an expired or absent VEX statement is not treated as a
|
|
186
|
+
negative.
|
|
187
|
+
|
|
183
188
|
## Implementation order
|
|
184
189
|
|
|
185
190
|
The implementation route is shipped through five bounded steps. The status is
|