sourcecode 5.9.8__tar.gz → 5.9.10__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.8 → sourcecode-5.9.10}/CHANGELOG.md +20 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/PKG-INFO +12 -10
- {sourcecode-5.9.8 → sourcecode-5.9.10}/README.md +11 -9
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/DEFECT-LEDGER.md +59 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/DEVELOPMENT-ROADMAP.md +85 -4
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/EXECUTIVE-ROADMAP.md +15 -1
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/MANUAL-USUARIO.md +10 -3
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/USER_GUIDE.md +16 -4
- {sourcecode-5.9.8 → sourcecode-5.9.10}/pyproject.toml +1 -1
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/access_drift.py +10 -3
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/classifier.py +11 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/cli.py +29 -4
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/context_summarizer.py +1 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/java.py +2 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/error_schema.py +14 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/risk.py +61 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/selftest.py +44 -3
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/spring_event_topology.py +1 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/summarizer.py +2 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/.github/workflows/windows-battery.yml +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/.gitignore +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/.ruff.toml +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/CLAUDE.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/CODE_OF_CONDUCT.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/CONTRIBUTING.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/LICENSE +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/NOTICE +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/SECURITY.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/CACHE.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/PRODUCT-ROUTE.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/DESIGN-assessment-report.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/DESIGN-pack-manifest.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/overview.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/contracts.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/licensing-schema.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/migrate-check.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/pack-gate-github-actions.yml +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/pack-gate-gitlab.yml +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/README.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/perf/corpus-testing-2026-08-22.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/posture.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/privacy.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/schema.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/hatch_build.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/scripts/context_cost_harness.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/scripts/perf_gate.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/scripts/perf_harness.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/scripts/test_fast.sh +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/__main__.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/analysis_budget.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/answer_bounds.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/audit_clusters.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/audit_recipe.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/audit_report.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/audit_since.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/audit_verify.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/baseline_attestation.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/breaking_changes.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/build_modules.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/build_stamp.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/c4_render.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/cache.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/cache_model.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/cache_observation.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/ci_output.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/context_graph.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/cve_feed.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/cve_reachability.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/defect_classes/__init__.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/defect_classes/registry.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/empty_reach.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/endpoint_disposition.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/explain_endpoint.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/field_deprecations.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/findings_baseline.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/functional_routes.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/github_diff.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/intent_router.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/license.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/manifest_cache.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/migrate_check.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/migration_apply.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/output_bounds.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/output_ceiling.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/output_sink.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/pack_manifest.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/packs.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/parallel.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/parse_cache.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/path_display.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/phased_run.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/posture.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/pr_risk.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/product_info.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/progress.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/regress.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/regulatory_pack.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/release_info.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/remediation_diff.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/remediation_flow.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/remediation_report.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/repository_ir.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/resource_budget.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/risk_model.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/sarif_emit.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/schema_producers.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/schema_registry.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/selection_contract.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/self_audit.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/timeline_cache.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/vex.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/watch_loop.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/wired_surface.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/supabase/functions/README.md +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.9.8 → sourcecode-5.9.10}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.9.10] — 2026-08-27
|
|
4
|
+
|
|
5
|
+
*Release-alignment patch release.*
|
|
6
|
+
|
|
7
|
+
**Release**
|
|
8
|
+
|
|
9
|
+
- Synchronizes package metadata, CLI runtime, README and user-guide version surfaces at `5.9.10`.
|
|
10
|
+
- Carries forward the `5.9.9` documentation and availability guidance.
|
|
11
|
+
- Keeps the `AUD-615` reliability limits explicit pending their independent closure.
|
|
12
|
+
|
|
13
|
+
## [5.9.9] — 2026-08-27
|
|
14
|
+
|
|
15
|
+
*Release-alignment patch release.*
|
|
16
|
+
|
|
17
|
+
**Release**
|
|
18
|
+
|
|
19
|
+
- Synchronizes the package, CLI, README and user-guide version surfaces at `5.9.9`.
|
|
20
|
+
- Carries forward the `5.9.8` reliability fixes and their dedicated TeaVM validation.
|
|
21
|
+
- Keeps the `AUD-614` availability and native Windows/MSYS verification items explicitly open.
|
|
22
|
+
|
|
3
23
|
## [5.9.8] — 2026-08-27
|
|
4
24
|
|
|
5
25
|
*Audit correction and contract-alignment patch release.*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 5.9.
|
|
3
|
+
Version: 5.9.10
|
|
4
4
|
Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/HarounDominique/sourcecode
|
|
6
6
|
Project-URL: Repository, https://github.com/HarounDominique/sourcecode
|
|
@@ -59,7 +59,7 @@ Description-Content-Type: text/markdown
|
|
|
59
59
|
> question. All analysis is local and deterministic; see [Privacy](#configuration--privacy)
|
|
60
60
|
> before inspecting a repository whose telemetry policy you need to control.
|
|
61
61
|
|
|
62
|
-

|
|
63
63
|

|
|
64
64
|
|
|
65
65
|
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
|
|
@@ -196,14 +196,16 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
|
|
|
196
196
|
answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
|
|
197
197
|
unset, or set it to `0`, to disable the ceiling explicitly.
|
|
198
198
|
|
|
199
|
-
**Current performance status.** Release 5.9.
|
|
199
|
+
**Current performance status.** Release 5.9.10 retains the shared Canonical IR
|
|
200
200
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
201
201
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
202
|
-
not duration promises.
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
202
|
+
not duration promises. The current external audit records two open availability
|
|
203
|
+
limits: `audit-report --format markdown` is not reliable under contention, and
|
|
204
|
+
the root compact flow is not suitable for strict timeouts on very large monorepos.
|
|
205
|
+
Use `ask cache model <repo>`, `--progress stderr`, `audit-report --from-risk` and
|
|
206
|
+
JSON/YAML output for supervised runs; consult the
|
|
207
|
+
[current reliability queue](docs/DEVELOPMENT-ROADMAP.md#aud-615-re-audit-release-599)
|
|
208
|
+
before treating a historical timing or bounded flag as a current guarantee.
|
|
207
209
|
|
|
208
210
|
**CI delivery and workspace licensing.** `migrate-check --format sarif` emits
|
|
209
211
|
ASK-owned migration findings with source locations and provenance; it does not
|
|
@@ -218,7 +220,7 @@ in `overlapping_paths`; a missing or non-directory path is rejected as structure
|
|
|
218
220
|
invalid input rather than treated as an empty repository. This prevents silent
|
|
219
221
|
entitlement errors in CI and does not change per-repository gates or billing.
|
|
220
222
|
|
|
221
|
-
Release 5.9.
|
|
223
|
+
Release 5.9.10 also carries the boundary-contract hardening: missing consumer repositories,
|
|
222
224
|
malformed CVE feeds and unresolved `pack gate --since` refs fail as structured
|
|
223
225
|
input errors; duplicate same-commit baselines are never overwritten. `posture
|
|
224
226
|
--diff` validates unknown profiles when the repository declares profiles. In
|
|
@@ -251,7 +253,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
251
253
|
# pip / pipx
|
|
252
254
|
pipx install sourcecode # or: pip install sourcecode
|
|
253
255
|
|
|
254
|
-
ask version # ask 5.9.
|
|
256
|
+
ask version # ask 5.9.10 — and, on a build that has aged,
|
|
255
257
|
# how many releases have probably shipped since
|
|
256
258
|
```
|
|
257
259
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
> question. All analysis is local and deterministic; see [Privacy](#configuration--privacy)
|
|
11
11
|
> before inspecting a repository whose telemetry policy you need to control.
|
|
12
12
|
|
|
13
|
-

|
|
14
14
|

|
|
15
15
|
|
|
16
16
|
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
|
|
@@ -147,14 +147,16 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
|
|
|
147
147
|
answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
|
|
148
148
|
unset, or set it to `0`, to disable the ceiling explicitly.
|
|
149
149
|
|
|
150
|
-
**Current performance status.** Release 5.9.
|
|
150
|
+
**Current performance status.** Release 5.9.10 retains the shared Canonical IR
|
|
151
151
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
152
152
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
153
|
-
not duration promises.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
153
|
+
not duration promises. The current external audit records two open availability
|
|
154
|
+
limits: `audit-report --format markdown` is not reliable under contention, and
|
|
155
|
+
the root compact flow is not suitable for strict timeouts on very large monorepos.
|
|
156
|
+
Use `ask cache model <repo>`, `--progress stderr`, `audit-report --from-risk` and
|
|
157
|
+
JSON/YAML output for supervised runs; consult the
|
|
158
|
+
[current reliability queue](docs/DEVELOPMENT-ROADMAP.md#aud-615-re-audit-release-599)
|
|
159
|
+
before treating a historical timing or bounded flag as a current guarantee.
|
|
158
160
|
|
|
159
161
|
**CI delivery and workspace licensing.** `migrate-check --format sarif` emits
|
|
160
162
|
ASK-owned migration findings with source locations and provenance; it does not
|
|
@@ -169,7 +171,7 @@ in `overlapping_paths`; a missing or non-directory path is rejected as structure
|
|
|
169
171
|
invalid input rather than treated as an empty repository. This prevents silent
|
|
170
172
|
entitlement errors in CI and does not change per-repository gates or billing.
|
|
171
173
|
|
|
172
|
-
Release 5.9.
|
|
174
|
+
Release 5.9.10 also carries the boundary-contract hardening: missing consumer repositories,
|
|
173
175
|
malformed CVE feeds and unresolved `pack gate --since` refs fail as structured
|
|
174
176
|
input errors; duplicate same-commit baselines are never overwritten. `posture
|
|
175
177
|
--diff` validates unknown profiles when the repository declares profiles. In
|
|
@@ -202,7 +204,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
202
204
|
# pip / pipx
|
|
203
205
|
pipx install sourcecode # or: pip install sourcecode
|
|
204
206
|
|
|
205
|
-
ask version # ask 5.9.
|
|
207
|
+
ask version # ask 5.9.10 — and, on a build that has aged,
|
|
206
208
|
# how many releases have probably shipped since
|
|
207
209
|
```
|
|
208
210
|
|
|
@@ -95,6 +95,65 @@ because the prior external round reproduced it. The new queue is:
|
|
|
95
95
|
| AUD-612-09 | Medium | closed | `--files -` is documented and enforced as a newline-delimited changed-path list; raw unified diffs fail with an `--name-only` conversion hint. Dedicated TeaVM regressions pass. |
|
|
96
96
|
| AUD-612-14 | Medium | closed | The current population is 104 CLI leaves versus 110 MCP tools, explicitly decomposed as 101 runtime-derived plus 9 native orchestration tools; `mcp list-tools --json` matches and the relationship is published. Existing TeaVM-backed population regression passes. |
|
|
97
97
|
| AUD-612-R | Medium | closed | README, English guide and Spanish manual document that `rename-class` requires `--from/--to`, the old positional syntax is unsupported, and `--dry-run` is the migration safety step. TeaVM dry-run verification passes. |
|
|
98
|
+
| AUD-613-ROOT | High | closed 5.9.8 | On a TTY, explicit `ask .` was misclassified as bare `ask` after path preprocessing and rendered only the welcome card. An explicit-path marker now distinguishes both flows; TeaVM pseudo-TTY and focused CLI regressions pass. |
|
|
99
|
+
|
|
100
|
+
**External audit intake `AUD-614`, re-audit of release 5.9.8 — 2026-08-27.**
|
|
101
|
+
Five clean forks exercised the `testing/` corpus without target-repository writes,
|
|
102
|
+
commits or Java-file changes. The initial **8.0/10** score was superseded by the
|
|
103
|
+
addendum confirming a second severe availability regression; the governing score is
|
|
104
|
+
**7.5/10**. Previously closed semantic fixes remained stable, but the following rows
|
|
105
|
+
are the current release blockers and contract gaps:
|
|
106
|
+
|
|
107
|
+
| ID | Severity | Status | Evidence / closure boundary |
|
|
108
|
+
|---|---:|---|---|
|
|
109
|
+
| AUD-614-F | Critical | closed 5.9.8 (reverified) | The external `/dev/null` false-success is not reproducible in the current checkout: invalid TeaVM input returns `exit 1` and identical structured stderr whether stdout is captured or discarded. A dedicated redirection regression protects the boundary. Native Windows/MSYS release-artifact verification remains required because the external evidence conflicts. |
|
|
110
|
+
| AUD-614-L | Critical / regression | open | `audit-report` is contention-sensitive on `thingsboard` (3,714 files): one clean run completed in 136 s, while concurrent/isolated runs exceeded 5 minutes; JSON, YAML and Markdown all exhibited the problem. `tutorials` reached 5m39.6s with zero stdout. Requires profiling, stage visibility, deadline and structured partial output. |
|
|
111
|
+
| AUD-614-RISK-L0 | High / regression | closed 5.9.8 | `risk --limit 0` now returns a fast explicit zero-row view without constructing the repository-wide composer. It publishes `risks: []`, `shown: 0`, null totals and `analysis_skipped: true`; the TeaVM flow and dedicated regression pass. |
|
|
112
|
+
| AUD-614-SELFTEST-TIMEOUT | High / contract regression | closed 5.9.8 | `selftest --timeout` is now an overall deadline; each child receives the remaining budget, interrupted/unstarted rows are structured as `error`, and the command returns code 75. The real TeaVM flow and dedicated regression pass. The separate fourth-run hang remains mixed evidence. |
|
|
113
|
+
| AUD-614-WIN-PROC | Medium | open | Windows/MSYS timeout or SIGTERM can leave `ask.exe` descendants alive, with MSYS PIDs unusable by native `taskkill`. Validate signal handling and Windows Job Objects from native Windows and Git Bash. |
|
|
114
|
+
| AUD-614-G | Medium | closed 5.9.8 | The shared error authority normalizes legacy producer spellings to canonical uppercase codes (`NO_DIFF_SOURCE`, `INVALID_LICENSE`). TeaVM `review-pr` and activation contract tests pass. |
|
|
115
|
+
| AUD-614-E | Low | closed 5.9.9 | Event topology now publishes `risk_level: unknown` for `not_found`, matching `impact` and normal `impact-chain`; `low` remains a resolved no-risk result. Focused TeaVM coverage protects the parity. |
|
|
116
|
+
| AUD-614-I | Medium | closed 5.9.8 | The user manual and internal compacting comment no longer promise `~10K`; they state that `cold-start --compact` is snapshot-dependent, expose `estimated_tokens`, and require size validation before direct AI injection. The CLI help and payload already used this contract. A hard ceiling remains optional future scope. |
|
|
117
|
+
| AUD-614-INTENT-TIE | Medium | closed 5.9.9 (reclassified) | The equal score belongs to different questions, not competing candidates. `endpoint security` selects a target-required intent and correctly refuses without a route; `security surface` is repository-wide and resolves. A focused regression locks the distinction. |
|
|
118
|
+
| AUD-614-07 | Low | closed 5.9.8 (reverified) | The installed `ask spring-audi` entry point returns `Did you mean: spring-audit?`; the TeaVM path/typo regression battery passes. The external wording report is not reproducible in the current checkout. |
|
|
119
|
+
| AUD-614-JUNIT4 | Medium | closed 5.9.9 | JUnit4 test-only repositories classify as `test` only with the `junit:junit` coordinate and test-only Java sources; ordinary applications/libraries retain their structural type. |
|
|
120
|
+
|
|
121
|
+
**External audit intake `AUD-615`, re-audit of release 5.9.9 — 2026-08-27.** The
|
|
122
|
+
auditor exercised only repositories under `testing/` and added three robustness subjects.
|
|
123
|
+
The report contains conflicting headline scores (8.0 and 8.4), and shared fork scratch
|
|
124
|
+
state invalidated the definitive output capture for the long `audit-report` retest. The
|
|
125
|
+
ledger records the evidence and closure boundaries, not either headline score.
|
|
126
|
+
|
|
127
|
+
| ID | Severity | Status | Evidence / closure boundary |
|
|
128
|
+
|---|---:|---|---|
|
|
129
|
+
| AUD-615-F | Critical | closed 5.9.9 (reverified) | Windows/Git Bash verification confirms 11/11 reproductions: stdout `/dev/null` preserves exit 1 and byte-identical structured stderr, including `INVALID_USAGE` as well as `INVALID_INPUT`. Keep release-artifact coverage. |
|
|
130
|
+
| AUD-615-RISK-L0 | High / regression | closed 5.9.9 (reverified) | `risk --limit 0` completes in about 0.8–1.5 s as `zero_row_view`, with `analysis_skipped: true` and null totals; full analysis is not built for a view that requests no rows. |
|
|
131
|
+
| AUD-615-SELFTEST-TIMEOUT | High / contract regression | closed 5.9.9 (reverified) | `selftest --timeout 5` returns exit 75 and a non-empty structured diagnostic payload, including the fourth attempt in this sample. The independent hang history remains mixed evidence. |
|
|
132
|
+
| AUD-615-L | Critical / regression | open | The defect is isolated to `audit-report --format markdown`: identical `thingsboard` runs measured 200 s timeout versus 137.98 s success, with an isolated 114 s run. JSON/YAML correctly returned structured `OUTPUT_TOO_LARGE`; they are not defective here. The 700 s fork lost output to shared scratch interference. |
|
|
133
|
+
| AUD-615-TUTORIALS | High / availability trend | open | Root compact on `tutorials` increased monotonically from 4m00.1s in 5.9.6 to 6m20.1s in 5.9.9, exit 124 with zero stdout. Attribute and bound the cost before large-monorepo claims. |
|
|
134
|
+
| AUD-615-WIN-PROC | Medium | open | Seven `ask.exe` processes remained after successful Windows runs. Validate descendant cleanup for successful and timed-out runs with native Windows/Git Bash process controls. |
|
|
135
|
+
| AUD-615-INTENT-TIE | Medium | closed 5.9.9 (reclassified) | Equal score across distinct questions is not a tie. The target-required endpoint intent refuses without a route while the global surface intent resolves; a focused regression protects that contract. |
|
|
136
|
+
| AUD-615-E | Low | closed 5.9.9 | All impact-family not-found paths publish `risk_level: unknown`; focused TeaVM coverage protects the former event-topology outlier. |
|
|
137
|
+
| AUD-615-07 | Low / evidence conflict | closed 5.9.9 (reverified) | Isolated TeaVM verification returns `Did you mean: spring-audit?` with exit 2, matching the installed-entry-point regression. The contrary report wording is not reproducible. |
|
|
138
|
+
| AUD-615-JUNIT4 | Medium | closed 5.9.9 | JUnit4 test-only repositories classify as `test` from dependency and source-location evidence, without a broad naming heuristic. |
|
|
139
|
+
| AUD-615-DRIFT | Low / investigation | closed 5.9.9 | Spring's explicit `default` profile is normalized to the implicit empty active-profile set at the access-snapshot boundary. An implicit capture and explicit `--profile default` now read one series; focused and TeaVM regression flows pass. |
|
|
140
|
+
| AUD-615-COLD-COMPACT | Low / product decision | closed 5.9.9 (accepted contract) | A repeated 88,265-byte result is compatible with the documented snapshot-dependent contract. ASK exposes `estimated_tokens`; no hard ceiling is claimed or introduced. |
|
|
141
|
+
|
|
142
|
+
**Audit-method control:** each parallel fork must use a unique scratch directory; shared
|
|
143
|
+
`~/askaudit_599` caused cross-fork file deletion/interleaving and blocked a definitive L
|
|
144
|
+
result. **Commercially**, conflicting `$25-40` and `$50-65` estimates are not evidence for
|
|
145
|
+
a price increase; retain the conservative band until the availability trend is closed.
|
|
146
|
+
|
|
147
|
+
The audit also confirms root cache reuse, stdin contracts, pack progress, explain and
|
|
148
|
+
impact error routing, self-audit population disclosure, endpoint compact disclosure,
|
|
149
|
+
Spring detection controls, baseline safety and the prior `/dev/null` fix matrix. The
|
|
150
|
+
intermittent endpoint-security retrieval issue had 0/18 failures in this pass and stays
|
|
151
|
+
under observation because its historical rate is about 2% over 51 runs.
|
|
152
|
+
|
|
153
|
+
**Commercial boundary.** The corrected assessment is `$25-40/developer/month`, not the
|
|
154
|
+
initial `$45-58` headline. Do not market enterprise-scale support or production CI
|
|
155
|
+
gating for repositories above roughly 3,000 files until the four critical/high
|
|
156
|
+
availability and error-transport rows are independently closed with bounded evidence.
|
|
98
157
|
|
|
99
158
|
Commercially, normal repositories up to about 4,000 files remain viable at a provisional
|
|
100
159
|
$40-55/developer/month. B02, B04 and L block annual CI-gating and extreme-monorepo claims;
|
|
@@ -3,10 +3,15 @@
|
|
|
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.
|
|
7
|
-
> The latest
|
|
8
|
-
>
|
|
9
|
-
>
|
|
6
|
+
> **CURRENT QUEUE — release `5.9.10`; external re-audit `AUD-615` remains the reliability gate.**
|
|
7
|
+
> The latest external pass confirms the cache, stdin, progress, error-channel and
|
|
8
|
+
> population fixes, but reports a serious availability regression: `audit-report`
|
|
9
|
+
> is contention-sensitive on a normal large repository. The `/dev/null` report is
|
|
10
|
+
> reverified as fixed in the current checkout; native Windows/MSYS release-artifact
|
|
11
|
+
> confirmation remains. `risk --limit 0` and the `selftest --timeout` contract are now
|
|
12
|
+
> closed in this cycle; Windows process-tree cleanup remains separately open.
|
|
13
|
+
> `AUD-612` and `AUD-614` remain preceding audit records; `AUD-615` is the governing
|
|
14
|
+
> queue for the current `5.9.10` state, carrying forward the `5.9.8` and `5.9.9` fixes.
|
|
10
15
|
> The 2026-08-27 external review adds `AUD-610-B01` through `AUD-610-B10`, led by
|
|
11
16
|
> silent `selftest` nondeterminism, silent root/audit-report failures, a legal-zero
|
|
12
17
|
> `risk --limit 0` crash, an unvalidated consumer path and contradictory Spring
|
|
@@ -242,6 +247,82 @@ that result remains release-artifact verification rather than erased history.
|
|
|
242
247
|
| AUD-612-09 | Medium / docs | **Closed in this fix.** Help now describes `--files -` as a newline-delimited changed-path list. Raw unified diffs are rejected early with an `--name-only` conversion hint instead of being interpreted as file paths. TeaVM list and rejection regressions pass. | Keep the stdin grammar and raw-diff rejection tests green. |
|
|
243
248
|
| AUD-612-14 | Medium / governance | **Closed in this reconciliation.** Current `self-audit` publishes 104 registered CLI leaves and 110 served MCP tools, decomposed as 101 runtime-derived plus 9 native orchestration tools; `mcp list-tools --json` matches 110. The payload states that the populations are intentionally different and gives the formula. Existing TeaVM-backed population regression passes. | Keep the population formula and parity regression generated from the live registries. |
|
|
244
249
|
| AUD-612-R | Medium / migration | **Closed in this fix.** The explicit `--from/--to` contract is now documented in README, English guide and Spanish manual; the old positional syntax is explicitly marked unsupported and `--dry-run` is recommended for script migration. TeaVM dry-run verification passes. | Keep migration guidance aligned with the live command signature. |
|
|
250
|
+
| AUD-613-ROOT | High / regression | **Closed in this fix.** On a TTY, explicit `ask <repo>` paths were removed during argv preprocessing and misclassified as a bare invocation, so `ask .` rendered only the welcome card. The preprocessor now retains an explicit-path marker: bare `ask` still shows the welcome card, while `ask .` analyzes and emits JSON. A real TeaVM pseudo-TTY run and focused CLI regressions pass. | Keep the bare-invocation versus explicit-root differential test green. |
|
|
251
|
+
|
|
252
|
+
### External Audit Intake — `AUD-614` re-audit, release 5.9.8
|
|
253
|
+
|
|
254
|
+
The external re-audit covered the repositories under `Documents/workspace/testing/`
|
|
255
|
+
using five clean forks. It reports no target-repository writes, commits or Java-file
|
|
256
|
+
changes. The initial score of **8.0/10** was superseded by the addendum after the
|
|
257
|
+
previously incomplete `risk --limit 0` run was confirmed; the governing assessment is
|
|
258
|
+
**7.5/10**, the first decline in the series. No previously closed semantic fix was
|
|
259
|
+
reported as broken, but availability and contract reliability regressed.
|
|
260
|
+
|
|
261
|
+
| ID | Severity | Finding | Required future closure |
|
|
262
|
+
|---|---:|---|---|
|
|
263
|
+
| AUD-614-F | Critical | **Closed in this verification.** The reported `/dev/null` false-success is not reproducible in the current `5.9.8` checkout: invalid TeaVM input returns `exit 1` and the identical structured stderr envelope with normal stdout capture or stdout discarded. A dedicated redirection matrix now protects this boundary. Keep release-artifact verification on native Windows/MSYS because the external witness remains contradictory. | Keep the redirection matrix green across error classes, entry points and platforms. |
|
|
264
|
+
| AUD-614-L | Critical / regression | `audit-report` is not reliably bounded. `thingsboard` (3,714 files) completed once in 136 s but timed out after more than 5 minutes under concurrent load; JSON, YAML and Markdown all showed the same sensitivity. `tutorials` remained at 5m39.6s with zero stdout. | Profile contention and shared-cache/worker behaviour, expose stages, enforce a deadline and structured partial/failure output, and define a supported repository-size/load envelope. |
|
|
265
|
+
| AUD-614-RISK-L0 | High / regression | **Closed in this fix.** `risk --limit 0` now returns a fast explicit zero-row view without constructing the repository-wide composer. It publishes `risks: []`, `shown: 0`, null totals and `analysis_skipped: true`, so an empty requested view is not misread as a zero-risk census. The real TeaVM flow completes within 12 s and the dedicated regression passes. | Keep the zero-row contract and ensure filters that request actual composition continue through the normal analysis path. |
|
|
266
|
+
| AUD-614-SELFTEST-TIMEOUT | High / contract regression | **Closed in this fix.** `selftest` now treats `--timeout` as an overall execution deadline, bounds each child by the remaining budget, emits structured errors for the interrupted and unstarted rows, and returns code 75. The real TeaVM flow and dedicated regression pass. The separate fourth-run hang remains mixed evidence. | Keep the parent/child deadline and code-75 contract green on the installed entry point and TeaVM. |
|
|
267
|
+
| AUD-614-WIN-PROC | Medium | On Windows/MSYS, timeout or SIGTERM can leave `ask.exe` descendants alive; the MSYS PID cannot be cleaned with native `taskkill`. The audit observed low-memory orphan processes after a timed-out run. | Implement signal/CTRL_BREAK cleanup and Windows Job Objects or document a verified equivalent; test parent and descendant termination from native Windows and Git Bash. |
|
|
268
|
+
| AUD-614-G | Medium | **Closed in this fix.** The shared error authority now normalizes legacy producer spellings to canonical uppercase codes: `NO_DIFF_SOURCE` and `INVALID_LICENSE`. The TeaVM `review-pr` flow and activation contract tests pass. | Keep all public error producers on the canonical code authority. |
|
|
269
|
+
| AUD-614-E | Low / semantic parity | **Closed in this fix.** The event topology branch now publishes `risk_level: unknown` for `not_found`, matching `impact` and normal `impact-chain`; `low` remains reserved for a resolved topology with no measured risk. | Keep not-found payloads generated from the shared unknown-risk semantics. |
|
|
270
|
+
| AUD-614-I | Medium / contract | **Closed in this fix.** The user manual no longer promises `~10K` for `cold-start --compact`; it now states that the orientation subset depends on the stored snapshot, exposes `estimated_tokens`, and recommends checking the measured size before direct AI injection. The CLI help and payload already carried the same non-fixed-size contract. | Keep the manual, help and payload wording derived from the snapshot-size contract; a hard ceiling remains a separate product decision. |
|
|
271
|
+
| AUD-614-INTENT-TIE | Medium | **Closed as a false tie.** Both questions score `2.8284`, but they are different declared queries: `endpoint security` selects a target-required intent and correctly refuses without a route, while `security surface` selects a repository-wide intent. Equal scores across different inputs are not competing candidates. A focused regression locks the distinction. | Keep target-required admission separate from repository-wide intent selection. |
|
|
272
|
+
| AUD-614-07 | Low / UX regression | **Closed in this verification.** The installed `ask spring-audi` entry point returns the command-admission error with `Did you mean: spring-audit?`; the TeaVM path/typo regression battery passes. The external wording report is not reproducible in the current checkout. | Keep command admission, error wording and help aligned in the installed-CLI test. |
|
|
273
|
+
| AUD-614-JUNIT4 | Medium / classification | **Closed in this fix.** A repository is classified as `test` only when it has the `junit:junit` coordinate and all Java sources are test sources; applications and libraries that merely use JUnit retain their structural type. | Keep the dependency-plus-source-population regression green. |
|
|
274
|
+
|
|
275
|
+
### External Audit Intake — `AUD-615` re-audit, release 5.9.9
|
|
276
|
+
|
|
277
|
+
The external re-audit covered only repositories under `Documents/workspace/testing/`,
|
|
278
|
+
with additional robustness passes over `micronaut-guides`, `jhipster-sample-app` and
|
|
279
|
+
`mall` (including a non-English README). The report contains two headline scores (**8.0/10**
|
|
280
|
+
and **8.4/10**) and a methodological limitation: forks shared `~/askaudit_599`, so output
|
|
281
|
+
files were deleted or interleaved during the critical `audit-report` retest. The detailed
|
|
282
|
+
findings below take precedence over either headline score. No target-repository mutation
|
|
283
|
+
was reported.
|
|
284
|
+
|
|
285
|
+
| ID | Severity | Finding | Required future closure |
|
|
286
|
+
|---|---:|---|---|
|
|
287
|
+
| AUD-615-F | Critical | **Confirmed fixed on Windows/Git Bash.** Two independent forks report 11/11 successful reproductions: redirecting stdout to `/dev/null` preserves `exit 1` and the byte-identical structured stderr envelope. The fix also covers `INVALID_USAGE` (`--depth 0`), not only `INVALID_INPUT`. | Preserve the cross-platform redirection matrix and repeat it against release artefacts. |
|
|
288
|
+
| AUD-615-RISK-L0 | High / regression | **Confirmed fixed.** `risk --limit 0` returns in about 0.8–1.5 s with `status: zero_row_view`, `analysis_skipped: true`, empty requested rows and null totals; it avoids constructing the discarded full analysis. | Keep the semantic zero-row contract and test non-zero limits through the normal analysis path. |
|
|
289
|
+
| AUD-615-SELFTEST-TIMEOUT | High / contract regression | **Confirmed fixed in this sample.** `selftest --timeout 5` returns exit 75 with 8,365 bytes of structured diagnostics, including the fourth attempt. This improves the mixed evidence from previous rounds but does not prove the separate hang impossible. | Keep the overall deadline, child budget propagation and code-75 envelope under repeated installed-CLI runs. |
|
|
290
|
+
| AUD-615-L | Critical / regression | **Open, scope corrected.** `audit-report --format markdown` remains non-deterministic under contention: identical `thingsboard` runs measured 200 s timeout versus 137.98 s success; an isolated run took 114 s. The 700 s fork lost its output to shared scratch interference. JSON/YAML returned honest `OUTPUT_TOO_LARGE`, so they are not part of this bug. | Isolate per-run artefacts, profile contention/cache/worker scheduling, add stage visibility and a bounded timeout with structured failure/partial output. Define the supported size/load envelope. |
|
|
291
|
+
| AUD-615-TUTORIALS | High / availability trend | Root compact on `tutorials` increased monotonically from 4m00.1s in 5.9.6 to 6m20.1s in 5.9.9, exit 124 with zero stdout. | Attribute and bound the cost before large-monorepo claims. |
|
|
292
|
+
| AUD-615-WIN-PROC | Medium | **Still open.** Seven `ask.exe` processes remained after successful Windows runs; the footprint was small, but descendant cleanup appears incomplete. | Validate process-tree cleanup for successful and timed-out runs with native Windows/Git Bash controls and Job Objects or a verified equivalent. |
|
|
293
|
+
| AUD-615-INTENT-TIE | Medium / semantic | **Closed as a false tie.** The equal score belongs to different questions, not two candidates for one question. `endpoint security` requires an endpoint anchor and refuses without one; `security surface` is repository-wide and resolves. | Keep the focused regression and do not collapse target-required intent into a global query. |
|
|
294
|
+
| AUD-615-E | Low / semantic parity | **Closed in this fix.** All three impact-family not-found paths publish `risk_level: unknown`; a focused TeaVM regression covers the events outlier. | Keep not-found payloads generated from the shared unknown-risk semantics. |
|
|
295
|
+
| AUD-615-07 | Low / evidence conflict | **Closed by isolated verification.** TeaVM's installed-compatible entry point returns `Did you mean: spring-audit?` with exit 2; the report's detailed-table wording is contradicted by both direct evidence and the existing admission regression. | Keep the installed-entry-point assertion green. |
|
|
296
|
+
| AUD-615-JUNIT4 | Medium / classification | **Closed in this fix.** JUnit4 test-only repositories now classify as `test` from dependency and source-location evidence, without a broad name heuristic. | Keep the dependency-plus-source-population regression green. |
|
|
297
|
+
| AUD-615-DRIFT | Low / investigation | **Closed in this fix.** Spring's explicit `default` profile now normalizes to the implicit empty active-profile set in the access-snapshot authority, so implicit capture and explicit `--profile default` read the same series. TeaVM capture/query and a focused store regression pass. | Keep profile normalization at the snapshot boundary. |
|
|
298
|
+
| AUD-615-COLD-COMPACT | Low / product decision | **Closed as an accepted contract.** A byte-identical 88,265-byte result does not contradict the snapshot-dependent compact contract. The product deliberately exposes `estimated_tokens` rather than claiming a hard size ceiling. | Reopen only with evidence that help, payload or manual promise a fixed bound. |
|
|
299
|
+
|
|
300
|
+
**Methodology control.** Future parallel audits must allocate a unique UUID/timestamp
|
|
301
|
+
scratch directory per fork. Shared `~/askaudit_599` caused cross-fork interference and
|
|
302
|
+
prevented definitive output capture for `AUD-615-L`.
|
|
303
|
+
|
|
304
|
+
**Commercial interpretation.** The report contains conflicting price bands (`$25-40` and
|
|
305
|
+
`$50-65` per developer/month). Until `AUD-615-L` and the large-repository trend are closed,
|
|
306
|
+
retain the conservative `$25-40` band and do not market `audit-report --format markdown`,
|
|
307
|
+
the root command, or production CI gating for repositories above roughly 3,000 files.
|
|
308
|
+
The additional repositories showed correct Spring/full-stack detection and Chinese README
|
|
309
|
+
encoding handling, with no new false-positive or false-negative finding.
|
|
310
|
+
|
|
311
|
+
**Confirmed stable in this round.** Root cache reuse (cold 267 s to warm 1-2 s),
|
|
312
|
+
`pr-impact`/`pr-risk --files -`, progress propagation through `pack gate --since`,
|
|
313
|
+
`explain` error routing, impact exit status, self-audit population explanation,
|
|
314
|
+
endpoint compact disclosure, Spring detection across six controls, baseline safety and
|
|
315
|
+
the earlier `/dev/null` fix matrix were revalidated without regression. The intermittent
|
|
316
|
+
`retrieve endpoint-security` issue had no failures in the latest 18 runs (51-run
|
|
317
|
+
history: about 2%); keep it as a monitored investigation rather than a closure claim.
|
|
318
|
+
|
|
319
|
+
**Commercial interpretation.** The first headline estimate of `$45-58/developer/month`
|
|
320
|
+
is superseded by the corrected assessment of `$25-40/developer/month`. ASK remains
|
|
321
|
+
credible for normal repositories, but the product must not claim enterprise-scale
|
|
322
|
+
support or production CI gating for repositories above roughly 3,000 files until
|
|
323
|
+
`AUD-614-F` and `AUD-614-L` have a bounded, independently reproduced closure. The
|
|
324
|
+
Windows process-tree item remains a platform-specific reliability risk. The absence
|
|
325
|
+
of target mutation remains a positive safety signal, not evidence of availability.
|
|
245
326
|
|
|
246
327
|
**Commercial interpretation.** Normal repositories up to roughly 4,000 files remain a
|
|
247
328
|
credible adoption target, with the external estimate at **$40-55/developer/month**.
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
> `pack assessment` and `pack gate`, and make evidence and safe change the
|
|
6
6
|
> product surface. This roadmap must not introduce a competing product thesis.
|
|
7
7
|
|
|
8
|
-
> **CURRENT UPDATE — release `5.9.
|
|
8
|
+
> **CURRENT UPDATE — release `5.9.10`, following the external `5.9.3` reconciliation.**
|
|
9
9
|
> The commercial increment adds stateless context budgets, a reproducible context-cost harness,
|
|
10
10
|
> source-level migration SARIF and an opt-in workspace entitlement pilot. Advisory behaviour remains
|
|
11
11
|
> the default; named-buyer validation is still required before broad enforcement.
|
|
@@ -19,6 +19,20 @@
|
|
|
19
19
|
> non-reproduction did not cover the payload shape now identified. Details are
|
|
20
20
|
> in [`AUDIT-2026-08-26-EXTERNAL-5.9.0.md`](AUDIT-2026-08-26-EXTERNAL-5.9.0.md).
|
|
21
21
|
|
|
22
|
+
> **RE-AUDIT — 5.9.9, received 2026-08-27.** The external re-audit confirms the
|
|
23
|
+
> cache, stdin, progress, error-channel and population corrections, and raises the
|
|
24
|
+
> assessment to the **8.0-8.4/10** range. It does not clear the availability gate:
|
|
25
|
+
> `audit-report --format markdown`
|
|
26
|
+
> remains non-deterministic under contention, while the root compact flow on `tutorials`
|
|
27
|
+
> has worsened across five versions to 6m20.1s with no stdout. `risk . --limit 0` and
|
|
28
|
+
> `selftest --timeout` are now bounded by explicit contracts. The former `/dev/null`
|
|
29
|
+
> false-success is confirmed fixed on Windows/Git Bash in 11/11 reproductions. Do not position ASK
|
|
30
|
+
> for enterprise-scale repositories or production CI gating above roughly 3,000 files
|
|
31
|
+
> until the availability contracts are independently closed. The report contains conflicting
|
|
32
|
+
> commercial bands (`$25-40` and `$50-65`); retain the conservative `$25-40/developer/month`
|
|
33
|
+
> position pending independent closure. Full detail is recorded as `AUD-615` in the
|
|
34
|
+
> development roadmap and defect ledger.
|
|
35
|
+
|
|
22
36
|
> **RE-AUDIT — 5.9.7, received 2026-08-27.** Three independent forks added roughly
|
|
23
37
|
> 130 invocations and retested the AUD-611 queue. The score rose to **7.8/10** and
|
|
24
38
|
> confirmed the help, stdin, Git-ref, intent, impact-score and progress corrections.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Manual de usuario — ASK Engine
|
|
2
2
|
|
|
3
|
-
> Versión de la herramienta: **5.9.
|
|
3
|
+
> Versión de la herramienta: **5.9.10** · El comando que se ejecuta es `ask`.
|
|
4
4
|
> (`sourcecode` sigue funcionando como alias en desactivación y reenvía a `ask`.)
|
|
5
5
|
> Público: personas que van a usar `ask` por primera vez, sin conocimiento previo.
|
|
6
6
|
|
|
@@ -8,7 +8,14 @@
|
|
|
8
8
|
|
|
9
9
|
## 1. ¿Qué es ASK Engine?
|
|
10
10
|
|
|
11
|
-
### Contratos de fiabilidad de la versión 5.9.
|
|
11
|
+
### Contratos de fiabilidad de la versión 5.9.10
|
|
12
|
+
|
|
13
|
+
**Límites de disponibilidad conocidos.** No sitúes `ask audit-report . --format
|
|
14
|
+
markdown` ni el comando raíz compacto detrás de un timeout estricto en repositorios
|
|
15
|
+
de más de unas 3.000 fichas. La entrega Markdown de `audit-report` sigue siendo
|
|
16
|
+
susceptible a contención. Para CI o ejecución supervisada, guarda primero `risk`,
|
|
17
|
+
usa `audit-report --from-risk`, prefiere JSON/YAML y conserva el progreso. El
|
|
18
|
+
estado de cierre está en la [hoja de ruta de desarrollo](DEVELOPMENT-ROADMAP.md#aud-615-re-audit-release-599).
|
|
12
19
|
|
|
13
20
|
Las entradas inválidas se rechazan antes del análisis costoso mediante el
|
|
14
21
|
envelope estructurado `INVALID_INPUT`: un `--consumer` inexistente, un feed CVE
|
|
@@ -1010,7 +1017,7 @@ foto).
|
|
|
1010
1017
|
`ask cache freshness .` si necesitas comprobar su relación con el HEAD actual.
|
|
1011
1018
|
|
|
1012
1019
|
**Aviso de tamaño:** la salida completa es grande (~100K–200K tokens en repos medianos).
|
|
1013
|
-
- `--compact`: emite un subconjunto
|
|
1020
|
+
- `--compact`: emite un subconjunto de orientación con `status`, `git_head`, stacks y puntos de entrada. Su tamaño depende del snapshot persistido y no tiene un techo fijo; para imponer un límite de salida usa la configuración de ceiling o guarda la respuesta con `--output`. **Comprueba `estimated_tokens` antes de inyectarlo directamente en una IA.**
|
|
1014
1021
|
- `--output` / `-o`: guarda la foto completa en fichero para herramientas de búsqueda local.
|
|
1015
1022
|
- `--copy` / `-c`: al portapapeles. Con la salida completa esto son cientos de KB; normalmente lo que quieres copiar es `--compact -c`.
|
|
1016
1023
|
|
|
@@ -46,16 +46,23 @@ 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.10, `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.10, with release-artifact verification
|
|
56
56
|
remaining for detached execution and pack evidence.
|
|
57
57
|
|
|
58
|
-
### Reliability contracts in 5.9.
|
|
58
|
+
### Reliability contracts in 5.9.10
|
|
59
|
+
|
|
60
|
+
**Known availability limits.** Do not place `ask audit-report . --format markdown`
|
|
61
|
+
or the root compact command behind a strict timeout on repositories above roughly
|
|
62
|
+
3,000 files. Markdown audit-report delivery is still contention-sensitive; for a
|
|
63
|
+
supervised or CI workflow, save `risk` first and use `audit-report --from-risk`,
|
|
64
|
+
prefer JSON/YAML, and retain progress output. The current closure status is in the
|
|
65
|
+
[development roadmap](DEVELOPMENT-ROADMAP.md#aud-615-re-audit-release-599).
|
|
59
66
|
|
|
60
67
|
Invalid analysis inputs fail before expensive work and use the structured
|
|
61
68
|
`INVALID_INPUT` envelope: a missing `--consumer` repository, a malformed CVE
|
|
@@ -236,7 +243,7 @@ pipx install sourcecode # isolated install, no venv needed
|
|
|
236
243
|
|
|
237
244
|
# Verify
|
|
238
245
|
ask version
|
|
239
|
-
# ask 5.9.
|
|
246
|
+
# ask 5.9.10
|
|
240
247
|
```
|
|
241
248
|
|
|
242
249
|
Requires Python 3.9+.
|
|
@@ -629,6 +636,11 @@ JSON output includes `evidence_manifest`: stable claim IDs mapped to source span
|
|
|
629
636
|
inputs, ASK version, git HEAD and freshness metadata. Signed reports sign this manifest as
|
|
630
637
|
part of the canonical payload.
|
|
631
638
|
|
|
639
|
+
On large repositories, do not use Markdown delivery in a strict-timeout CI path:
|
|
640
|
+
the current reliability queue records contention-sensitive completion. Persist a
|
|
641
|
+
`risk` payload first and use `--from-risk`; JSON/YAML are the safer supervised
|
|
642
|
+
formats while the Markdown issue remains open.
|
|
643
|
+
|
|
632
644
|
```bash
|
|
633
645
|
ask audit-report .
|
|
634
646
|
ask audit-report . --profile prod --format markdown
|
|
@@ -44,6 +44,12 @@ UNMATCHED = "no_rule_matched"
|
|
|
44
44
|
_NOT_A_CLASS = frozenset({"chains", "summary"})
|
|
45
45
|
|
|
46
46
|
|
|
47
|
+
def normalise_profiles(profiles: "Optional[set[str]]") -> "set[str]":
|
|
48
|
+
"""Map Spring's implicit ``default`` profile to the empty active set."""
|
|
49
|
+
return {str(profile).strip() for profile in (profiles or set())
|
|
50
|
+
if str(profile).strip() and str(profile).strip() != "default"}
|
|
51
|
+
|
|
52
|
+
|
|
47
53
|
def _utc_now() -> str:
|
|
48
54
|
return datetime.now(timezone.utc).replace(microsecond=0).isoformat()
|
|
49
55
|
|
|
@@ -83,10 +89,11 @@ def build_snapshot(
|
|
|
83
89
|
"""One capture of the effective access under a profile set."""
|
|
84
90
|
from sourcecode.architectural_baseline import git_commit
|
|
85
91
|
|
|
92
|
+
active_profiles = normalise_profiles(profiles)
|
|
86
93
|
if posture is None:
|
|
87
94
|
from sourcecode.posture import build_posture
|
|
88
95
|
|
|
89
|
-
posture = build_posture(Path(root),
|
|
96
|
+
posture = build_posture(Path(root), active_profiles, properties)
|
|
90
97
|
|
|
91
98
|
routes = routes_from_posture(posture)
|
|
92
99
|
by_class: "dict[str, int]" = {}
|
|
@@ -100,7 +107,7 @@ def build_snapshot(
|
|
|
100
107
|
"captured_at": _utc_now(),
|
|
101
108
|
"commit": commit if commit is not None else git_commit(Path(root)),
|
|
102
109
|
"repo": Path(root).name,
|
|
103
|
-
"profiles": sorted(
|
|
110
|
+
"profiles": sorted(active_profiles),
|
|
104
111
|
"counts": {
|
|
105
112
|
"routes": len(routes),
|
|
106
113
|
"by_access_class": dict(sorted(by_class.items())),
|
|
@@ -138,7 +145,7 @@ def load_series(out_dir: Path, *, profiles: "Optional[set]" = None) -> "list[dic
|
|
|
138
145
|
if not out_dir.is_dir():
|
|
139
146
|
return []
|
|
140
147
|
series: "list[dict]" = []
|
|
141
|
-
wanted = sorted(profiles) if profiles is not None else None
|
|
148
|
+
wanted = sorted(normalise_profiles(profiles)) if profiles is not None else None
|
|
142
149
|
for path in sorted(out_dir.glob(f"{FILENAME_PREFIX}*.json")):
|
|
143
150
|
try:
|
|
144
151
|
payload = json.loads(path.read_text(encoding="utf-8"))
|
|
@@ -280,6 +280,17 @@ class TypeClassifier:
|
|
|
280
280
|
if stack_names & _JVM_STACKS and self._is_multi_module(file_tree):
|
|
281
281
|
return "library"
|
|
282
282
|
|
|
283
|
+
# A JUnit 4-only repository is a test suite, not an unknown application.
|
|
284
|
+
# Require both the dependency and test-only Java sources so an ordinary
|
|
285
|
+
# library that uses JUnit for its own tests keeps its structural type.
|
|
286
|
+
java_paths = [path for path in flat_paths if path.endswith(".java")]
|
|
287
|
+
if (
|
|
288
|
+
"JUnit 4" in framework_names
|
|
289
|
+
and java_paths
|
|
290
|
+
and all("/src/test/" in path or path.startswith("src/test/") for path in java_paths)
|
|
291
|
+
):
|
|
292
|
+
return "test"
|
|
293
|
+
|
|
283
294
|
# Weak CLI heuristic: a top-level bin/ directory (only when nothing stronger).
|
|
284
295
|
if any(path.startswith("bin/") for path in flat_paths):
|
|
285
296
|
return "cli"
|
|
@@ -1029,6 +1029,11 @@ def _set_detected_path(value: str) -> None:
|
|
|
1029
1029
|
_tls.detected_path = value
|
|
1030
1030
|
|
|
1031
1031
|
|
|
1032
|
+
def _explicit_path_was_supplied() -> bool:
|
|
1033
|
+
"""Whether argv contained a repository path later removed by preprocessing."""
|
|
1034
|
+
return bool(_tls.__dict__.get("explicit_path", False))
|
|
1035
|
+
|
|
1036
|
+
|
|
1032
1037
|
# Options that take a value token — their next arg must not be treated as a path.
|
|
1033
1038
|
_OPTIONS_WITH_VALUE: frozenset[str] = frozenset({
|
|
1034
1039
|
"--format", "-f",
|
|
@@ -1271,6 +1276,7 @@ def _preprocess_args(args: list[str]) -> list[str]:
|
|
|
1271
1276
|
``_reject_path_before_subcommand``.
|
|
1272
1277
|
"""
|
|
1273
1278
|
result = _normalise_repository_option(list(args))
|
|
1279
|
+
_tls.explicit_path = False
|
|
1274
1280
|
skip_next = False
|
|
1275
1281
|
_path_index: int = -1
|
|
1276
1282
|
for i, arg in enumerate(result):
|
|
@@ -1302,13 +1308,14 @@ def _preprocess_args(args: list[str]) -> list[str]:
|
|
|
1302
1308
|
# A single missing token that is very close to a command is a command
|
|
1303
1309
|
# typo, not a repository path. Existing directories retain the implicit
|
|
1304
1310
|
# `ask <path>` grammar, including names that resemble commands.
|
|
1305
|
-
if not Path(arg).exists():
|
|
1311
|
+
if not Path(arg).exists() and "/" not in arg and "\\" not in arg:
|
|
1306
1312
|
_command_matches = difflib.get_close_matches(
|
|
1307
1313
|
arg, sorted(_SUBCOMMANDS), n=3, cutoff=0.6
|
|
1308
1314
|
)
|
|
1309
1315
|
if _command_matches:
|
|
1310
1316
|
_reject_unknown_command(arg)
|
|
1311
1317
|
_set_detected_path(arg)
|
|
1318
|
+
_tls.explicit_path = True
|
|
1312
1319
|
_path_index = i
|
|
1313
1320
|
if _path_index >= 0:
|
|
1314
1321
|
result.pop(_path_index)
|
|
@@ -5327,7 +5334,7 @@ def main(
|
|
|
5327
5334
|
# Bare invocation at a human terminal → branded quickstart instead of
|
|
5328
5335
|
# dumping a large JSON blob. Agents/pipes are untouched: any arg/flag, or a
|
|
5329
5336
|
# non-TTY stdout (piped), falls through to the normal analysis + JSON.
|
|
5330
|
-
if len(sys.argv) <= 1 and sys.stdout.isatty():
|
|
5337
|
+
if len(sys.argv) <= 1 and not _explicit_path_was_supplied() and sys.stdout.isatty():
|
|
5331
5338
|
_print_welcome()
|
|
5332
5339
|
raise typer.Exit()
|
|
5333
5340
|
|
|
@@ -13393,7 +13400,7 @@ def risk_cmd(
|
|
|
13393
13400
|
"""
|
|
13394
13401
|
_require_answer_delivery("risk")
|
|
13395
13402
|
_apply_jobs(jobs)
|
|
13396
|
-
from sourcecode.risk import build_risk
|
|
13403
|
+
from sourcecode.risk import build_risk, zero_risk_payload
|
|
13397
13404
|
|
|
13398
13405
|
path = _admit_path(path)
|
|
13399
13406
|
# B18: both spellings of the same fact, resolved by the crosswalk the report
|
|
@@ -13433,6 +13440,19 @@ def risk_cmd(
|
|
|
13433
13440
|
raise typer.Exit(code=1)
|
|
13434
13441
|
band_filter = _resolved_band
|
|
13435
13442
|
|
|
13443
|
+
# AUD-614-RISK-L0: a zero-row view must not construct the full repository-wide
|
|
13444
|
+
# composer only to discard every result. The payload says totals were skipped,
|
|
13445
|
+
# rather than turning an empty requested view into a false zero census.
|
|
13446
|
+
if limit == 0 and not table and not rule_filter and band_filter is None and not top_n:
|
|
13447
|
+
data = zero_risk_payload(
|
|
13448
|
+
path, min_band=min_band, profiles=_profile_set(profile),
|
|
13449
|
+
)
|
|
13450
|
+
_emit_command_output(
|
|
13451
|
+
_serialize_dict(data, format), output_path, copy,
|
|
13452
|
+
success_msg=f"risk written to {output_path} (0 rows requested)",
|
|
13453
|
+
)
|
|
13454
|
+
return
|
|
13455
|
+
|
|
13436
13456
|
# `risk` composes six axes by re-reading five other commands' authorities — it
|
|
13437
13457
|
# is the slowest command in the CLI (15s on BroadleafCommerce) and shipped
|
|
13438
13458
|
# without a single byte on stderr while it ran.
|
|
@@ -13841,6 +13861,10 @@ def audit_report_cmd(
|
|
|
13841
13861
|
`--sign-key` adds an HMAC-SHA256 signature over the canonical JSON payload.
|
|
13842
13862
|
The key is local and explicit; no network trust service or new PKI is implied.
|
|
13843
13863
|
|
|
13864
|
+
On repositories above roughly 3,000 files, do not put Markdown delivery
|
|
13865
|
+
behind a strict timeout: it remains contention-sensitive. For supervised
|
|
13866
|
+
automation, persist `risk` first, use `--from-risk`, and prefer JSON/YAML.
|
|
13867
|
+
|
|
13844
13868
|
\b
|
|
13845
13869
|
Examples:
|
|
13846
13870
|
ask audit-report .
|
|
@@ -19483,7 +19507,8 @@ def cold_start_cmd(
|
|
|
19483
19507
|
finally:
|
|
19484
19508
|
_prog.stop()
|
|
19485
19509
|
if compact:
|
|
19486
|
-
#
|
|
19510
|
+
# Keep the fields that orient a reader; the resulting size depends on
|
|
19511
|
+
# the stored snapshot and is not a fixed token ceiling.
|
|
19487
19512
|
#
|
|
19488
19513
|
# B14. This used to be a fixed key allowlist and a silent `[:30]`, and it
|
|
19489
19514
|
# took 1 968 807 characters to 16 452 (−99,2 %) while removing 11 of 19
|