sourcecode 5.8.13__tar.gz → 5.8.14__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.
Potentially problematic release.
This version of sourcecode might be problematic. Click here for more details.
- {sourcecode-5.8.13 → sourcecode-5.8.14}/CHANGELOG.md +23 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/PKG-INFO +3 -3
- {sourcecode-5.8.13 → sourcecode-5.8.14}/README.md +2 -2
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/DEFECT-LEDGER.md +35 -10
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/DEVELOPMENT-ROADMAP.md +36 -25
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/EXECUTIVE-ROADMAP.md +46 -13
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/USER_GUIDE.md +1 -1
- {sourcecode-5.8.13 → sourcecode-5.8.14}/pyproject.toml +1 -1
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/change_plan.py +8 -1
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/cli.py +59 -8
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/compare.py +7 -1
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/execution_plan.py +19 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/migrate_check.py +16 -7
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/posture.py +52 -9
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/readonly.py +32 -8
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/rename_refactor.py +14 -4
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/repository_ir.py +42 -14
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/steps_impact.py +1 -1
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/risk.py +13 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/schema.py +6 -3
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/security_posture.py +9 -1
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/selftest.py +46 -7
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/serializer.py +13 -4
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/spring_model.py +13 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/summarizer.py +54 -12
- {sourcecode-5.8.13 → sourcecode-5.8.14}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/.gitignore +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/.ruff.toml +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/CLAUDE.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/CONTRIBUTING.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/LICENSE +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/NOTICE +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/SECURITY.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/CACHE.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/MANUAL-USUARIO.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/overview.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/contracts.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/licensing-schema.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/migrate-check.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/README.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/posture.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/privacy.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/schema.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/scripts/perf_gate.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/scripts/perf_harness.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/answer_bounds.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/audit_clusters.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/audit_recipe.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/audit_report.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/audit_since.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/breaking_changes.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/build_modules.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/cache.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/cache_model.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/classifier.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/context_graph.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/empty_reach.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/endpoint_disposition.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/explain_endpoint.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/field_deprecations.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/functional_routes.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/license.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/manifest_cache.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/output_bounds.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/output_ceiling.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/output_sink.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/parallel.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/parse_cache.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/phased_run.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/product_info.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/progress.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/regress.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/release_info.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/remediation_diff.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/risk_model.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/schema_producers.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/schema_registry.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/timeline_cache.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/supabase/functions/README.md +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.8.13 → sourcecode-5.8.14}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.8.14] — 2026-08-20
|
|
4
|
+
|
|
5
|
+
*Fourth-audit remediation release. The external `5.8.13` audit subject remains
|
|
6
|
+
the evidence for outstanding field reproduction and performance work.*
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
- ASK-09 selftest now reads typed error documents from either stdout or stderr
|
|
10
|
+
and clears inherited execution controls that would change the ceiling probe.
|
|
11
|
+
- Migration readiness names only dimensions that actually participate in its
|
|
12
|
+
aggregate, so an EclipseLink repository does not describe an excluded Hibernate
|
|
13
|
+
axis as an input.
|
|
14
|
+
- `impact` separates directly resolved targets from expanded analysis seeds and
|
|
15
|
+
implementation classes. `plan` and `compare` retain the expanded cone while
|
|
16
|
+
publishing container-wired components in their checklist and cost dimensions.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- `risk` now publishes its composition working set: source files, audit findings,
|
|
20
|
+
candidate defects and composed defects. This instruments the rare field-scale
|
|
21
|
+
zero-output report without claiming it is closed before reproduction.
|
|
22
|
+
- The roadmap and defect ledger distinguish these shipped changes from the two
|
|
23
|
+
remaining field-gated items: `risk` output reproduction and controlled
|
|
24
|
+
`data-exposure --config` performance measurement.
|
|
25
|
+
|
|
3
26
|
## [5.8.13] — 2026-08-20
|
|
4
27
|
|
|
5
28
|
*MCP reliability release after deep multi-repository stress testing.*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 5.8.
|
|
3
|
+
Version: 5.8.14
|
|
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
|
|
@@ -49,7 +49,7 @@ Description-Content-Type: text/markdown
|
|
|
49
49
|
|
|
50
50
|
**Context · Impact · Migration · Architecture · Review — everything from one structural model.**
|
|
51
51
|
|
|
52
|
-

|
|
53
53
|

|
|
54
54
|
|
|
55
55
|
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
|
|
@@ -151,7 +151,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
151
151
|
# pip / pipx
|
|
152
152
|
pipx install sourcecode # or: pip install sourcecode
|
|
153
153
|
|
|
154
|
-
ask version # ask 5.8.
|
|
154
|
+
ask version # ask 5.8.14 — and, on a build that has aged,
|
|
155
155
|
# how many releases have probably shipped since
|
|
156
156
|
```
|
|
157
157
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**Context · Impact · Migration · Architecture · Review — everything from one structural model.**
|
|
6
6
|
|
|
7
|
-

|
|
8
8
|

|
|
9
9
|
|
|
10
10
|
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
|
|
@@ -106,7 +106,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
106
106
|
# pip / pipx
|
|
107
107
|
pipx install sourcecode # or: pip install sourcecode
|
|
108
108
|
|
|
109
|
-
ask version # ask 5.8.
|
|
109
|
+
ask version # ask 5.8.14 — and, on a build that has aged,
|
|
110
110
|
# how many releases have probably shipped since
|
|
111
111
|
```
|
|
112
112
|
|
|
@@ -16,24 +16,49 @@ The facts these rows are keyed to are published: `ask schema facts-v1` prints th
|
|
|
16
16
|
|
|
17
17
|
## Current Synchronization
|
|
18
18
|
|
|
19
|
-
**As of 2026-08-20, release `5.8.
|
|
20
|
-
the
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
**As of 2026-08-20, release `5.8.14` and the fourth external re-audit:** the audited
|
|
20
|
+
snapshot remains `3dde0376`; the report compares the four audit rounds and scores this one
|
|
21
|
+
**90/100** (75, 80, 78, 90). It exercised 53/61 invocables (87%), ran no application and
|
|
22
|
+
left the repository unchanged. Its 40+ longitudinal functional anchors are unchanged, so
|
|
23
|
+
there is no reported product regression. The `5.8.14` release ships the implementations
|
|
24
|
+
recorded below; they remain distinguished from facts verified on the `5.8.13` subject.
|
|
25
|
+
Only this table declares present state.
|
|
26
|
+
|
|
27
|
+
**Release status:** entries marked “pending `5.8.14`” in their historical wording are
|
|
28
|
+
shipped in `5.8.14`; a re-audit is still required wherever the row says so.
|
|
24
29
|
|
|
25
30
|
| Rows | Current status | Evidence |
|
|
26
31
|
|---|---|---|
|
|
27
|
-
| `AUD-588-B01
|
|
32
|
+
| `AUD-588-B01` / `AUD-589-B01`, `C3-122` | **open, P0 for `risk`; `audit-report` corrected** | `9884488` corrected `audit-report` to refuse with typed `OUTPUT_TOO_LARGE` and produce its requested artifact. `risk` nevertheless exited 0 twice on the first shared-cache invocations with 0 bytes and no `-o` file, then succeeded seven times. `5cfa9ba` now publishes the source, audit-finding, candidate-defect and composed-defect working set, including partial answers. Repeat the real entry-point protocol before closure. |
|
|
28
33
|
| `AUD-511-R01` / `AUD-588-B03` | **implemented in 5.8.12** | `13362ec` makes SEC-009 read comment-blanked Java, so a Javadoc profile cannot override the live `@Profile("!m3")` declaration. |
|
|
29
34
|
| `AUD-588-B04` | **retracted audit premise** | `data-exposure` correctly preserves `chain_decision`; the reported `coverage_unknown` routes were custom-gate annotations whose application was not configured. `fd34eb1` remains a valid additive disclosure, but no further B04 fix is due. |
|
|
30
35
|
| `AUD-588-B05` | **closed** | `c15f5b6`; changed container-wired components block a false `unaffected` disposition. |
|
|
31
|
-
| `AUD-511-R03` / `AUD-588-B07` | **implemented
|
|
36
|
+
| `AUD-511-R03` / `AUD-588-B07` | **implemented, pending 5.8.14 re-audit** | `f613df9` makes ASK-09 parse the typed document from stdout or stderr, including a progress-prefixed stderr stream, and removes the four inherited variables that change its precondition. The regression exercises the real typed refusal shape. The prior claim that the payload premise was false remains retracted as an environment-contamination artifact. |
|
|
32
37
|
| `AUD-588-B08` | **closed** | `c084555`; `impact` publishes its independent stdout-byte budget. |
|
|
33
38
|
| `MCP-001` | **closed 5.8.13** | Deep corpus testing reproduced concurrent `CliRunner` stream capture leaking a tool response to the host stdout. `b2c9660` serializes the narrow process-global capture seam; concurrent real MCP calls and a regression test verify response isolation. |
|
|
34
|
-
| `AUD-
|
|
35
|
-
| `AUD-
|
|
36
|
-
| `AUD-
|
|
39
|
+
| `AUD-513-N01` (`N-1`) | **closed in 5.8.14** | `rename-class` rewrote three Petclinic files under both `ASK_READONLY=1` and `--no-write`, then exited 0. The audit restored the tree; this is a write-policy breach, not an artifact-directory exception. `readonly.guard_mutation()` now refuses before any planned source write or physical rename; help names the command as mutating and regressions cover both readonly controls plus `--dry-run`. |
|
|
40
|
+
| `AUD-513-N02` / `B-4` / `N-5` | **N02/B-4 implemented in 5.8.14; N-5 open** | `posture.summary.unconditional` counted 1,697 on a non-Spring Struts tree and 1,573 on Mall, and `security` was `0/0/0` with no population. The posture projection now uses the canonical Spring IoC bean population, publishes its population/unit and separates unconditional security beans. Regressions cover non-Spring, mixed-bean and conditional/unconditional security fixtures. Progress/advice still use incompatible “Java files” scopes (`N-5`), so the `AUD-588-F02` family remains open. |
|
|
41
|
+
| `AUD-513-B01` / `B-3` / `B-5` | **B01/B-5 implemented in 5.8.14; B-3 closed as revalidated** | A MyBatis XML paired with a `*Mapper.java` interface now takes precedence over an absent `@Mapper` annotation, preserving XML-backed/`@MapperScan` interfaces in `mapper_interfaces` rather than misclassifying them as DTO mappers. `imports_found` now contains only actual Java imports; code, XML and build matches are emitted as `evidence`, including in compact output. `B-3` was stale against the current source: both views consume `JAVA_SPRING_SECTIONS`; a real MyBatis Mapper/XML regression proves the section is retained by `--agent`. |
|
|
42
|
+
| `AUD-513-N03/N04/N07/N08/N09`, `B-6/B-7/B-8`, `D-09` | **N03/N04/N07/N08/N09 implemented in 5.8.14; remainder open** | `impact` now always publishes the `candidates` field its not-found message names, including `[]` when no close symbol exists. Budget advice no longer calls partial snapshot/RIS evidence a warm cache: it identifies that presence and says context/parse are unknown before analysis, whose payload then reports all four actual layers. README operational sections (`clone`, install, build, getting started, troubleshooting and related headings) are never promoted into a project summary; with no descriptive prose compact output publishes `project_summary: null` and `summary_basis`. `security_posture.limitations` is now cache-state invariant; dynamic execution advice travels in `security_posture.operational_hints`. Every numeric output bound rejects negative values at parse time with a structured `INVALID_INPUT` envelope (`flag`, `value`, `expected`); `--limit 0` still means no cap wherever that behavior was published. Budgets overrun, timing coverage is inconsistent, compact hides unresolved identities and cost anchors remain stale. |
|
|
43
|
+
| `AUD-588-B11` (container/units subset) | **partially implemented in 5.8.14** | `d745d31` discovers nested Maven modules; `273ae8e` suppresses unsupported `pr-impact.unaffected_basis`. `e53507d` separates direct impact matches from analysis seeds and implementation classes; `8386744` carries the established container-wiring fact into plan checklists and compare cost dimensions. Source population units and risk-tier wording remain open. |
|
|
44
|
+
| `AUD-511-R02` / `AUD-589-B02` / `AUD-513-N06` | **partially corrected; `data-exposure` open, P1** | Nine of ten measured commands recovered, many to their best historical timings. `data-exposure --config` did not: 42.7 s versus 16.2 s in 5.8.8 and a 28.9 s model, with byte-equivalent output. Measure it with the idle-host, isolated-cache, interleaved-control protocol before changing code, then compare its reuse path with `validation`. |
|
|
45
|
+
| `AUD-588-B02`, `B06`, B11 residuals, `B12` | **B02/B06 closed; B11/B12 open, P2** | `3869c87` excludes explicit EclipseLink from Hibernate applicability and effort; `037223e` publishes provider non-coverage. The re-audit verifies both and the payload reduction; `cf57457` makes aggregate wording name only applicable dimensions. Complete B11 consumer parity and calibrate B12 only from provenance-bearing controlled samples. |
|
|
46
|
+
|
|
47
|
+
### Fourth Re-audit: 5.8.13
|
|
48
|
+
|
|
49
|
+
The fourth pass verifies the current facts that supersede the prior intake. There is no
|
|
50
|
+
crash/traceback and no regression in the published anchors. `B-2/D-05` remains a retracted
|
|
51
|
+
servlet premise, and the audit additionally verifies EclipseLink applicability/non-coverage,
|
|
52
|
+
typed `audit-report` refusal, nested Maven discovery and the `unaffected_basis` correction.
|
|
53
|
+
It leaves the following concrete queue rather than reopening closed facts.
|
|
54
|
+
|
|
55
|
+
| Recommendation | Status and direction |
|
|
56
|
+
|---|---|
|
|
57
|
+
| `AUD-588-F02` shared answer contracts | **Partial.** Reuse the existing authorities for exact target versus implementation cone, named source populations and container reach in plan/compare; do not add a parallel detector. |
|
|
58
|
+
| `AUD-588-F03` versioned cost calibration | **Open.** Capture repository, cache state, sample count and host provenance. The immediately actionable measurement is `data-exposure --config`; clean data is required before recalibration. |
|
|
59
|
+
| Risk cache observability | **Recommended hardening.** Publish working-set unit counts under progress or in the envelope to distinguish an empty compositor from a present-but-incomplete cache. |
|
|
60
|
+
| `AUD-588-F05` coverage expansion | **Locally verified only.** Dirty-tree `verify-edit` and the eight mutating/denied invocables remain unexercised in all four external rounds. |
|
|
61
|
+
| EclipseLink migration automation | **Deferred product feature.** The current applicability and non-coverage facts are verified; provider-specific migration automation is not a corrective fix. |
|
|
37
62
|
|
|
38
63
|
### Re-audit Intake: 5.8.11
|
|
39
64
|
|
|
@@ -3,34 +3,45 @@
|
|
|
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 STATE — 2026-08-20 — 5.8.13
|
|
7
|
-
>
|
|
8
|
-
> The
|
|
9
|
-
>
|
|
10
|
-
>
|
|
11
|
-
>
|
|
12
|
-
>
|
|
13
|
-
>
|
|
14
|
-
>
|
|
15
|
-
> The
|
|
16
|
-
>
|
|
17
|
-
>
|
|
6
|
+
> **CURRENT STATE — 2026-08-20 — fourth independent re-audit of 5.8.13**
|
|
7
|
+
>
|
|
8
|
+
> The fourth pass against the unchanged `saint-server` snapshot (`3dde0376`) raises the
|
|
9
|
+
> external score to **90/100** (75 -> 80 -> 78 -> 90), with the same **53/61 invocables
|
|
10
|
+
> (87%)** and no repository writes. It reports **no functional regression**: the 40+
|
|
11
|
+
> longitudinal anchors, including endpoints, posture, verify, contract, data-exposure and
|
|
12
|
+
> MCP, remain byte-equivalent. The audit subject is release `5.8.13`; release `5.8.14`
|
|
13
|
+
> ships the documented remediations without rewriting that external evidence.
|
|
14
|
+
>
|
|
15
|
+
> The prior 5.8.13 intake is superseded where it said that nine defects were new. The
|
|
16
|
+
> re-audit verifies the EclipseLink applicability/non-coverage fix, `audit-report`'s typed
|
|
17
|
+
> output refusal, servlet-mapping retraction, nested Maven discovery and the
|
|
18
|
+
> `unaffected_basis` correction. It also confirms that performance recovered in 9 of 10
|
|
19
|
+
> sampled commands. Historical rows remain below for traceability; this table is the only
|
|
20
|
+
> current correction queue.
|
|
18
21
|
>
|
|
19
22
|
> | Priority | Work | Acceptance direction |
|
|
20
23
|
> |---|---|---|
|
|
21
|
-
> | P0 | `AUD-588-B01` / `AUD-589-B01`
|
|
22
|
-
> | P1 | `AUD-511-
|
|
23
|
-
> |
|
|
24
|
-
> |
|
|
25
|
-
> |
|
|
26
|
-
> | P1 | `
|
|
27
|
-
> |
|
|
28
|
-
>
|
|
29
|
-
> **
|
|
30
|
-
>
|
|
31
|
-
>
|
|
32
|
-
>
|
|
33
|
-
>
|
|
24
|
+
> | P0 | `AUD-588-B01` / `AUD-589-B01`: `risk` still has a rare early path that exits 0 with neither parseable stdout nor its requested `-o` artifact. | **Instrumented, still open:** `5cfa9ba` publishes source, finding, candidate-defect and composed-defect working-set counts in every final/partial answer. Reproduce at least five cold/shared-cache starts and enforce the real-subprocess output invariant if the early return remains. |
|
|
25
|
+
> | P1 | `AUD-511-R03` / `AUD-588-B07`: ASK-09 remains `not_applicable` although its literal clean-environment probe emits `OUTPUT_TOO_LARGE`. | **Implemented in 5.8.14:** `f613df9` parses the typed document from stdout or stderr and clears the four execution variables that alter the probe. The row may close after a clean-environment field re-audit reports `pass`. |
|
|
26
|
+
> | P2 | `AUD-588-B11` residuals: `impact.matched_fqns` says `resolution: exact` while representing a large implementation cone; population labels, container-reach consumers and plan/compare disclosures still diverge. | **Target/cone and consumers implemented in 5.8.14:** `e53507d` separates direct matches, expanded analysis seeds and implementation classes; `8386744` carries existing container wiring into plan checklists and compare cost dimensions. Name source populations and reconcile remaining risk-tier wording. |
|
|
27
|
+
> | P2 | `AUD-588-B02/B06` wording and `AUD-588-B12/F03` calibration: `readiness_aggregate.note` still lists Hibernate after it was excluded, and cost advice needs clean current anchors. | **Wording implemented in 5.8.14:** `cf57457` derives aggregate names from applicable dimensions. Recalibrate only from controlled measurements and record repository, cache state, sample count and host provenance; do not promote the `SEC-009` severity observation into a defect without a product decision. |
|
|
28
|
+
> | P0 | `AUD-513-N01` (`N-1`): `rename-class` ignores `ASK_READONLY=1` and `--no-write`, rewrites source and exits 0. | **closed in 5.8.14:** a mutation guard rejects before any source write or physical rename; help lists `rename-class` as mutating; regressions cover both controls and readonly `--dry-run`. |
|
|
29
|
+
> | P1 | `AUD-513-N02` + `B-4` + `N-5`: posture counts IR types as unconditional beans, reports security `0/0/0` with no population, and calls two scopes “Java files”. | **N02/B-4 implemented in 5.8.14:** posture now counts only Spring IoC bean definitions and states bean/security populations, units and unconditional security beans. **N-5 remains open:** bind progress/advisory counts to the same named population. |
|
|
30
|
+
> | P1 | `AUD-511-R02` / `AUD-589-B02` + `AUD-513-N06`: performance recovered in 9 of 10 measured commands, but `data-exposure --config` remains 42.7 s, 2.6x the 5.8.8 measurement and above the 28.9 s model despite output equivalence. | Before code changes, run the documented idle-host, isolated-cache, interleaved-control protocol. Compare its path with the shared-CIR reuse that recovered `validation`; do not call the performance family closed until this command converges. |
|
|
31
|
+
> | P1 | `AUD-513-B01` / `B-3` / `B-5`: MyBatis facts conflict, `--agent` is not the help-promised maximum-signal superset, and `imports_found` can name a non-import declaration. | **B01/B-5 implemented in 5.8.14:** matching MyBatis XML outranks the no-`@Mapper` DTO heuristic, and `imports_found` now contains only actual Java imports while code/XML/build matches use `evidence`. **B-3 closed as revalidated:** `JAVA_SPRING_SECTIONS` is shared by both views; regression proves a real MyBatis section reaches `--agent`. |
|
|
32
|
+
> | P2 | `AUD-513-N03/N04/N07/N08/N09`, `B-6/B-7/B-8`, and `D-09`. | **N03/N04/N07/N08/N09 implemented in 5.8.14:** `impact` always emits the `candidates` field it names, including an empty list; budget advice now identifies snapshot/RIS presence separately and leaves context/parse unknown until analysis, matching the four-layer payload; README summaries skip operational headings and publish `project_summary: null` plus `summary_basis` when no descriptive prose exists; cache-sensitive execution advice now lives in `security_posture.operational_hints`, not semantic limitations; all numeric output bounds reject negative values before analysis with structured `flag`, `value` and lower-bound `expected` fields, while published `--limit 0` no-cap behavior remains intact. Bound partial budgets, account timing coverage, preserve compact unresolved identities, and remeasure cost anchors. |
|
|
33
|
+
>
|
|
34
|
+
> **Release status:** all entries above marked “pending `5.8.14`” are shipped in
|
|
35
|
+
> `5.8.14`; their external `5.8.13` verification status is intentionally unchanged.
|
|
36
|
+
>
|
|
37
|
+
> **Feature decisions:** `AUD-588-F02` remains the shared remediation for population,
|
|
38
|
+
> unit and reach contracts; the fourth pass confirms it is still partial. `AUD-588-F03`
|
|
39
|
+
> remains a versioned, provenance-bearing calibration feature: add repeated isolated-cache
|
|
40
|
+
> measurements before changing anchors. `AUD-588-F05` remains locally verified only because
|
|
41
|
+
> dirty-tree `verify-edit` and eight mutating/denied invocables were not exercised. The
|
|
42
|
+
> suggested `risk` working-set instrumentation is accepted as observability hardening, not a
|
|
43
|
+
> parallel analysis authority. EclipseLink automation stays deferred and progress stays
|
|
44
|
+
> opt-in.
|
|
34
45
|
|
|
35
46
|
> **CURRENT STATE — 2026-08-19 — 5.8.9 working tree**
|
|
36
47
|
>
|
|
@@ -3,21 +3,54 @@
|
|
|
3
3
|
*A software-knowledge platform for large codebases. Written for an engineering
|
|
4
4
|
director; no internal implementation knowledge assumed.*
|
|
5
5
|
|
|
6
|
-
> **DOCUMENT STATUS — 2026-08-20**
|
|
6
|
+
> **DOCUMENT STATUS — 2026-08-20 — fourth independent re-audit of 5.8.13**
|
|
7
7
|
>
|
|
8
|
-
> The current release is **5.8.13**. Its
|
|
9
|
-
>
|
|
10
|
-
>
|
|
11
|
-
>
|
|
8
|
+
> The current audited release is **5.8.13**. Its fourth independent Windows/Git Bash pass
|
|
9
|
+
> against the unchanged `saint-server` snapshot scores **90/100**, up from 75, 80 and 78.
|
|
10
|
+
> It keeps coverage at **53/61 invocables (87%)**, finds no crash/traceback or repository
|
|
11
|
+
> write, and reports no regression in the 40+ longitudinal functional anchors. This is a
|
|
12
|
+
> substantial correction to the previous intake: EclipseLink applicability and disclosure,
|
|
13
|
+
> typed `audit-report` output refusal, nested Maven discovery and the endpoint-disposition
|
|
14
|
+
> disclosure are verified, not open release claims.
|
|
12
15
|
>
|
|
13
|
-
> **
|
|
14
|
-
> `
|
|
15
|
-
>
|
|
16
|
-
>
|
|
17
|
-
>
|
|
18
|
-
>
|
|
19
|
-
>
|
|
20
|
-
>
|
|
16
|
+
> **Release blockers:** `risk` still has a rare exit-0/no-output path and
|
|
17
|
+
> `data-exposure --config` remains 2.6x slower than its 5.8.8 measurement. Release 5.8.14
|
|
18
|
+
> instruments `risk`'s compositor for field reproduction, repairs ASK-09's typed
|
|
19
|
+
> stderr-envelope probe, separates exact impact targets from implementation cones, carries
|
|
20
|
+
> container reach into plan/compare, and corrects EclipseLink aggregate wording. Source
|
|
21
|
+
> population names and provenance-based cost calibration remain P2 work. Dirty-tree
|
|
22
|
+
> `verify-edit` and eight mutating or denied commands remain validation gaps, not asserted
|
|
23
|
+
> failures.
|
|
24
|
+
|
|
25
|
+
> **IMPLEMENTATION UPDATE — released in 5.8.14**
|
|
26
|
+
>
|
|
27
|
+
> `AUD-513-N01` closes the write-policy breach reported on `rename-class`. The policy now
|
|
28
|
+
> distinguishes optional artifact creation from source mutation: a mutation guard stops the
|
|
29
|
+
> entire rename plan before its first write, including the physical Java file rename. The
|
|
30
|
+
> command is now explicit in root help's mutating-command table. Regressions exercise both
|
|
31
|
+
> `--no-write` and `ASK_READONLY=1`, while retaining a successful readonly `--dry-run`.
|
|
32
|
+
>
|
|
33
|
+
> `AUD-513-N02` and `B-4` close the posture population falsehood: the bean summary is now
|
|
34
|
+
> derived from the canonical Spring IoC registry, excludes plain/JPA-only/non-Spring symbols,
|
|
35
|
+
> and declares both population units and unconditional security configurations. `N-5` remains
|
|
36
|
+
> open because it concerns a different progress/advisory population.
|
|
37
|
+
>
|
|
38
|
+
> `AUD-513-B01` closes the MyBatis fact conflict: an XML-backed mapper interface is no longer
|
|
39
|
+
> demoted to a DTO mapper merely because it omits `@Mapper` and relies on `@MapperScan`.
|
|
40
|
+
> `AUD-513-B05` also closes: `imports_found` now names only Java imports, with generic trigger
|
|
41
|
+
> evidence carried separately. `B-3` is closed as revalidated: the agent and compact views
|
|
42
|
+
> share their Java/Spring section authority, now explicitly regressed with a MyBatis pair.
|
|
43
|
+
|
|
44
|
+
> **Recommended product work**
|
|
45
|
+
>
|
|
46
|
+
> First make `risk`'s output promise an end-to-end invariant and expose its initial
|
|
47
|
+
> working-set count so incomplete-cache behavior is diagnosable. Then repair the ASK-09
|
|
48
|
+
> harness to read the emit-seam document and either sanitize or disclose inherited execution
|
|
49
|
+
> variables. Measure `data-exposure` under the isolated-cache, interleaved-control protocol
|
|
50
|
+
> before optimizing it. Complete the shared answer-contract layer (`AUD-588-F02`) by binding
|
|
51
|
+
> existing authorities into impact, plan and compare, and recalibrate cost guidance only from
|
|
52
|
+
> provenance-bearing measurements (`AUD-588-F03`). EclipseLink automation remains deferred;
|
|
53
|
+
> its current applicability and non-coverage disclosure are already verified.
|
|
21
54
|
|
|
22
55
|
> **MCP HARDENING — released in 5.8.13**
|
|
23
56
|
>
|
|
@@ -139,7 +139,9 @@ def build_change_plan(
|
|
|
139
139
|
),
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
# The user-facing match names the requested target; planning must retain the
|
|
143
|
+
# subtype-expanded seeds that the blast-radius authority actually analysed.
|
|
144
|
+
seeds = list(blast.get("analysis_seed_fqns") or blast["matched_fqns"])
|
|
143
145
|
container_wired = [w.to_dict() for w in detect_classes(cir, seeds)]
|
|
144
146
|
meta = _node_meta(cir)
|
|
145
147
|
affected = _dependents_closure(cir.reverse_graph or {}, seeds, max_depth, _NODE_CAP)
|
|
@@ -210,6 +212,11 @@ def build_change_plan(
|
|
|
210
212
|
checklist.append(
|
|
211
213
|
f"{len(sec)} secured endpoint(s) in scope — re-check authorization."
|
|
212
214
|
)
|
|
215
|
+
if container_wired:
|
|
216
|
+
checklist.append(
|
|
217
|
+
f"{len(container_wired)} container-wired component(s) are in scope — "
|
|
218
|
+
"review their declared framework wiring because fan-in does not measure it."
|
|
219
|
+
)
|
|
213
220
|
txn = blast.get("transactional_boundaries_touched") or []
|
|
214
221
|
if txn:
|
|
215
222
|
checklist.append(f"{len(txn)} transactional boundary/boundaries in scope.")
|
|
@@ -6,6 +6,7 @@ import hashlib
|
|
|
6
6
|
import json
|
|
7
7
|
import difflib
|
|
8
8
|
import os
|
|
9
|
+
import re
|
|
9
10
|
import sys
|
|
10
11
|
import tempfile
|
|
11
12
|
import threading
|
|
@@ -287,6 +288,7 @@ COMMANDS_THAT_WRITE: "tuple[tuple[str, str], ...]" = (
|
|
|
287
288
|
("migrate-check", "`<repo>/.ask/readiness-history/` — only with `--history`"),
|
|
288
289
|
("verify", "`<repo>/.ask/contracts-baseline.json` — only with `--update-baseline`"),
|
|
289
290
|
("verify-edit", "the repository's git hooks directory — only with `--install-hook`"),
|
|
291
|
+
("rename-class", "`<repo>/**/*.java` — only without `--dry-run`; existing sources change and the declaring file is renamed"),
|
|
290
292
|
("*", "`<repo>/.ask/runs/` — only when `ASK_RUNS_IN_REPO=1` is set"),
|
|
291
293
|
)
|
|
292
294
|
|
|
@@ -294,7 +296,7 @@ COMMANDS_THAT_WRITE: "tuple[tuple[str, str], ...]" = (
|
|
|
294
296
|
def _writes_help_block() -> str:
|
|
295
297
|
"""The `--no-write` table as `--help` prints it — generated, never typed."""
|
|
296
298
|
lines = [
|
|
297
|
-
"Commands that
|
|
299
|
+
"Commands that modify files inside the repository (everything else reads only):",
|
|
298
300
|
"",
|
|
299
301
|
]
|
|
300
302
|
width = max(len(name) for name, _ in COMMANDS_THAT_WRITE)
|
|
@@ -1625,7 +1627,10 @@ def _budget_evidence(command: str, path: "Optional[Path]") -> "tuple[Optional[st
|
|
|
1625
1627
|
if path is not None:
|
|
1626
1628
|
measured = _plan.scope_for(Path(path))
|
|
1627
1629
|
if measured is not None and measured.measured:
|
|
1628
|
-
scope
|
|
1630
|
+
# The scope probe can cheaply see only the snapshot/RIS store.
|
|
1631
|
+
# Do not turn that partial observation into "cache warm" while
|
|
1632
|
+
# a command's actual context/parse state is still unknown.
|
|
1633
|
+
scope = measured.describe_for_budget()
|
|
1629
1634
|
except Exception:
|
|
1630
1635
|
pass # a message about cost must never be the reason a run fails
|
|
1631
1636
|
return anchors, scope
|
|
@@ -2325,6 +2330,32 @@ def _root_flag_usage(flag: str) -> str:
|
|
|
2325
2330
|
return f"`ask {flag} <path>`"
|
|
2326
2331
|
|
|
2327
2332
|
|
|
2333
|
+
def _numeric_range_error_context(message: str) -> dict[str, object]:
|
|
2334
|
+
"""Extract structured facts from Click's lower-bound validation message.
|
|
2335
|
+
|
|
2336
|
+
Click owns parser-time validation, so commands never start work for an
|
|
2337
|
+
invalid value. Its stock message contains the useful facts but leaves
|
|
2338
|
+
automation to parse prose; expose those facts in the shared error envelope.
|
|
2339
|
+
"""
|
|
2340
|
+
prefix, separator, remainder = message.partition(": ")
|
|
2341
|
+
if not separator or not prefix.startswith("Invalid value for "):
|
|
2342
|
+
return {}
|
|
2343
|
+
minimum = re.search(
|
|
2344
|
+
r"is not in (?:the )?range (?:x>=(\d+)|(\d+)<=x(?:<=\d+)?)",
|
|
2345
|
+
remainder,
|
|
2346
|
+
)
|
|
2347
|
+
value = re.match(r"(-?\d+)\s+is not in", remainder)
|
|
2348
|
+
flags = re.findall(r"'(--[^']+)'", prefix)
|
|
2349
|
+
if minimum is None or value is None or not flags:
|
|
2350
|
+
return {}
|
|
2351
|
+
lower_bound = minimum.group(1) or minimum.group(2)
|
|
2352
|
+
return {
|
|
2353
|
+
"flag": flags[0],
|
|
2354
|
+
"value": int(value.group(1)),
|
|
2355
|
+
"expected": f"an integer >= {lower_bound}",
|
|
2356
|
+
}
|
|
2357
|
+
|
|
2358
|
+
|
|
2328
2359
|
try:
|
|
2329
2360
|
import click.exceptions as _click_exc
|
|
2330
2361
|
|
|
@@ -2386,7 +2417,11 @@ try:
|
|
|
2386
2417
|
|
|
2387
2418
|
def _json_click_usage_error_show(self: Any, file: Any = None) -> None: # type: ignore[override]
|
|
2388
2419
|
import json as _je
|
|
2420
|
+
_message = self.format_message()
|
|
2421
|
+
_numeric_context = _numeric_range_error_context(_message)
|
|
2389
2422
|
_flag, _hint = _misplaced_global_flag_hint(self)
|
|
2423
|
+
if _numeric_context:
|
|
2424
|
+
_flag = str(_numeric_context["flag"])
|
|
2390
2425
|
if not _hint:
|
|
2391
2426
|
_nearby = _nearby_command_flag_hint(self)
|
|
2392
2427
|
if _nearby:
|
|
@@ -2396,10 +2431,13 @@ try:
|
|
|
2396
2431
|
_context["flag"] = _flag
|
|
2397
2432
|
if _hint:
|
|
2398
2433
|
_context["scope"] = "root"
|
|
2434
|
+
if _numeric_context:
|
|
2435
|
+
_context["value"] = _numeric_context["value"]
|
|
2399
2436
|
payload = build_error_envelope(
|
|
2400
2437
|
INVALID_INPUT_CODE,
|
|
2401
|
-
|
|
2438
|
+
_message,
|
|
2402
2439
|
hint=_hint,
|
|
2440
|
+
expected=(str(_numeric_context["expected"]) if _numeric_context else None),
|
|
2403
2441
|
**_context,
|
|
2404
2442
|
)
|
|
2405
2443
|
sys.stderr.write(_je.dumps(payload, ensure_ascii=_json_ensure_ascii()) + "\n")
|
|
@@ -5086,7 +5124,9 @@ def main(
|
|
|
5086
5124
|
sm.key_dependencies = _deduped_deps # no cap — all direct deps included
|
|
5087
5125
|
|
|
5088
5126
|
# LQN-02: deterministic NL summary
|
|
5089
|
-
|
|
5127
|
+
_summarizer = ProjectSummarizer(target)
|
|
5128
|
+
sm.project_summary = _summarizer.generate(sm)
|
|
5129
|
+
sm.summary_basis = _summarizer.summary_basis
|
|
5090
5130
|
sm.architecture_summary = ArchitectureSummarizer(target).generate(sm)
|
|
5091
5131
|
|
|
5092
5132
|
# Phase 13 Plan 04: Architectural Inference (--architecture flag)
|
|
@@ -6593,11 +6633,13 @@ def repo_ir_cmd(
|
|
|
6593
6633
|
None,
|
|
6594
6634
|
"--max-nodes",
|
|
6595
6635
|
help="Limit graph.nodes to top N by impact score (reduces output size)",
|
|
6636
|
+
min=0,
|
|
6596
6637
|
),
|
|
6597
6638
|
max_edges: Optional[int] = typer.Option(
|
|
6598
6639
|
None,
|
|
6599
6640
|
"--max-edges",
|
|
6600
6641
|
help="Limit graph.edges to N (priority: edges between kept nodes)",
|
|
6642
|
+
min=0,
|
|
6601
6643
|
),
|
|
6602
6644
|
summary_only: bool = typer.Option(
|
|
6603
6645
|
False,
|
|
@@ -7188,6 +7230,7 @@ def endpoints_cmd(
|
|
|
7188
7230
|
limit: Optional[int] = typer.Option(
|
|
7189
7231
|
None, "--limit", "-n",
|
|
7190
7232
|
help="Maximum number of endpoints to return.",
|
|
7233
|
+
min=0,
|
|
7191
7234
|
),
|
|
7192
7235
|
compact: bool = typer.Option(
|
|
7193
7236
|
False, "--compact",
|
|
@@ -7946,6 +7989,7 @@ def validation_cmd(
|
|
|
7946
7989
|
None, "--limit",
|
|
7947
7990
|
help="Keep at most N rows per list (endpoints, gaps, validators); the "
|
|
7948
7991
|
"summary stays whole and each cut list declares what it omitted.",
|
|
7992
|
+
min=0,
|
|
7949
7993
|
),
|
|
7950
7994
|
compact: bool = typer.Option(
|
|
7951
7995
|
False, "--compact",
|
|
@@ -10630,7 +10674,7 @@ def risk_cmd(
|
|
|
10630
10674
|
help="Repository path (default: current directory).",
|
|
10631
10675
|
),
|
|
10632
10676
|
limit: int = typer.Option(
|
|
10633
|
-
50, "--limit", help="How many composed risks to publish (highest first)."
|
|
10677
|
+
50, "--limit", help="How many composed risks to publish (highest first).", min=0,
|
|
10634
10678
|
),
|
|
10635
10679
|
table: bool = typer.Option(
|
|
10636
10680
|
False,
|
|
@@ -10841,7 +10885,7 @@ def enrich_cmd(
|
|
|
10841
10885
|
),
|
|
10842
10886
|
),
|
|
10843
10887
|
limit: int = typer.Option(
|
|
10844
|
-
50, "--limit", help="How many enriched findings to publish (highest first)."
|
|
10888
|
+
50, "--limit", help="How many enriched findings to publish (highest first).", min=0,
|
|
10845
10889
|
),
|
|
10846
10890
|
table: bool = typer.Option(
|
|
10847
10891
|
False,
|
|
@@ -11501,6 +11545,7 @@ def posture_cmd(
|
|
|
11501
11545
|
"--limit",
|
|
11502
11546
|
help="Keep at most N beans per list (active/inactive/unresolved); the "
|
|
11503
11547
|
"counts stay whole and each cut list declares what it omitted.",
|
|
11548
|
+
min=0,
|
|
11504
11549
|
),
|
|
11505
11550
|
compact: bool = typer.Option(
|
|
11506
11551
|
False,
|
|
@@ -11988,6 +12033,8 @@ def migrate_check_cmd(
|
|
|
11988
12033
|
depth: int = typer.Option(
|
|
11989
12034
|
4, "--depth",
|
|
11990
12035
|
help="Caller BFS depth for --blast-radius (1-8, default: 4).",
|
|
12036
|
+
min=1,
|
|
12037
|
+
max=8,
|
|
11991
12038
|
),
|
|
11992
12039
|
detach: bool = _detach_option(),
|
|
11993
12040
|
progress_mode: Optional[str] = _progress_option(),
|
|
@@ -12313,6 +12360,7 @@ def impact_chain_cmd(
|
|
|
12313
12360
|
help="Maximum items per list section (callers, endpoints, security "
|
|
12314
12361
|
"surfaces). Totals stay exact in metadata/truncated_lists. "
|
|
12315
12362
|
"0 disables the cap.",
|
|
12363
|
+
min=0,
|
|
12316
12364
|
),
|
|
12317
12365
|
with_findings: bool = typer.Option(
|
|
12318
12366
|
False, "--with-findings",
|
|
@@ -12636,7 +12684,8 @@ def explain_cmd(
|
|
|
12636
12684
|
limit: int = typer.Option(
|
|
12637
12685
|
50, "--limit",
|
|
12638
12686
|
help="Maximum items per list section (callers, methods, deps). "
|
|
12639
|
-
|
|
12687
|
+
"0 disables the cap. Truncation is always reported in warnings.",
|
|
12688
|
+
min=0,
|
|
12640
12689
|
),
|
|
12641
12690
|
copy: bool = _copy_option(),
|
|
12642
12691
|
progress_mode: Optional[str] = _progress_option(),
|
|
@@ -13502,10 +13551,12 @@ def chunk_file_cmd(
|
|
|
13502
13551
|
max_lines: int = typer.Option(
|
|
13503
13552
|
500, "--max-lines", "-n",
|
|
13504
13553
|
help="Target max lines per chunk (default: 500). Methods > max_lines emit size_warning.",
|
|
13554
|
+
min=1,
|
|
13505
13555
|
),
|
|
13506
13556
|
chunk_id: Optional[int] = typer.Option(
|
|
13507
13557
|
None, "--chunk", "-c",
|
|
13508
13558
|
help="Return only this chunk by ID (1-based). Omit to return all chunks.",
|
|
13559
|
+
min=1,
|
|
13509
13560
|
),
|
|
13510
13561
|
metadata_only: bool = typer.Option(
|
|
13511
13562
|
False, "--metadata-only",
|
|
@@ -16476,7 +16527,7 @@ def main_entry() -> None:
|
|
|
16476
16527
|
INVALID_INPUT_CODE,
|
|
16477
16528
|
str(_refused),
|
|
16478
16529
|
hint=(
|
|
16479
|
-
"The run was asked to
|
|
16530
|
+
"The run was asked to modify something inside the repository while "
|
|
16480
16531
|
"--no-write (ASK_READONLY=1) was in force. Drop the flag that "
|
|
16481
16532
|
"persists — or point its directory option outside the repository — "
|
|
16482
16533
|
"and the same answer is produced with the artefact."
|
|
@@ -40,7 +40,7 @@ COMPARE_SCHEMA: str = "candidate-comparison-v1"
|
|
|
40
40
|
_COST_FIELDS: tuple[str, ...] = (
|
|
41
41
|
"blast_radius", "affected_endpoints", "modules_spanned",
|
|
42
42
|
"secured_endpoints", "transactional_boundaries", "tests_at_risk",
|
|
43
|
-
"rollback_files",
|
|
43
|
+
"rollback_files", "container_wired_components",
|
|
44
44
|
)
|
|
45
45
|
|
|
46
46
|
# Resolutions on which D3's build_change_plan returns a bare resolution notice
|
|
@@ -108,6 +108,7 @@ def _cost_vector(plan: dict, blast: dict) -> dict[str, int]:
|
|
|
108
108
|
"modules_spanned": modules,
|
|
109
109
|
"secured_endpoints": secured,
|
|
110
110
|
"transactional_boundaries": txn,
|
|
111
|
+
"container_wired_components": len(plan.get("container_wired") or []),
|
|
111
112
|
}
|
|
112
113
|
|
|
113
114
|
|
|
@@ -151,6 +152,7 @@ def _rank_key(cand: dict) -> tuple:
|
|
|
151
152
|
-c["transactional_boundaries"],
|
|
152
153
|
-c["tests_at_risk"],
|
|
153
154
|
-c["rollback_files"],
|
|
155
|
+
-c["container_wired_components"],
|
|
154
156
|
cand["target"],
|
|
155
157
|
)
|
|
156
158
|
|
|
@@ -299,6 +301,10 @@ def build_comparison(
|
|
|
299
301
|
),
|
|
300
302
|
"tests_at_risk": "covering test symbols that reach the change",
|
|
301
303
|
"rollback_files": "files the change would touch on revert",
|
|
304
|
+
"container_wired_components": (
|
|
305
|
+
"components reached by declared framework/container wiring; this is "
|
|
306
|
+
"separate from reverse-call fan-in"
|
|
307
|
+
),
|
|
302
308
|
},
|
|
303
309
|
"candidates": candidates,
|
|
304
310
|
"provenance": (
|