sourcecode 5.9.16__tar.gz → 5.9.18__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.16 → sourcecode-5.9.18}/.github/workflows/windows-battery.yml +21 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/CHANGELOG.md +35 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/PKG-INFO +7 -6
- {sourcecode-5.9.16 → sourcecode-5.9.18}/README.md +6 -5
- sourcecode-5.9.18/docs/AUDIT-2026-08-31-EXTERNAL-5.9.16.md +54 -0
- sourcecode-5.9.18/docs/AUDIT-2026-08-31-EXTERNAL-5.9.17.md +42 -0
- sourcecode-5.9.18/docs/AUDIT-2026-08-31-REMEDIATION-5.9.18.md +20 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/DEFECT-LEDGER.md +63 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/DEVELOPMENT-ROADMAP.md +63 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/EXECUTIVE-ROADMAP.md +27 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/RELEASE-VERIFICATION.md +14 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/USER_GUIDE.md +18 -4
- {sourcecode-5.9.16 → sourcecode-5.9.18}/pyproject.toml +1 -1
- sourcecode-5.9.18/scripts/windows_reliability_matrix.py +97 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/cli.py +63 -36
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/packs.py +15 -5
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/parallel.py +8 -1
- {sourcecode-5.9.16 → sourcecode-5.9.18}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/.github/workflows/windows-regression.yml +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/.gitignore +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/.ruff.toml +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/CLAUDE.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/CODE_OF_CONDUCT.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/CONTRIBUTING.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/LICENSE +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/NOTICE +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/SECURITY.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-2026-08-28-EXTERNAL-5.9.10.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/CACHE.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/MANUAL-USUARIO.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/PRODUCT-ROUTE.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/DESIGN-assessment-report.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/DESIGN-pack-manifest.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/overview.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/contracts.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/licensing-schema.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/migrate-check.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/pack-gate-github-actions.yml +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/pack-gate-gitlab.yml +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/README.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/perf/corpus-testing-2026-08-22.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/posture.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/privacy.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/schema.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/hatch_build.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/scripts/context_cost_harness.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/scripts/perf_gate.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/scripts/perf_harness.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/scripts/test_fast.sh +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/__main__.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/access_drift.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/analysis_budget.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/answer_bounds.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/audit_clusters.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/audit_recipe.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/audit_report.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/audit_since.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/audit_verify.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/baseline_attestation.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/breaking_changes.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/build_modules.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/build_stamp.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/c4_render.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/cache.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/cache_model.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/cache_observation.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/ci_output.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/classifier.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/click_runtime.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/context_graph.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/cve_feed.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/cve_reachability.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/defect_classes/__init__.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/defect_classes/registry.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/empty_reach.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/endpoint_disposition.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/explain_endpoint.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/field_deprecations.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/findings_baseline.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/functional_routes.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/github_diff.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/intent_router.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/license.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/manifest_cache.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/migrate_check.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/migration_apply.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/output_bounds.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/output_ceiling.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/output_sink.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/pack_manifest.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/parse_cache.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/path_display.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/phased_run.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/posture.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/pr_risk.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/product_info.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/progress.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/regress.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/regulatory_pack.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/release_info.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/remediation_diff.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/remediation_flow.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/remediation_report.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/repository_ir.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/resource_budget.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/risk.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/risk_model.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/sarif_emit.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/schema_producers.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/schema_registry.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/selection_contract.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/self_audit.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/selftest.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/timeline_cache.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/vex.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/watch_loop.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/wired_surface.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/supabase/functions/README.md +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.9.16 → sourcecode-5.9.18}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -44,3 +44,24 @@ jobs:
|
|
|
44
44
|
env:
|
|
45
45
|
SOURCECODE_CACHE_DIR: ${{ runner.temp }}/ask-cache
|
|
46
46
|
SOURCECODE_CONTEXT_CACHE_DIR: ${{ runner.temp }}/ask-context-cache
|
|
47
|
+
|
|
48
|
+
- name: Record critical command reliability matrix
|
|
49
|
+
shell: pwsh
|
|
50
|
+
run: |
|
|
51
|
+
$root = Join-Path $env:RUNNER_TEMP "ask-reliability-repo"
|
|
52
|
+
$evidence = Join-Path $env:RUNNER_TEMP "ask-windows-reliability.json"
|
|
53
|
+
New-Item -ItemType Directory -Force (Join-Path $root "src/main/java/com/acme") | Out-Null
|
|
54
|
+
Set-Content -Path (Join-Path $root "pom.xml") -Value '<project><modelVersion>4.0.0</modelVersion><groupId>com.acme</groupId><artifactId>app</artifactId><version>1</version></project>'
|
|
55
|
+
Set-Content -Path (Join-Path $root "src/main/java/com/acme/App.java") -Value 'package com.acme; public class App {}'
|
|
56
|
+
git -C $root init --quiet
|
|
57
|
+
git -C $root config user.email ci@example.invalid
|
|
58
|
+
git -C $root config user.name ASK-CI
|
|
59
|
+
git -C $root add .
|
|
60
|
+
git -C $root commit --quiet -m baseline
|
|
61
|
+
python scripts/windows_reliability_matrix.py $root --output $evidence
|
|
62
|
+
|
|
63
|
+
- name: Upload Windows reliability evidence
|
|
64
|
+
uses: actions/upload-artifact@v4
|
|
65
|
+
with:
|
|
66
|
+
name: ask-windows-reliability-matrix
|
|
67
|
+
path: ${{ runner.temp }}/ask-windows-reliability.json
|
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.9.18] — 2026-08-31
|
|
4
|
+
|
|
5
|
+
*Windows reliability remediation follow-up.*
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- `pack gate` opens child stderr as UTF-8 with replacement behavior, so a Windows code-page mismatch cannot terminate its forwarding thread and block a child on an undrained pipe.
|
|
10
|
+
- The shared parse-worker factory rejects Windows process pools as a second deterministic barrier; repository parsing uses the existing sequential path there instead of risking `DuplicateHandle` during worker startup.
|
|
11
|
+
- Expected CLI validation exits, including invalid `--profile` input, now pass through the analysis-error boundary unchanged as `INVALID_INPUT` / exit 2.
|
|
12
|
+
|
|
13
|
+
### Verification Boundary
|
|
14
|
+
|
|
15
|
+
- Focused pack, parallel, validation and six-command reliability-matrix tests pass on the engineering host. Native Windows repetition and process-tree evidence remain required before closing `AUD-621-R` and `AUD-621-WIN-PROC`.
|
|
16
|
+
- The 24,073-file context-analysis threshold remains open pending profiling and an intermediate-size benchmark.
|
|
17
|
+
|
|
18
|
+
## [5.9.17] — 2026-08-31
|
|
19
|
+
|
|
20
|
+
*Reliability and monorepo performance follow-up after the 5.9.16 external audit.*
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- `risk`, `verify`, `audit-report` and `migrate-check` now emit structured
|
|
25
|
+
`EXECUTION_FAILED` evidence with a non-zero exit when unexpected analysis
|
|
26
|
+
failures occur; they cannot report an empty successful result through that path.
|
|
27
|
+
- Semantic workspace analysis reuses the already scanned workspace tree, and
|
|
28
|
+
root graph, documentation and metrics analysis share one pruned monorepo tree.
|
|
29
|
+
|
|
30
|
+
### Verification
|
|
31
|
+
|
|
32
|
+
- Added a Windows reliability-matrix tool and manual workflow artifact covering
|
|
33
|
+
`risk`, `verify`, Markdown `audit-report`, `spring-audit`, `migrate-check` and
|
|
34
|
+
`migrate-apply`. It records each exit code and output size across 30 repetitions.
|
|
35
|
+
- Native Windows process cleanup and the remaining contradictory reliability
|
|
36
|
+
observations remain open until that evidence is collected.
|
|
37
|
+
|
|
3
38
|
## [5.9.16] — 2026-08-31
|
|
4
39
|
|
|
5
40
|
*Audit candidate following the 5.9.15 release recovery.*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 5.9.
|
|
3
|
+
Version: 5.9.18
|
|
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,13 +196,14 @@ 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.17 retains the shared Canonical IR
|
|
200
200
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
201
201
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
202
202
|
not duration promises. It also removes two repeated walks of the same file tree in
|
|
203
203
|
the detection phase, measured at **1.69× on a 24,073-file monorepo** — 54.9 s to
|
|
204
204
|
32.5 s cold, with a byte-identical answer. A measurement on one repository and one
|
|
205
|
-
machine is not a duration promise either.
|
|
205
|
+
machine is not a duration promise either. It also avoids repeated monorepo tree
|
|
206
|
+
walks when optional context and semantic analysis share the same scan.
|
|
206
207
|
|
|
207
208
|
The root analysis now stops at `ASK_MAX_ANALYSIS_SECONDS` instead of running past
|
|
208
209
|
it: a spent budget returns a structured partial result naming the phases that
|
|
@@ -233,7 +234,7 @@ in `overlapping_paths`; a missing or non-directory path is rejected as structure
|
|
|
233
234
|
invalid input rather than treated as an empty repository. This prevents silent
|
|
234
235
|
entitlement errors in CI and does not change per-repository gates or billing.
|
|
235
236
|
|
|
236
|
-
Release 5.9.
|
|
237
|
+
Release 5.9.17 also carries the boundary-contract hardening: missing consumer repositories,
|
|
237
238
|
malformed CVE feeds and unresolved `pack gate --since` refs fail as structured
|
|
238
239
|
input errors; duplicate same-commit baselines are never overwritten. `posture
|
|
239
240
|
--diff` validates unknown profiles when the repository declares profiles. In
|
|
@@ -266,7 +267,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
266
267
|
# pip / pipx
|
|
267
268
|
pipx install sourcecode # or: pip install sourcecode
|
|
268
269
|
|
|
269
|
-
ask version # ask 5.9.
|
|
270
|
+
ask version # ask 5.9.18 — and, on a build that has aged,
|
|
270
271
|
# how many releases have probably shipped since
|
|
271
272
|
```
|
|
272
273
|
|
|
@@ -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,13 +147,14 @@ 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.17 retains the shared Canonical IR
|
|
151
151
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
152
152
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
153
153
|
not duration promises. It also removes two repeated walks of the same file tree in
|
|
154
154
|
the detection phase, measured at **1.69× on a 24,073-file monorepo** — 54.9 s to
|
|
155
155
|
32.5 s cold, with a byte-identical answer. A measurement on one repository and one
|
|
156
|
-
machine is not a duration promise either.
|
|
156
|
+
machine is not a duration promise either. It also avoids repeated monorepo tree
|
|
157
|
+
walks when optional context and semantic analysis share the same scan.
|
|
157
158
|
|
|
158
159
|
The root analysis now stops at `ASK_MAX_ANALYSIS_SECONDS` instead of running past
|
|
159
160
|
it: a spent budget returns a structured partial result naming the phases that
|
|
@@ -184,7 +185,7 @@ in `overlapping_paths`; a missing or non-directory path is rejected as structure
|
|
|
184
185
|
invalid input rather than treated as an empty repository. This prevents silent
|
|
185
186
|
entitlement errors in CI and does not change per-repository gates or billing.
|
|
186
187
|
|
|
187
|
-
Release 5.9.
|
|
188
|
+
Release 5.9.17 also carries the boundary-contract hardening: missing consumer repositories,
|
|
188
189
|
malformed CVE feeds and unresolved `pack gate --since` refs fail as structured
|
|
189
190
|
input errors; duplicate same-commit baselines are never overwritten. `posture
|
|
190
191
|
--diff` validates unknown profiles when the repository declares profiles. In
|
|
@@ -217,7 +218,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
217
218
|
# pip / pipx
|
|
218
219
|
pipx install sourcecode # or: pip install sourcecode
|
|
219
220
|
|
|
220
|
-
ask version # ask 5.9.
|
|
221
|
+
ask version # ask 5.9.18 — and, on a build that has aged,
|
|
221
222
|
# how many releases have probably shipped since
|
|
222
223
|
```
|
|
223
224
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# External Audit — 5.9.16 Re-audit
|
|
2
|
+
|
|
3
|
+
**Received:** 2026-08-31
|
|
4
|
+
**Scope:** repositories under `testing/`
|
|
5
|
+
**Evidence status:** external observations; contradictory fork results are kept
|
|
6
|
+
open rather than converted into closure claims.
|
|
7
|
+
|
|
8
|
+
## Summary
|
|
9
|
+
|
|
10
|
+
Release `5.9.16` substantially recovers from the defective `5.9.15` artefact.
|
|
11
|
+
The nine missing commands are restored: `ask --help` lists 57 top-level commands,
|
|
12
|
+
`self-audit` reports 104 registered CLI commands, and independent forks invoked
|
|
13
|
+
the recovered commands rather than only checking help text.
|
|
14
|
+
|
|
15
|
+
The audit also re-confirms recovery of `/dev/null` error handling, the space form
|
|
16
|
+
of `--max-output-tokens`, endpoint/posture validation, `risk --limit 0`, missing
|
|
17
|
+
`explain` error output, and baseline attest/diff/trend behavior.
|
|
18
|
+
|
|
19
|
+
This is not a full reliability clearance. Independent forks still observed silent
|
|
20
|
+
failures for `risk` with a non-zero limit, `verify`, and Markdown `audit-report`.
|
|
21
|
+
The measurements for `spring-audit`, `migrate-check`, and `migrate-apply` conflict
|
|
22
|
+
between forks and therefore cannot close the historical shared-worker defect.
|
|
23
|
+
|
|
24
|
+
## Measured Improvements
|
|
25
|
+
|
|
26
|
+
| Area | External result | Status |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| Command surface | Nine commands restored and exercised; `self-audit` passes with 104 CLI commands. | Closed for this incident. |
|
|
29
|
+
| Error handling | `/dev/null` and `--max-output-tokens 10` regressions no longer reproduced. | Closed, retain release tests. |
|
|
30
|
+
| `tutorials` manifest parsing | More than four minutes became 21.5 seconds. | Confirmed improvement. |
|
|
31
|
+
| `tutorials` total root analysis | Completed in 4m52.6s with JSON output. | Improved, not yet bounded at a seconds-scale target. |
|
|
32
|
+
| `review-pr` | No reproduction in 38 accumulated repetitions. | Closed/no-repro, retain regression test. |
|
|
33
|
+
|
|
34
|
+
## Open Risks
|
|
35
|
+
|
|
36
|
+
| ID | Finding | Required closure |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| `AUD-620-R` | `risk` with `--limit != 0`, `verify`, and Markdown `audit-report` still silently fail in independent forks. `spring-audit`, `migrate-check`, and `migrate-apply` have conflicting results. | A controlled native Windows/pipx matrix with at least 30 repetitions per command and complete result evidence. |
|
|
39
|
+
| `AUD-620-TUTORIALS` | The improved manifest stage exposed `analyzing repository context` as the new dominant delay, up to roughly 2.3 minutes without progress change. | Profile and optimize that phase; repeat whole-command timing on the same Windows corpus. |
|
|
40
|
+
| `AUD-620-I` | `cold-start --compact` size is state-dependent; observed values across rounds differ. `cache warm` may return agent-view exit 143. | Publish a reproducible priming sequence and investigate agent-view warm failure separately. |
|
|
41
|
+
| `AUD-620-WIN-PROC` | Two to four `ask.exe` descendants were observed after runs. | Native Windows/Git Bash process-tree tests for successful, timed-out and interrupted commands. |
|
|
42
|
+
|
|
43
|
+
## Audit Procedure Requirement
|
|
44
|
+
|
|
45
|
+
Before every measured command, capture the target repository's `pwd`, `git status
|
|
46
|
+
--short`, and `git rev-parse HEAD`, plus the installed `ask version`. Record command,
|
|
47
|
+
timeout, exit code and bytes written to stdout, stderr and any output file. This avoids
|
|
48
|
+
counting an empty scratch directory as a successful run against the intended corpus.
|
|
49
|
+
|
|
50
|
+
## Release Position
|
|
51
|
+
|
|
52
|
+
`5.9.16` is a verified recovery of the lost command surface and several concrete
|
|
53
|
+
regressions. It remains suitable for bounded use, but not for production CI-gating
|
|
54
|
+
or enterprise-scale reliability claims until the open native-Windows evidence closes.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# External Audit — 5.9.17 Re-audit
|
|
2
|
+
|
|
3
|
+
**Received:** 2026-08-31
|
|
4
|
+
**Scope:** repositories under `testing/`
|
|
5
|
+
**Evidence status:** four independent Windows samples; conflicting earlier
|
|
6
|
+
success samples are superseded by the multi-session result below.
|
|
7
|
+
|
|
8
|
+
## Summary
|
|
9
|
+
|
|
10
|
+
The command-surface recovery from `5.9.16` remains confirmed: all nine restored
|
|
11
|
+
commands, Bug F, Bug Q, baseline behavior and endpoint/posture validation are
|
|
12
|
+
healthy in this second independent round. The root compact command is also
|
|
13
|
+
healthy when its target directory is verified before execution.
|
|
14
|
+
|
|
15
|
+
The shared Windows worker defect is not closed. The report records low or zero
|
|
16
|
+
success rates across all affected commands, with substantial variation between
|
|
17
|
+
sessions. This makes single-session success evidence insufficient for closure.
|
|
18
|
+
|
|
19
|
+
## Governing Findings
|
|
20
|
+
|
|
21
|
+
| ID | Finding | Required closure |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| `AUD-621-R` | `risk --limit != 0` and Markdown `audit-report` were 0% successful; `verify`, `spring-audit`, `migrate-check` and `migrate-apply` were 0-27% successful across independent samples. The observed mechanism remains Windows `DuplicateHandle` failure during worker spawn. | Fail closed or fall back deterministically to sequential work; validate >=25 repetitions per command in >=2 native Windows sessions, with target identity, exit status and byte counts recorded. |
|
|
24
|
+
| `AUD-621-PACK-STDERR` | `pack gate --since` can deadlock because `_forward_stderr` decodes child UTF-8 output as CP1252, raises `UnicodeDecodeError`, and stops draining stderr. | Use UTF-8 with replacement behavior, keep the forwarding loop alive after decode failures, and cover CP1252 and UTF-8 child output. |
|
|
25
|
+
| `AUD-621-CONTEXT` | `analyzing repository context` completed in seconds through roughly 4,772 Java files but stopped advancing beyond 190 seconds on the 24,073-file corpus. The same phase precedes `cache warm` agent-view exit 143. | Profile the phase and add an intermediate-size fixture or subset benchmark to locate the threshold before optimizing. |
|
|
26
|
+
| `AUD-621-WIN-PROC` | Four descendant `ask.exe` processes remained. | Native Windows/Git Bash process-tree tests for normal completion, timeout and interruption. |
|
|
27
|
+
|
|
28
|
+
## Confirmed Improvements
|
|
29
|
+
|
|
30
|
+
| Area | External result |
|
|
31
|
+
|---|---|
|
|
32
|
+
| Command surface | All nine commands restored in `5.9.16` remain present and functional. |
|
|
33
|
+
| Manifest parsing | `tutorials` manifest parsing remained improved at 18.8 seconds. |
|
|
34
|
+
| `review-pr` | No recurrence in five further runs. |
|
|
35
|
+
| Kotlin detection | A second real Kotlin repository was classified correctly. |
|
|
36
|
+
|
|
37
|
+
## Operating Position
|
|
38
|
+
|
|
39
|
+
Use ASK in bounded, supervised workflows only. Do not represent `5.9.17` as
|
|
40
|
+
reliable for production CI-gating or enterprise-scale Windows analysis until the
|
|
41
|
+
worker, stderr-forwarding and process-lifecycle findings close with repeatable
|
|
42
|
+
native evidence.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Release 5.9.18 — AUD-621 Remediation
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-08-31
|
|
4
|
+
**Scope:** fixes applied after the external `5.9.17` audit.
|
|
5
|
+
|
|
6
|
+
## Implemented Fixes
|
|
7
|
+
|
|
8
|
+
| Finding | Change | Evidence in this checkout |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| `AUD-621-PACK-STDERR` | Pack child stderr uses UTF-8 with replacement; the forwarding loop cannot terminate on a decode exception. | Pack progress and manifest tests pass; a regression test asserts the subprocess decoding contract. |
|
|
11
|
+
| `AUD-621-R` | Windows parse-worker construction is forbidden, backing up the existing sequential fallback. | Parallel Windows-contract tests pass; the six-command reliability matrix completes on the engineering host. |
|
|
12
|
+
| Validation regression found during verification | Expected `typer.Exit` validation exits bypass the analysis-failure wrapper. | `risk` and `audit-report` invalid-profile regressions pass with `INVALID_INPUT` and exit 2. |
|
|
13
|
+
|
|
14
|
+
## Unchanged Closure Gates
|
|
15
|
+
|
|
16
|
+
- `AUD-621-R`: at least 25 repetitions per affected command in at least two native Windows sessions.
|
|
17
|
+
- `AUD-621-WIN-PROC`: native Windows/Git Bash process-tree tests for successful, timed-out and interrupted commands.
|
|
18
|
+
- `AUD-621-CONTEXT`: phase profile and intermediate-size benchmark before a performance claim for the 24,073-file corpus.
|
|
19
|
+
|
|
20
|
+
Release `5.9.18` is therefore suitable only for bounded, supervised use until those gates are met.
|
|
@@ -14,6 +14,69 @@ Status values: `open` · `in-progress` · `closed <version>` · `by-design` (wit
|
|
|
14
14
|
The facts these rows are keyed to are published: `ask schema facts-v1` prints the registry
|
|
15
15
|
(authority, definition, consumers, parity test) that the release battery enforces.
|
|
16
16
|
|
|
17
|
+
## Current Synchronization — External Audit `AUD-621`
|
|
18
|
+
|
|
19
|
+
**Release `5.9.18` remediation.** `AUD-621-PACK-STDERR` is corrected in code: the child pipe is read as UTF-8 with replacement and the forwarding loop retains a decode-failure guard. `AUD-621-R` has a second Windows barrier at process-pool construction, complementing the sequential fallback. Both findings remain open until their required native Windows evidence is recorded; `AUD-621-CONTEXT` and `AUD-621-WIN-PROC` are unchanged.
|
|
20
|
+
|
|
21
|
+
**Re-audit of release `5.9.17`, received 2026-08-31.** Four independent
|
|
22
|
+
Windows measurements overturn the apparent partial recovery of the shared
|
|
23
|
+
worker failure: `risk` with a non-zero limit and Markdown `audit-report` had
|
|
24
|
+
zero successful runs; `verify`, `spring-audit`, `migrate-check` and
|
|
25
|
+
`migrate-apply` succeeded only intermittently (roughly 0-27% by command and
|
|
26
|
+
session). The known `PermissionError: [WinError 5]` in `DuplicateHandle` remains
|
|
27
|
+
the governing mechanism. A successful run from one session is not closure
|
|
28
|
+
evidence for this race.
|
|
29
|
+
|
|
30
|
+
The audit also isolates a new, high-confidence Windows defect in `pack gate`:
|
|
31
|
+
the `_forward_stderr` thread decodes child output using the active codepage,
|
|
32
|
+
raises `UnicodeDecodeError` on UTF-8 bytes, then stops draining the pipe. The
|
|
33
|
+
child can block once that pipe fills. Two independent forks captured the same
|
|
34
|
+
traceback. The full evidence is
|
|
35
|
+
[`AUDIT-2026-08-31-EXTERNAL-5.9.17.md`](AUDIT-2026-08-31-EXTERNAL-5.9.17.md).
|
|
36
|
+
|
|
37
|
+
| ID | Severity | Status | Evidence and required closure |
|
|
38
|
+
|---|---:|---|---|
|
|
39
|
+
| `AUD-621-R` | Critical maximum | **open, P0** | All direct shared-worker commands remain unreliable on Windows: `risk --limit != 0` and Markdown `audit-report` were 0% successful; `verify`, `spring-audit`, `migrate-check` and plan-mode `migrate-apply` were 0-27%. Detect pool startup failure, fall back to one process or emit structured non-zero failure, and validate >=25 repetitions in >=2 native Windows sessions per command. |
|
|
40
|
+
| `AUD-621-PACK-STDERR` | Critical | **open, P0** | `packs.py:_forward_stderr` uses the Windows default codepage and crashes on UTF-8 progress bytes; the unread stderr pipe then deadlocks `pack gate`. Open the child stream with UTF-8 and `errors="replace"`, keep draining on decode errors, and test CP1252 plus UTF-8 output. |
|
|
41
|
+
| `AUD-621-CONTEXT` | High | **open, P1** | `analyzing repository context` is stable below about 5,000 Java files but ceases to advance on the 24,073-file corpus for more than 190 seconds. It also explains the `cache warm` agent-view exit 143. Profile this one phase and locate its threshold with 8,000-12,000-file subsets or a synthetic fixture. |
|
|
42
|
+
| `AUD-621-WIN-PROC` | Medium | **open, platform-blocked** | Four `ask.exe` descendants remained after the audit run. Native Windows process-tree evidence is still required. |
|
|
43
|
+
| `AUD-621-REVIEW-PR` | Medium | **closed/no-repro** | No recurrence in five further runs; retain the regression test. |
|
|
44
|
+
|
|
45
|
+
The restored command surface, Bug F, Bug Q, baseline behavior and endpoint/posture
|
|
46
|
+
validation are now independently stable across multiple rounds. They remain
|
|
47
|
+
closed. Production CI-gating and enterprise-scale claims remain blocked by
|
|
48
|
+
`AUD-621-R`, `AUD-621-PACK-STDERR` and the Windows lifecycle evidence.
|
|
49
|
+
|
|
50
|
+
## Current Synchronization — External Audit `AUD-620`
|
|
51
|
+
|
|
52
|
+
**Re-audit of release `5.9.16`, received 2026-08-31.** This audit confirms that
|
|
53
|
+
the defective `5.9.15` command surface was restored: all nine missing commands
|
|
54
|
+
are again registered and independently invoked. It also confirms the `/dev/null`,
|
|
55
|
+
space-form `--max-output-tokens`, input-validation, baseline and `risk --limit 0`
|
|
56
|
+
repairs. On the same Windows corpus, `tutorials` manifest parsing fell from more
|
|
57
|
+
than four minutes to 21.5 seconds; total root analysis was 4m52.6s.
|
|
58
|
+
|
|
59
|
+
The recovery does **not** close the shared reliability defect. Independent forks
|
|
60
|
+
agree that `risk` with a non-zero limit, `verify`, and Markdown `audit-report`
|
|
61
|
+
can still fail silently. Results for `spring-audit`, `migrate-check`, and
|
|
62
|
+
`migrate-apply` conflict between forks, so they remain open pending a single
|
|
63
|
+
controlled Windows matrix of at least 30 repetitions per command. The authoritative
|
|
64
|
+
record is [`AUDIT-2026-08-31-EXTERNAL-5.9.16.md`](AUDIT-2026-08-31-EXTERNAL-5.9.16.md).
|
|
65
|
+
|
|
66
|
+
| ID | Severity | Status | Evidence and required closure |
|
|
67
|
+
|---|---:|---|---|
|
|
68
|
+
| `AUD-620-COMMAND-SURFACE` | Critical | **closed 5.9.16** | The nine commands absent from `5.9.15` are present in `ask --help`, `self-audit` reports 104 registered CLI commands, and three forks invoked them. Keep the installed-wheel command-surface gate. |
|
|
69
|
+
| `AUD-620-R` | Critical maximum | **open, P0** | `risk` with `--limit != 0`, `verify`, and Markdown `audit-report` still have independently observed silent failures. `spring-audit`, `migrate-check`, and `migrate-apply` gave conflicting results. Capture target identity and run >=30 native-Windows/pipx repetitions per command, recording exit code, stdout/stderr bytes, output file and timeout. |
|
|
70
|
+
| `AUD-620-TUTORIALS` | High | **partially fixed, P1** | Manifest parsing improved to 21.5s, but `analyzing repository context` now dominates and total time remains 4m52.6s. Profile that phase on the auditor platform and publish a sustained size/time envelope. |
|
|
71
|
+
| `AUD-620-I` | High | **open, P1** | `cold-start --compact` remains state-dependent (3,496, 31,260, 19,781 and 15,034 bytes across rounds); `cache warm` can fail its agent view with exit 143. Define the priming sequence and investigate the agent-view failure separately. |
|
|
72
|
+
| `AUD-620-WIN-PROC` | Medium | **open, platform-blocked** | Two to four `ask.exe` descendants were still observed. Establish native Windows/Git Bash process-tree evidence before shipping platform-specific teardown. |
|
|
73
|
+
| `AUD-620-REVIEW-PR` | Medium | **closed/no-repro** | The historical lowercase `no_git_repo` path did not reproduce in 38 accumulated repetitions. Retain its regression test. |
|
|
74
|
+
|
|
75
|
+
The release remains suitable for bounded use, but production CI-gating and
|
|
76
|
+
enterprise-scale reliability claims stay blocked until `AUD-620-R`, the Windows
|
|
77
|
+
process lifecycle and the remaining `tutorials` scale work close with repeatable
|
|
78
|
+
native evidence.
|
|
79
|
+
|
|
17
80
|
## Current Synchronization — External Audit `AUD-619`
|
|
18
81
|
|
|
19
82
|
**Re-audit of release `5.9.13`, received 2026-08-28.** The previous apparent
|
|
@@ -1,5 +1,68 @@
|
|
|
1
1
|
# ASK — Development Roadmap
|
|
2
2
|
|
|
3
|
+
### Release 5.9.18 — `AUD-621` remediation
|
|
4
|
+
|
|
5
|
+
Release `5.9.18` adds two deterministic Windows safeguards: no shared parse worker can be constructed on Windows, and pack-child stderr is decoded as UTF-8 with replacement so the forwarding pipe remains drained. It also preserves expected validation exits through the structured analysis-error boundary.
|
|
6
|
+
|
|
7
|
+
These code changes do not replace the required native evidence. `AUD-621-R` and `AUD-621-WIN-PROC` remain open until the repetition matrix and process-tree cases pass on native Windows; `AUD-621-CONTEXT` remains profiling work.
|
|
8
|
+
|
|
9
|
+
### External Audit Intake — `AUD-621` re-audit, release 5.9.17
|
|
10
|
+
|
|
11
|
+
The 2026-08-31 re-audit corrects the optimistic interpretation of the previous
|
|
12
|
+
round. Four independent Windows samples show that the shared `DuplicateHandle`
|
|
13
|
+
worker-start failure is still active: `risk --limit != 0` and Markdown
|
|
14
|
+
`audit-report` had no successful runs, while `verify`, `spring-audit`,
|
|
15
|
+
`migrate-check` and `migrate-apply` were only intermittently successful. The
|
|
16
|
+
current structured-error boundary is useful, but it does not make a failed or
|
|
17
|
+
blocked worker pool reliable.
|
|
18
|
+
|
|
19
|
+
**Engineering decision: fix the pool path before further feature work.** Make
|
|
20
|
+
worker startup fail closed or fall back deterministically to a single process;
|
|
21
|
+
instrument pool creation with process/handle context; then validate each affected
|
|
22
|
+
command in at least 25 repetitions across two or more native Windows sessions.
|
|
23
|
+
One clean session, however large, cannot close this defect.
|
|
24
|
+
|
|
25
|
+
| ID | Priority | Next action and closure boundary |
|
|
26
|
+
|---|---:|---|
|
|
27
|
+
| `AUD-621-R` | P0 | Implement deterministic sequential fallback at every shared-worker entry, with bounded waits and structured failure evidence. Compare direct risk computation with `audit-report --from-risk`, then collect the multi-session Windows matrix. |
|
|
28
|
+
| `AUD-621-PACK-STDERR` | P0 | Open child stderr as UTF-8 with replacement behavior and ensure `_forward_stderr` cannot die without draining the pipe. Add a CP1252/UTF-8 subprocess regression for `pack gate`. |
|
|
29
|
+
| `AUD-621-CONTEXT` | P1 | Profile `analyzing repository context`; it is a threshold failure, not a uniform slowdown, and also causes the agent-view warm timeout. Add an intermediate-size fixture or subset benchmark before optimizing. |
|
|
30
|
+
| `AUD-621-WIN-PROC` | P1 | Measure descendant cleanup around successful, timed-out and interrupted commands on native Windows/Git Bash. |
|
|
31
|
+
|
|
32
|
+
The root compact command itself, the recovered command surface, redirection and
|
|
33
|
+
validation fixes remain healthy. Commercially, limit use to bounded pilots and
|
|
34
|
+
do not claim production CI gating or enterprise-scale reliability. Full evidence
|
|
35
|
+
is in [`AUDIT-2026-08-31-EXTERNAL-5.9.17.md`](AUDIT-2026-08-31-EXTERNAL-5.9.17.md).
|
|
36
|
+
|
|
37
|
+
### External Audit Intake — `AUD-620` re-audit, release 5.9.16
|
|
38
|
+
|
|
39
|
+
The external re-audit received 2026-08-31 confirms a major recovery from the
|
|
40
|
+
defective `5.9.15` artefact. The nine missing commands are restored and invoked
|
|
41
|
+
in three independent forks; Bug F, Bug Q, validation and baseline regressions are
|
|
42
|
+
also independently healthy. On the Windows `tutorials` corpus, manifest parsing
|
|
43
|
+
improved from more than four minutes to 21.5 seconds and total root analysis
|
|
44
|
+
completed in 4m52.6s.
|
|
45
|
+
|
|
46
|
+
**Engineering decision: retain the recovery, but keep the reliability gate active.**
|
|
47
|
+
Two independent forks still observed silent failures in `risk` with a non-zero
|
|
48
|
+
limit, `verify`, and Markdown `audit-report`. Results for `spring-audit`,
|
|
49
|
+
`migrate-check`, and `migrate-apply` disagree between forks, so no success sample
|
|
50
|
+
closes them. The next work is a controlled native Windows matrix, not another
|
|
51
|
+
uncontrolled retry: record `pwd`, target Git revision/status, installed wheel
|
|
52
|
+
commit, command, timeout, exit status and output sizes for at least 30 repetitions
|
|
53
|
+
per affected command.
|
|
54
|
+
|
|
55
|
+
| ID | Priority | Next action and closure boundary |
|
|
56
|
+
|---|---:|---|
|
|
57
|
+
| `AUD-620-R` | P0 | Instrument and reproduce the silent paths for `risk`, `verify` and Markdown `audit-report`; run the controlled 30-run native Windows matrix for all six historically affected commands. A command closes only with non-empty success evidence or structured, non-zero failure evidence in every recorded run. |
|
|
58
|
+
| `AUD-620-TUTORIALS` | P1 | Apply phase profiling to `analyzing repository context`, now the dominant Windows delay. Preserve the measured manifest improvement, but do not claim seconds-scale root analysis until the whole command is repeatedly bounded. |
|
|
59
|
+
| `AUD-620-I` | P1 | Specify a cold-start/cache-warm priming procedure and diagnose agent-view exit 143; output size is state-dependent until then. |
|
|
60
|
+
| `AUD-620-WIN-PROC` | P1 | Add native Windows/Git Bash process-tree measurements for success, timeout and interruption. Do not ship untested Job Object changes from Darwin. |
|
|
61
|
+
|
|
62
|
+
The commercial position is bounded pilots only. Do not claim production CI gating
|
|
63
|
+
or enterprise-scale reliability above roughly 3,000 files while these rows remain
|
|
64
|
+
open. Full evidence is in [`AUDIT-2026-08-31-EXTERNAL-5.9.16.md`](AUDIT-2026-08-31-EXTERNAL-5.9.16.md).
|
|
65
|
+
|
|
3
66
|
### External Audit Intake — `AUD-619` re-audit, release 5.9.13
|
|
4
67
|
|
|
5
68
|
The follow-up received 2026-08-28 materially revises the apparent closure of
|
|
@@ -5,6 +5,33 @@
|
|
|
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.18`, remediation.** Windows parse workers are now forbidden at their construction point and `pack gate` drains UTF-8 child stderr safely. Expected validation exits remain typed input errors. These are code fixes, not native-Windows closure evidence: keep bounded pilots until the required repetition and process-lifecycle measurements complete.
|
|
9
|
+
|
|
10
|
+
> **CURRENT UPDATE — release `5.9.17`, external re-audit.** The restored command
|
|
11
|
+
> surface and prior validation fixes remain stable, but the shared Windows worker
|
|
12
|
+
> failure is confirmed active, not partially closed. `risk --limit != 0` and
|
|
13
|
+
> Markdown `audit-report` failed throughout the independent samples; `verify`,
|
|
14
|
+
> `spring-audit`, `migrate-check` and `migrate-apply` remain highly intermittent.
|
|
15
|
+
> A new `pack gate` deadlock is also traced to CP1252 decoding in its stderr
|
|
16
|
+
> forwarding thread. The immediate engineering focus is deterministic worker
|
|
17
|
+
> fallback, safe stderr decoding, and native Windows evidence. Keep bounded
|
|
18
|
+
> pilots only; the working commercial hypothesis is `$20-28/developer/month` and
|
|
19
|
+
> no production CI-gating or enterprise-scale reliability promise is authorized.
|
|
20
|
+
> See [`AUDIT-2026-08-31-EXTERNAL-5.9.17.md`](AUDIT-2026-08-31-EXTERNAL-5.9.17.md).
|
|
21
|
+
|
|
22
|
+
> **CURRENT UPDATE — release `5.9.16`, external re-audit.** The defective
|
|
23
|
+
> `5.9.15` command surface has been recovered: all nine missing commands are
|
|
24
|
+
> restored and independently invoked, and the prior `/dev/null`, option-parser,
|
|
25
|
+
> validation and baseline regressions are again healthy. Windows `tutorials`
|
|
26
|
+
> manifest parsing fell from more than four minutes to 21.5 seconds, although
|
|
27
|
+
> root analysis still took 4m52.6s because the bottleneck moved to repository
|
|
28
|
+
> context analysis. The reliability gate remains active: independent forks still
|
|
29
|
+
> see silent failures in `risk` with a non-zero limit, `verify`, and Markdown
|
|
30
|
+
> `audit-report`; results for `spring-audit`, `migrate-check`, and `migrate-apply`
|
|
31
|
+
> conflict and are not closed. Keep bounded pilots only until a controlled native
|
|
32
|
+
> Windows 30-run matrix closes the affected commands and process cleanup. The
|
|
33
|
+
> authoritative evidence is in [`AUDIT-2026-08-31-EXTERNAL-5.9.16.md`](AUDIT-2026-08-31-EXTERNAL-5.9.16.md).
|
|
34
|
+
|
|
8
35
|
> **CURRENT UPDATE — release `5.9.14`, following the external `5.9.3` reconciliation.**
|
|
9
36
|
> The commercial increment adds stateless context budgets, a reproducible context-cost harness,
|
|
10
37
|
> source-level migration SARIF and an opt-in workspace entitlement pilot. Advisory behaviour remains
|
|
@@ -36,6 +36,20 @@ Run every command from a clean checkout at the intended release commit.
|
|
|
36
36
|
The worktree must be clean. Record the commit and branch in the release
|
|
37
37
|
issue; do not infer either from the version string.
|
|
38
38
|
|
|
39
|
+
For every external-audit command, also record the **target** identity before
|
|
40
|
+
running it:
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
pwd
|
|
44
|
+
git status --short
|
|
45
|
+
git rev-parse HEAD
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Save the canonical target path, Git state, installed `ask version`, command,
|
|
49
|
+
timeout, exit code and stdout/stderr/output-file byte counts with the result.
|
|
50
|
+
A run from an empty scratch directory is not evidence for the intended
|
|
51
|
+
repository and must be discarded rather than counted as a pass.
|
|
52
|
+
|
|
39
53
|
2. Build a fresh, isolated artefact.
|
|
40
54
|
|
|
41
55
|
```sh
|
|
@@ -46,16 +46,30 @@ 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.18, `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.18, 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.18
|
|
59
|
+
|
|
60
|
+
**Failures must be visible.** `risk`, `verify`, `audit-report` and
|
|
61
|
+
`migrate-check` turn unexpected analysis failures into structured
|
|
62
|
+
`EXECUTION_FAILED` output and a non-zero exit, rather than an empty success.
|
|
63
|
+
The release battery includes a repeatable six-command Windows matrix; it records
|
|
64
|
+
exit codes and output sizes, but native Windows evidence remains required before
|
|
65
|
+
closing platform-specific findings.
|
|
66
|
+
|
|
67
|
+
**Current Windows limitation.** The `5.9.17` external audit reproduced the
|
|
68
|
+
shared worker-start failure in `risk`, `verify`, `audit-report`, `spring-audit`,
|
|
69
|
+
`migrate-check` and `migrate-apply`. Do not use these commands as a production
|
|
70
|
+
CI gate on Windows until the native matrix closes them. `pack gate --since` now
|
|
71
|
+
uses safe UTF-8 stderr forwarding, but still requires native repeat evidence. See the
|
|
72
|
+
[development roadmap](DEVELOPMENT-ROADMAP.md#external-audit-intake--aud-621-re-audit-release-5917).
|
|
59
73
|
|
|
60
74
|
**A deadline the root analysis honours.** `ASK_MAX_ANALYSIS_SECONDS=<seconds>` now
|
|
61
75
|
stops `ask <repo>` at a measured phase boundary. A run that spends its budget
|
|
@@ -260,7 +274,7 @@ pipx install sourcecode # isolated install, no venv needed
|
|
|
260
274
|
|
|
261
275
|
# Verify
|
|
262
276
|
ask version
|
|
263
|
-
# ask 5.9.
|
|
277
|
+
# ask 5.9.17
|
|
264
278
|
```
|
|
265
279
|
|
|
266
280
|
Requires Python 3.9+.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""Record a repeatable Windows answer-delivery matrix for critical commands."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import argparse
|
|
5
|
+
import json
|
|
6
|
+
import os
|
|
7
|
+
import subprocess
|
|
8
|
+
import sys
|
|
9
|
+
import time
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
COMMANDS: tuple[tuple[str, tuple[str, ...], frozenset[int]], ...] = (
|
|
14
|
+
("risk", ("risk", "--limit", "20"), frozenset({0})),
|
|
15
|
+
# A repository with no declared contracts is deliberately unverified.
|
|
16
|
+
("verify", ("verify",), frozenset({2})),
|
|
17
|
+
("audit-report-markdown", ("audit-report", "--format", "markdown"), frozenset({0})),
|
|
18
|
+
("spring-audit", ("spring-audit", "--compact"), frozenset({0})),
|
|
19
|
+
("migrate-check", ("migrate-check", "--compact"), frozenset({0})),
|
|
20
|
+
("migrate-apply", ("migrate-apply",), frozenset({0})),
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _run(target: Path, repetitions: int, timeout: float) -> list[dict[str, object]]:
|
|
25
|
+
records: list[dict[str, object]] = []
|
|
26
|
+
for name, args, expected_codes in COMMANDS:
|
|
27
|
+
for attempt in range(1, repetitions + 1):
|
|
28
|
+
started = time.monotonic()
|
|
29
|
+
try:
|
|
30
|
+
completed = subprocess.run(
|
|
31
|
+
[sys.executable, "-m", "sourcecode", *args, str(target)],
|
|
32
|
+
capture_output=True,
|
|
33
|
+
text=False,
|
|
34
|
+
timeout=timeout,
|
|
35
|
+
check=False,
|
|
36
|
+
)
|
|
37
|
+
record: dict[str, object] = {
|
|
38
|
+
"command": name,
|
|
39
|
+
"attempt": attempt,
|
|
40
|
+
"exit_code": completed.returncode,
|
|
41
|
+
"stdout_bytes": len(completed.stdout),
|
|
42
|
+
"stderr_bytes": len(completed.stderr),
|
|
43
|
+
"elapsed_seconds": round(time.monotonic() - started, 3),
|
|
44
|
+
"timed_out": False,
|
|
45
|
+
}
|
|
46
|
+
if completed.returncode not in expected_codes:
|
|
47
|
+
record["failure"] = f"expected exit code {sorted(expected_codes)}"
|
|
48
|
+
elif not completed.stdout:
|
|
49
|
+
record["failure"] = "command completed without stdout evidence"
|
|
50
|
+
except subprocess.TimeoutExpired as exc:
|
|
51
|
+
record = {
|
|
52
|
+
"command": name,
|
|
53
|
+
"attempt": attempt,
|
|
54
|
+
"exit_code": None,
|
|
55
|
+
"stdout_bytes": len(exc.stdout or b""),
|
|
56
|
+
"stderr_bytes": len(exc.stderr or b""),
|
|
57
|
+
"elapsed_seconds": round(time.monotonic() - started, 3),
|
|
58
|
+
"timed_out": True,
|
|
59
|
+
"failure": f"timed out after {timeout:g}s",
|
|
60
|
+
}
|
|
61
|
+
records.append(record)
|
|
62
|
+
return records
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def main() -> int:
|
|
66
|
+
parser = argparse.ArgumentParser()
|
|
67
|
+
parser.add_argument("target", type=Path)
|
|
68
|
+
parser.add_argument("--repetitions", type=int, default=30)
|
|
69
|
+
parser.add_argument("--timeout", type=float, default=120.0)
|
|
70
|
+
parser.add_argument("--output", type=Path, required=True)
|
|
71
|
+
args = parser.parse_args()
|
|
72
|
+
if args.repetitions < 1 or args.timeout <= 0:
|
|
73
|
+
parser.error("--repetitions and --timeout must be positive")
|
|
74
|
+
|
|
75
|
+
target = args.target.resolve()
|
|
76
|
+
payload: dict[str, object] = {
|
|
77
|
+
"schema_version": "ask-windows-reliability-matrix-v1",
|
|
78
|
+
"target": str(target),
|
|
79
|
+
"cwd": os.getcwd(),
|
|
80
|
+
"python": sys.version.split()[0],
|
|
81
|
+
"repetitions": args.repetitions,
|
|
82
|
+
"timeout_seconds": args.timeout,
|
|
83
|
+
"records": _run(target, args.repetitions, args.timeout),
|
|
84
|
+
}
|
|
85
|
+
failures = [record for record in payload["records"] if "failure" in record]
|
|
86
|
+
payload["passed"] = not failures
|
|
87
|
+
args.output.parent.mkdir(parents=True, exist_ok=True)
|
|
88
|
+
args.output.write_text(json.dumps(payload, indent=2, sort_keys=True), encoding="utf-8")
|
|
89
|
+
if failures:
|
|
90
|
+
print(f"{len(failures)} reliability-matrix run(s) failed; see {args.output}", file=sys.stderr)
|
|
91
|
+
return 1
|
|
92
|
+
print(f"{len(payload['records'])} reliability-matrix runs passed; evidence: {args.output}")
|
|
93
|
+
return 0
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
if __name__ == "__main__":
|
|
97
|
+
raise SystemExit(main())
|