sourcecode 5.9.26__tar.gz → 5.9.27__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.26 → sourcecode-5.9.27}/CHANGELOG.md +40 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/PKG-INFO +3 -3
- {sourcecode-5.9.26 → sourcecode-5.9.27}/README.md +2 -2
- sourcecode-5.9.27/docs/AUDIT-2026-09-02-EXTERNAL-5.9.26.md +70 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/DEFECT-LEDGER.md +56 -1
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/DEVELOPMENT-ROADMAP.md +22 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/EXECUTIVE-ROADMAP.md +16 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/USER_GUIDE.md +1 -1
- {sourcecode-5.9.26 → sourcecode-5.9.27}/pyproject.toml +1 -1
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/cli.py +29 -1
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/empty_answer_diagnostics.py +65 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/remediation_report.py +3 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/.github/workflows/windows-battery.yml +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/.github/workflows/windows-regression.yml +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/.gitignore +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/.ruff.toml +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/CLAUDE.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/CODE_OF_CONDUCT.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/CONTRIBUTING.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/LICENSE +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/NOTICE +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/SECURITY.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-28-EXTERNAL-5.9.10.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.16.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.17.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-08-31-REMEDIATION-5.9.18.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-09-01-ALTERNATIVE-5.9.23.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-09-01-EXTERNAL-5.9.22.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-09-01-EXTERNAL-5.9.23.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-09-02-ALTERNATIVE-5.9.25.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-2026-09-02-EXTERNAL-5.9.25.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/CACHE.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/MANUAL-USUARIO.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/PRODUCT-ROUTE.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/RD-JVM-ASK-TRIAGE-2026-08-31.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/RELEASE-VERIFICATION.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-assessment-report.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-pack-manifest.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/overview.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/contracts.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/licensing-schema.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/migrate-check.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/pack-gate-github-actions.yml +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/pack-gate-gitlab.yml +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/README.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/5.9.22/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/5.9.22/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/perf/corpus-testing-2026-08-22.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/posture.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/privacy.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/schema.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/hatch_build.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/scripts/context_cost_harness.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/scripts/perf_gate.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/scripts/perf_harness.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/scripts/test_fast.sh +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/scripts/windows_reliability_matrix.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/__main__.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/access_drift.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/analysis_budget.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/answer_bounds.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/audit_clusters.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/audit_recipe.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/audit_report.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/audit_since.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/audit_verify.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/baseline_attestation.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/breaking_changes.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/build_modules.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/build_stamp.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/c4_render.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/cache.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/cache_model.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/cache_observation.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/ci_output.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/classifier.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/click_runtime.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/context_graph.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/cve_feed.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/cve_reachability.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/defect_classes/__init__.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/defect_classes/registry.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/empty_reach.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/endpoint_disposition.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/explain_endpoint.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/field_deprecations.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/findings_baseline.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/functional_routes.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/github_diff.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/intent_router.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/jvm_inventory.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/license.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/manifest_cache.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/migrate_check.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/migration_apply.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/output_bounds.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/output_ceiling.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/output_sink.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/pack_manifest.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/packs.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/parallel.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/parse_cache.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/path_display.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/phased_run.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/posture.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/pr_risk.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/product_info.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/progress.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/regress.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/regulatory_pack.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/release_info.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/remediation_diff.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/remediation_flow.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/repository_ir.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/resource_budget.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/risk.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/risk_model.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/sarif_emit.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/schema_producers.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/schema_registry.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/selection_contract.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/self_audit.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/selftest.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/timeline_cache.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/vex.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/watch_loop.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/wired_surface.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/supabase/functions/README.md +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.9.26 → sourcecode-5.9.27}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.9.27] — 2026-09-02
|
|
4
|
+
|
|
5
|
+
*Follow-up from the 5.9.26 re-audit — a sharper instrumentation lead and a
|
|
6
|
+
CLI-ergonomics regression.*
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
|
|
10
|
+
- `remediation-report` still accepts any repository path for invocation
|
|
11
|
+
consistency, but now discloses `path_argument: {given, used: false}`
|
|
12
|
+
whenever one is passed, whether or not it exists — a real path, no path,
|
|
13
|
+
and a nonexistent path no longer produce byte-identical, silently
|
|
14
|
+
misleading output.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- Added a bounded entry-point trace (`record_entry_reached`) as the literal
|
|
19
|
+
first statement of the CLI entry point, scoped to the six audit-family
|
|
20
|
+
commands the empty-`exit 0` defect affects. The follow-up audit's
|
|
21
|
+
forensic sidecar never fired across 32 observed empty answers; this
|
|
22
|
+
answers a narrower question directly — did the failing process reach
|
|
23
|
+
this product's own entry point at all — instead of leaving it inferable
|
|
24
|
+
only from an absent failure record.
|
|
25
|
+
|
|
26
|
+
### Known Limitations
|
|
27
|
+
|
|
28
|
+
- The empty-`exit 0` failure across `spring-audit`, `verify`, `risk`,
|
|
29
|
+
`audit-report`, `migrate-check` and `migrate-apply` (`ALT-01`/`ALT-03`)
|
|
30
|
+
remains open. The 5.9.26 re-audit found the diagnostic sidecar added to
|
|
31
|
+
instrument it never fired in 32 observed occurrences — evidence the
|
|
32
|
+
failure happens before this product's own entry-point wrapper runs, not
|
|
33
|
+
inside a caught exception. The new entry-point trace targets exactly that
|
|
34
|
+
question; the underlying mechanism is still unconfirmed.
|
|
35
|
+
- `--agent`'s RSS ceiling enforcement timing (`REG-02`) and `spring-audit`
|
|
36
|
+
warm-path performance (`REG-03`) are unchanged and need the field's own
|
|
37
|
+
large repository to validate safely.
|
|
38
|
+
- The re-audit's own report was internally inconsistent this round (an
|
|
39
|
+
initial pass found 0/23 empty answers, a later pass in the same session
|
|
40
|
+
found 0/35 successful answers); neither reading is treated as regime
|
|
41
|
+
evidence on its own.
|
|
42
|
+
|
|
3
43
|
## [5.9.26] — 2026-09-02
|
|
4
44
|
|
|
5
45
|
*Fix queue from the two 5.9.25 re-audits (multi-repository and native-Windows).*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 5.9.
|
|
3
|
+
Version: 5.9.27
|
|
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
|
|
@@ -290,7 +290,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
290
290
|
# pip / pipx
|
|
291
291
|
pipx install sourcecode # or: pip install sourcecode
|
|
292
292
|
|
|
293
|
-
ask version # ask 5.9.
|
|
293
|
+
ask version # ask 5.9.27 — and, on a build that has aged,
|
|
294
294
|
# how many releases have probably shipped since
|
|
295
295
|
```
|
|
296
296
|
|
|
@@ -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
|
|
@@ -241,7 +241,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
241
241
|
# pip / pipx
|
|
242
242
|
pipx install sourcecode # or: pip install sourcecode
|
|
243
243
|
|
|
244
|
-
ask version # ask 5.9.
|
|
244
|
+
ask version # ask 5.9.27 — and, on a build that has aged,
|
|
245
245
|
# how many releases have probably shipped since
|
|
246
246
|
```
|
|
247
247
|
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# External Audit - 5.9.26
|
|
2
|
+
|
|
3
|
+
## Release Status
|
|
4
|
+
|
|
5
|
+
This session is internally contradictory, and both halves are published rather
|
|
6
|
+
than resolved into one number. An initial 129-invocation pass replicating the
|
|
7
|
+
exact 5.9.23/5.9.25 methodology found **zero** empty-`exit 0` answers (0/23 on
|
|
8
|
+
the precise invocations that gave 18.4% in 5.9.25), scoring the release
|
|
9
|
+
**7.4/10**. A second, larger pass in the same session — prompted by trying to
|
|
10
|
+
find the forensic sidecar `ALT-01`'s fix is supposed to write on every guard
|
|
11
|
+
trip — found **zero successful answers** across 35 further invocations of the
|
|
12
|
+
same command family, and revised the verdict down to **3.8/10**, the lowest of
|
|
13
|
+
four audited releases. The auditor's own final position is the second number;
|
|
14
|
+
the first is published as a retracted intermediate reading, not a competing
|
|
15
|
+
conclusion.
|
|
16
|
+
|
|
17
|
+
## Priority Finding — the diagnostic guard is not being reached
|
|
18
|
+
|
|
19
|
+
`empty_answer_diagnostics.record()` is documented to write a sidecar and stamp
|
|
20
|
+
`diagnostics_path` in the error envelope every time either exit guard fires.
|
|
21
|
+
Across 32 empty `exit 0` answers this session (stdout **and** stderr both at 0
|
|
22
|
+
bytes), no sidecar file exists anywhere on the audited machine, and no error
|
|
23
|
+
envelope was ever printed. This does not mean the guard is miscalibrated — it
|
|
24
|
+
means the failing runs are not reaching `main_entry`'s wrapper at all. A
|
|
25
|
+
one-line "reached the guard" debug log at that entry point would confirm this
|
|
26
|
+
directly and is the most actionable next step across four audit rounds.
|
|
27
|
+
|
|
28
|
+
## Priority Regressions
|
|
29
|
+
|
|
30
|
+
1. `NEW-01`/`ALT-01`/`ALT-03` (the audit-command family): 0 of 35 invocations
|
|
31
|
+
answered this session, the worst of four rounds, and for the first time a
|
|
32
|
+
single batch of identical `spring-audit . --compact` calls produced both
|
|
33
|
+
failure shapes — a 200s hang and a near-instant empty answer — without
|
|
34
|
+
changing anything between them.
|
|
35
|
+
2. `ALT-10`/onboard: a cold run hit the external 200s kill entirely (worse
|
|
36
|
+
than 5.9.25's 164.9s worst case); a second, untouched run answered in
|
|
37
|
+
83.5s — still roughly 120x the historical 681-780ms baseline.
|
|
38
|
+
3. `BUG-17` regression, reconfirmed: `remediation-report` with no path, a
|
|
39
|
+
real path, and a nonexistent path all return byte-identical output. This
|
|
40
|
+
is not a false claim about a repository (the command never claims to
|
|
41
|
+
have read one) but is CLI-ergonomics regression from an explicit
|
|
42
|
+
`INVALID_USAGE` in 5.9.22/23/25.
|
|
43
|
+
|
|
44
|
+
## Verified Improvements
|
|
45
|
+
|
|
46
|
+
- `ALT-09` (piped refusal on `cache clear`) confirmed working exactly as
|
|
47
|
+
fixed: `echo n | ask cache clear .` now aborts with `rc=1` and leaves the
|
|
48
|
+
cache untouched.
|
|
49
|
+
- `ALT-04`/`ALT-05` (content-id stability, findings reconciliation) both
|
|
50
|
+
reconfirmed with fresh measurements.
|
|
51
|
+
- `BUG-01` (unbalanced-parens parse-structure signal) verified with the
|
|
52
|
+
auditor's own constructed fixture, not just the shipped test suite.
|
|
53
|
+
- `BUG-15`/`BUG-21` (markup leak, `--jobs` range) both reconfirmed.
|
|
54
|
+
- `ALT-11` (`watch` startup event): confirmed working, with a measurement
|
|
55
|
+
correction — the auditor's own first attempt used too short an observation
|
|
56
|
+
window (8-20s) and nearly mis-reported this as broken. The index warm on
|
|
57
|
+
the 3,342-file audited repository takes 51.7s before the first NDJSON
|
|
58
|
+
line, which is real and not a defect, but is long enough to still read as
|
|
59
|
+
hung without foreknowledge.
|
|
60
|
+
|
|
61
|
+
## Verification Boundary
|
|
62
|
+
|
|
63
|
+
This session ran under heavier contention than any prior round: up to five
|
|
64
|
+
concurrent ASK processes on the same machine and cache directory (the
|
|
65
|
+
auditor's own batches plus a second, independent agent session exercising the
|
|
66
|
+
same corpus in parallel), with system free RAM as low as 3.4-4.6 GB of 32 GB.
|
|
67
|
+
The audit-family failure did not correlate cleanly with this contention in
|
|
68
|
+
either direction this session — it was both absent (first pass, under the
|
|
69
|
+
heaviest contention observed) and total (second pass). No stable trigger
|
|
70
|
+
variable has been isolated in four audit rounds.
|
|
@@ -14,6 +14,61 @@ 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 `5.9.26`, self-contradictory session (2026-09-02)
|
|
18
|
+
|
|
19
|
+
**The 5.9.26 fix batch did not close the release gate, and new evidence
|
|
20
|
+
narrows the failure to before the guard rather than inside it.** This audit
|
|
21
|
+
round is internally contradictory and both halves are published rather than
|
|
22
|
+
resolved: an initial 129-invocation pass replicating the exact 5.9.25
|
|
23
|
+
methodology found zero empty answers (0/23) and scored 7.4/10; a second,
|
|
24
|
+
larger pass in the same session found zero *successful* answers across 35
|
|
25
|
+
further invocations of the same command family and revised the verdict to
|
|
26
|
+
**3.8/10**, the lowest of four rounds. The auditor's own final position is the
|
|
27
|
+
second number. Full evidence:
|
|
28
|
+
[`AUDIT-2026-09-02-EXTERNAL-5.9.26.md`](AUDIT-2026-09-02-EXTERNAL-5.9.26.md).
|
|
29
|
+
|
|
30
|
+
**New finding, most actionable in four rounds (`R-01`):** across 32 empty
|
|
31
|
+
`exit 0` answers this session, stdout **and** stderr were both empty and no
|
|
32
|
+
`empty_answer_diagnostics` sidecar file exists anywhere on the audited
|
|
33
|
+
machine — the guard that is supposed to write one on every trip did not fire.
|
|
34
|
+
This does not mean the guard added in 5.9.26 is miscalibrated; it means the
|
|
35
|
+
failing runs are not reaching `main_entry`'s wrapper at all, which rules out
|
|
36
|
+
"a caught exception inside command logic" as the mechanism and points instead
|
|
37
|
+
at something that terminates the process before Python's own `try`/`except`
|
|
38
|
+
around `app(prog_name="ask")` ever regains control — an external kill, a
|
|
39
|
+
native crash, or an `os._exit()`-shaped exit somewhere in a dependency. A
|
|
40
|
+
one-line "reached the guard" debug log at the top of `main_entry` would
|
|
41
|
+
confirm this directly without needing native Windows to interpret.
|
|
42
|
+
|
|
43
|
+
Other updates this round: `BUG-17` reconfirmed with a more precise repro
|
|
44
|
+
(no path, a real path, and a nonexistent path are all byte-identical, not
|
|
45
|
+
merely "an extra argument is now accepted"); `ALT-10`/`onboard` got worse (a
|
|
46
|
+
cold run hit the external 200s kill entirely, worse than 5.9.25's 164.9s
|
|
47
|
+
worst case); `ALT-11`/`watch` reconfirmed working, with a correction — the
|
|
48
|
+
3,342-file audited repository's index warm takes 51.7s before the first
|
|
49
|
+
NDJSON line, real and not a defect, but long enough to still read as hung
|
|
50
|
+
without foreknowledge; and `ask --help` costs 3-4s even warm, which `REG-01`
|
|
51
|
+
never claimed to fix (`REG-01` was specifically the 82-120s hang in a nested
|
|
52
|
+
workspace, now resolved) but is worth its own row if it persists.
|
|
53
|
+
|
|
54
|
+
| ID | Severity | Status | Evidence and required closure |
|
|
55
|
+
|---|---:|---|---|
|
|
56
|
+
| `NEW-01`/`ALT-01`/`ALT-03` | Critical maximum | **open, contradictory session, worst round measured** | 0 of 35 invocations answered in the second pass of this session (vs. 0 of 23 *empty* in the first pass of the same session) — do not average the two into a rate; neither is regime evidence. First round where a single batch of identical `spring-audit . --compact` calls produced both failure shapes (a 200s hang, then a near-instant empty answer) with nothing changed between them. `R-01` above is the actionable lead. |
|
|
57
|
+
| `R-01` | Critical maximum | **instrumented, not yet closed** | The `empty_answer_diagnostics` sidecar added for `ALT-01`/`ALT-03` did not fire in 32 observed empty answers this session — no file, no error envelope. `record_entry_reached` now appends one line to `entry-trace.jsonl` as the very first statement of `main_entry`, argv-gated to `REQUIRED_ANSWER_COMMANDS` so `--help` and other latency-sensitive commands are not charged for it. The next native occurrence answers directly whether the failing run reached this product's own entry point at all, rather than requiring inference from the absence of a failure record. This does not close the row — it is the instrumentation the row asked for, not a fix for whatever is upstream if the trace turns out empty too. |
|
|
58
|
+
| `ALT-10` | Medium | **open, worse** | A cold `onboard .` hit the external 200s kill entirely this session (5.9.25's worst case answered at 164.9s); a second, untouched run answered in 83.5s — still ~120x the 681-780ms historical baseline. Shares `R-01`'s erratic shape, not a simple cold/warm split. |
|
|
59
|
+
| `BUG-17` | Low | **fixed** | `remediation-report` still accepts any `path` value (5.9.24's deliberate CLI-consistency choice, kept — a caller that always passes a repository path needs no special case for the one command with none to say about it), but the payload now carries `path_argument: {given, used: false, note}` whenever one is given, in both JSON and Markdown, whether or not the path exists. `rows.pop("path_argument")` still equals the no-path payload exactly — nothing else changed. |
|
|
60
|
+
| `ALT-09` | Critical | **fixed, reconfirmed** | A piped `n` answer to `ask cache clear .` aborts with `rc=1`, `"Aborted."` on stderr, cache untouched. |
|
|
61
|
+
| `ALT-04` | High | **fixed, reconfirmed** | `impact-chain` gave the same `content_id` across 3 repeated runs again this session. |
|
|
62
|
+
| `BUG-01` | Critical maximum | **fixed, reconfirmed with an independent fixture** | The auditor built their own unbalanced-paren file (not the shipped test fixture) and got the expected `reason: "unbalanced_parens"` gap. The documented residual class (a syntax error that disturbs neither braces nor parens) is unchanged and expected. |
|
|
63
|
+
| `BUG-15` | Low | **fixed, reconfirmed** | 0 Rich-markup occurrences across 3 repeated non-TTY `--help` runs. |
|
|
64
|
+
| `BUG-21` | Low | **fixed, reconfirmed** | `--jobs 0` and `--jobs 999` both rejected with the stated `1<=x<=128` range. |
|
|
65
|
+
| `ALT-11` | Low | **fixed, reconfirmed with a measurement correction** | `watch` emits its `status: "watching"` line at 51.7s on the 3,342-file audited repository — real index-warm cost, not a defect, but long enough that a short observation window (the auditor's own first attempt, 8-20s) reads it as still broken. No further action required by this row; `ALT-10`/onboard shares the same warm-up path and is where the latency itself belongs. |
|
|
66
|
+
|
|
67
|
+
The remaining rows below this section (`BUG-03`, `BUG-09` through `BUG-23`,
|
|
68
|
+
`REG-02`, `REG-03`, `REG-04`, `NEW-02`) were reconfirmed unchanged this round
|
|
69
|
+
or not relaunched for time budget; none regressed. Full detail in the audit
|
|
70
|
+
document.
|
|
71
|
+
|
|
17
72
|
## Current Synchronization — Alternative External Audit `5.9.25`, and External Audit `5.9.25` (2026-09-02)
|
|
18
73
|
|
|
19
74
|
**Release `5.9.26` closes eight rows from this round with verified evidence**
|
|
@@ -75,7 +130,7 @@ and [`AUDIT-2026-09-02-EXTERNAL-5.9.25.md`](AUDIT-2026-09-02-EXTERNAL-5.9.25.md)
|
|
|
75
130
|
| `BUG-01` | Critical maximum | **fixed, mechanism narrowed, not eliminated** | Reproduced directly: a missing `;` or a missing `)` on a method signature both extract a clean class+method symbol pair with balanced braces, so the E-10 brace-only check (`unbalanced_braces`) never fired and the file passed as clean. `repository_ir.py` now also masks and checks paren balance (`unbalanced_parens`), publishing the same `parse_structure` gap for that shape. This is a heuristic extractor without a real Java grammar, so a syntax error that disturbs neither braces nor parens (for example a missing operand with balanced punctuation on both sides) remains undetectable by construction — the row stays open at lower severity for that residual class, not closed. |
|
|
76
131
|
| `BUG-02` | Critical maximum | **open, P0** | Large `risk` ended `rc=127` with no output or structured failure. Add fail-fast resource/process handling and durable partial checkpoints. |
|
|
77
132
|
| `BUG-12` | Critical maximum | **open, P0** | Deep `--agent` output construction reaches multi-gigabyte RSS before a small answer. Bound projection while building. |
|
|
78
|
-
| `BUG-03` | High | **fixed** | `non_coverage.stack_fit`'s marginal-detection disclosure (`fit: "partial"`, below 10% Spring-bean density) has existed since AUD-596-D13 but was unreachable from `risk` and `posture`: neither call site passed `spring_footprint`, so `java_files` stayed 0 and the branch that reads it could never fire regardless of the real ratio. Both now compute it the same way `spring-audit`'s own call already did (`sum(bean.spring for bean in graph.beans.values())` over `len(cir.files)`); verified end to end on a 1-bean/16-file fixture. |
|
|
133
|
+
| `BUG-03` | High | **fixed** | `non_coverage.stack_fit`'s marginal-detection disclosure (`fit: "partial"`, below 10% Spring-bean density) has existed since AUD-596-D13 but was unreachable from `risk` and `posture`: neither call site passed `spring_footprint`, so `java_files` stayed 0 and the branch that reads it could never fire regardless of the real ratio. Both now compute it the same way `spring-audit`'s own call already did (`sum(bean.spring for bean in graph.beans.values())` over `len(cir.files)`); verified end to end on a 1-bean/16-file fixture. The 5.9.26 re-audit's own index table still lists this row `abierto` for both 5.9.25 and 5.9.26 without naming which command was tested or a repro that contradicts the fixture above; the fix stands on the passing regression tests until a command-specific repro says otherwise. |
|
|
79
134
|
| `BUG-04` | High | **open, P1** | `selftest` publishes `complete=true` with five error rows. Derive bounds from actual results. |
|
|
80
135
|
| `BUG-05` | High | **open, P1** | Overloaded endpoint handlers can receive the wrong declaration line. Resolve by mapping annotation or publish ambiguity. |
|
|
81
136
|
| `BUG-07` | Closed 5.9.23, verification gap | Compact JVM inventory is bounded, but the audit notes no selftest row protects the correction. Add release-battery coverage before treating it as durable closure. |
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# ASK — Development Roadmap
|
|
2
2
|
|
|
3
|
+
### External Audit Intake — release 5.9.26, the guard is not being reached
|
|
4
|
+
|
|
5
|
+
A self-contradictory session (0/23 empty on one pass, 0/35 successful on a
|
|
6
|
+
second, larger pass in the same session) produced the sharpest lead of four
|
|
7
|
+
rounds: the `empty_answer_diagnostics` sidecar shipped in 5.9.26 to
|
|
8
|
+
instrument `ALT-01`/`ALT-03` did not fire once across 32 observed empty
|
|
9
|
+
answers — no sidecar file, no error envelope, stdout and stderr both empty.
|
|
10
|
+
That rules out "an exception inside command logic reaches the guard and the
|
|
11
|
+
guard mishandles it" and points at the failing runs never reaching
|
|
12
|
+
`main_entry`'s wrapper at all.
|
|
13
|
+
|
|
14
|
+
| Priority | Required work and closure boundary |
|
|
15
|
+
|---|---|
|
|
16
|
+
| P0 | Add a debug-level log line at the very top of `main_entry`, before `app(prog_name="ask")` is called, and confirm it fires on every invocation including the empty-answer ones. If it does not, the failure is upstream of Python's own entry point (an external kill, a native crash, an `os._exit()`-shaped exit in a dependency) and the whole `ALT-01`/`ALT-03` investigation must move there. This is answerable in one native debugging session and has not been tried in four audit rounds. |
|
|
17
|
+
| P1 | `remediation-report` (`BUG-17`) now returns byte-identical output for no path, a real path, and a nonexistent path. Either declare and filter on `path`, or reject any positional explicitly with the `INVALID_USAGE` this command gave through 5.9.25 — "accept and silently ignore" is worse than either alternative. |
|
|
18
|
+
| P1 | `onboard .` hit the external 200s kill entirely in one run this session (worse than 5.9.25's 164.9s worst case) and answered in 83.5s in another, untouched run seconds later — the same erratic shape as `ALT-01`/`ALT-03`, not a simple cold/warm split. Bisect with the same instrumentation once the P0 above lands. |
|
|
19
|
+
| P2 | `ask --help` costs 3-4s warm on the audited repository (14.4s cold), which `REG-01` did not claim to fix — that row closed the 82-120s nested-workspace hang specifically. Profile whether `--help`'s repository-profile hint line is re-scanning file counts that `cache status` already has cached. |
|
|
20
|
+
|
|
21
|
+
The full measurement matrix, including the retracted 7.4/10 intermediate
|
|
22
|
+
reading, is in
|
|
23
|
+
[`AUDIT-2026-09-02-EXTERNAL-5.9.26.md`](AUDIT-2026-09-02-EXTERNAL-5.9.26.md).
|
|
24
|
+
|
|
3
25
|
### Alternative Audit Intake — release 5.9.25, closed in 5.9.26 where marked
|
|
4
26
|
|
|
5
27
|
The 5.9.23 recovery sequence closed three rows with verified evidence
|
|
@@ -5,6 +5,22 @@
|
|
|
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
|
+
> **5.9.26 RE-AUDIT — self-contradictory session, sharpest lead in four
|
|
9
|
+
> rounds.** A 129-invocation pass reproducing the exact 5.9.25 empty-answer
|
|
10
|
+
> methodology found zero empty answers; a second, larger pass in the same
|
|
11
|
+
> session found zero *successful* answers across 35 further invocations of
|
|
12
|
+
> `spring-audit`/`verify`/`risk`/`audit-report`/`migrate-check`/
|
|
13
|
+
> `migrate-apply`, revising the score to 3.8/10 — the lowest of four rounds.
|
|
14
|
+
> The finding that matters more than either number: the forensic sidecar
|
|
15
|
+
> 5.9.26 added specifically to instrument this failure did not fire once
|
|
16
|
+
> across 32 observed empty answers on the audited machine — no sidecar file,
|
|
17
|
+
> no error envelope. That means the failing runs are not reaching this
|
|
18
|
+
> product's own entry-point wrapper at all, which redirects the entire
|
|
19
|
+
> investigation upstream of where four rounds of prior work assumed it was.
|
|
20
|
+
> The release gate is unchanged: do not use the audit-command family for
|
|
21
|
+
> unattended CI. See
|
|
22
|
+
> [`AUDIT-2026-09-02-EXTERNAL-5.9.26.md`](AUDIT-2026-09-02-EXTERNAL-5.9.26.md).
|
|
23
|
+
|
|
8
24
|
> **CURRENT UPDATE — release `5.9.26`, fix queue from both 5.9.25 re-audits.**
|
|
9
25
|
> Eight rows closed with verified evidence, each with a regression test:
|
|
10
26
|
> `cache clear`/`context-clear` now read a piped refusal instead of treating
|
|
@@ -17454,7 +17454,6 @@ def remediation_report_cmd(
|
|
|
17454
17454
|
copy: bool = _copy_option(),
|
|
17455
17455
|
) -> None:
|
|
17456
17456
|
"""Publish a redacted remediation record for this ASK build."""
|
|
17457
|
-
del path
|
|
17458
17457
|
_enforce_format("remediation-report", format)
|
|
17459
17458
|
from sourcecode import bundled_docs
|
|
17460
17459
|
|
|
@@ -17473,6 +17472,24 @@ def remediation_report_cmd(
|
|
|
17473
17472
|
report = build_report(
|
|
17474
17473
|
ledger_path.read_text(encoding="utf-8"), build=build_provenance()
|
|
17475
17474
|
)
|
|
17475
|
+
# BUG-17 (5.9.26 re-audit): a real path, no path and a nonexistent path
|
|
17476
|
+
# all returned byte-identical output with nothing saying the argument was
|
|
17477
|
+
# ignored — read as a confident answer about a repository this command
|
|
17478
|
+
# never opens. This still accepts any value (5.9.24 kept it deliberately,
|
|
17479
|
+
# so scripts that always pass a repository path do not need a special
|
|
17480
|
+
# case for the one command that has none to say about it); what changes
|
|
17481
|
+
# is that the payload now says so, whether the path exists or not.
|
|
17482
|
+
if path is not None:
|
|
17483
|
+
report["path_argument"] = {
|
|
17484
|
+
"given": str(path),
|
|
17485
|
+
"used": False,
|
|
17486
|
+
"note": (
|
|
17487
|
+
"This report always projects the ledger bundled inside this "
|
|
17488
|
+
"build. The path argument is accepted for invocation "
|
|
17489
|
+
"consistency with repository-scoped commands and is never "
|
|
17490
|
+
"read, whether or not it exists."
|
|
17491
|
+
),
|
|
17492
|
+
}
|
|
17476
17493
|
output = render_markdown(report) if format == "markdown" else _serialize_dict(report, format)
|
|
17477
17494
|
_emit_command_output(output, output_path, copy,
|
|
17478
17495
|
success_msg=f"Remediation report written to {output_path}",
|
|
@@ -21676,6 +21693,17 @@ def main_entry() -> None:
|
|
|
21676
21693
|
can consume them as positional arguments (which would prevent subcommand
|
|
21677
21694
|
routing for tokens like 'version' or 'config').
|
|
21678
21695
|
"""
|
|
21696
|
+
# R-01 (5.9.26 re-audit): the earliest possible line in this process, for
|
|
21697
|
+
# the same reason AUD-596-B10 marks the clock here rather than later — a
|
|
21698
|
+
# failure that never reaches this point cannot be told apart, from
|
|
21699
|
+
# outside, from one that reaches it and then goes silent. 32 empty
|
|
21700
|
+
# answers on the audited machine wrote no forensic sidecar at all; this
|
|
21701
|
+
# settles which side of that line they were on. Argv-gated (not every
|
|
21702
|
+
# invocation) so `--help` and other latency-sensitive commands this audit
|
|
21703
|
+
# also flagged are not charged for a trace they were never in question for.
|
|
21704
|
+
if any(tok in REQUIRED_ANSWER_COMMANDS for tok in sys.argv[1:]):
|
|
21705
|
+
from sourcecode import empty_answer_diagnostics as _diag
|
|
21706
|
+
_diag.record_entry_reached(sys.argv[1:])
|
|
21679
21707
|
# AUD-596-B10: the earliest point in the process that knows a command is
|
|
21680
21708
|
# starting. `timings.wall_ms` is published under a unit reading "THIS
|
|
21681
21709
|
# process's wall clock", and until this mark existed it measured from
|
|
@@ -19,6 +19,15 @@ for explicitly: capture the process's own state at the exact moment either
|
|
|
19
19
|
guard is about to fire, every time it fires, so the next occurrence in the
|
|
20
20
|
field carries its own forensic record instead of a report written from
|
|
21
21
|
memory afterward.
|
|
22
|
+
|
|
23
|
+
R-01 (5.9.26 re-audit) sharpened the question: across 32 empty answers on the
|
|
24
|
+
audited machine, `record()` above never fired at all — no sidecar, no error
|
|
25
|
+
envelope. That does not mean the guard mishandled a failure; it means the
|
|
26
|
+
failing runs never reached the guard, which was invisible until something
|
|
27
|
+
recorded whether the process got that far in the first place. `record_entry`
|
|
28
|
+
answers exactly that, for the six audit-family commands, on every invocation
|
|
29
|
+
— reached or not is now a fact this build can be asked for directly, instead
|
|
30
|
+
of inferred from the absence of a failure record.
|
|
22
31
|
"""
|
|
23
32
|
from __future__ import annotations
|
|
24
33
|
|
|
@@ -92,3 +101,59 @@ def _prune(directory: Path) -> None:
|
|
|
92
101
|
stale.unlink(missing_ok=True)
|
|
93
102
|
except Exception:
|
|
94
103
|
pass
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
#: Filename for the entry-reached trace (R-01). Distinct from `record()`'s
|
|
107
|
+
#: one-file-per-failure snapshots: this is a bounded append log, one line per
|
|
108
|
+
#: invocation of an audit-family command, so a comparison across many
|
|
109
|
+
#: invocations does not depend on `record()` ever having fired.
|
|
110
|
+
_ENTRY_TRACE_NAME = "entry-trace.jsonl"
|
|
111
|
+
|
|
112
|
+
#: Lines to keep once the trace is pruned. Pruning is triggered by file size,
|
|
113
|
+
#: not by line count, so the common case (a small file) costs one `stat`.
|
|
114
|
+
_ENTRY_TRACE_MAX_LINES = 500
|
|
115
|
+
_ENTRY_TRACE_PRUNE_THRESHOLD_BYTES = 512_000
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def record_entry_reached(argv: "list[str]") -> None:
|
|
119
|
+
"""Append one line: this process reached `main_entry`, with this argv.
|
|
120
|
+
|
|
121
|
+
R-01: called as the very first statement of `main_entry`, before any
|
|
122
|
+
other work, for the audit-family commands only (`REQUIRED_ANSWER_COMMANDS`
|
|
123
|
+
in `cli.py`) — the ones the empty-answer defect affects. A future
|
|
124
|
+
occurrence can then be checked against this trace: a PID with a matching
|
|
125
|
+
timestamp here proves the process reached this product's own entry point
|
|
126
|
+
before it went silent, which narrows the search to after this line; no
|
|
127
|
+
matching entry proves the opposite, that whatever killed the run did so
|
|
128
|
+
before Python's own `main_entry` code could run at all.
|
|
129
|
+
|
|
130
|
+
Best-effort and always cheap: one append, one `stat` call in the common
|
|
131
|
+
case. Never raises — this must not cost, or ever be able to break, the
|
|
132
|
+
invocation it is observing.
|
|
133
|
+
"""
|
|
134
|
+
try:
|
|
135
|
+
directory = _diagnostics_dir()
|
|
136
|
+
directory.mkdir(parents=True, exist_ok=True)
|
|
137
|
+
path = directory / _ENTRY_TRACE_NAME
|
|
138
|
+
line = json.dumps(
|
|
139
|
+
{"ts": time.time(), "pid": os.getpid(), "argv": list(argv)},
|
|
140
|
+
ensure_ascii=True, default=str,
|
|
141
|
+
)
|
|
142
|
+
with path.open("a", encoding="utf-8") as fh:
|
|
143
|
+
fh.write(line + "\n")
|
|
144
|
+
try:
|
|
145
|
+
if path.stat().st_size > _ENTRY_TRACE_PRUNE_THRESHOLD_BYTES:
|
|
146
|
+
_prune_entry_trace(path)
|
|
147
|
+
except OSError:
|
|
148
|
+
pass
|
|
149
|
+
except Exception:
|
|
150
|
+
pass
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def _prune_entry_trace(path: Path) -> None:
|
|
154
|
+
try:
|
|
155
|
+
lines = path.read_text(encoding="utf-8").splitlines()
|
|
156
|
+
kept = lines[-_ENTRY_TRACE_MAX_LINES:]
|
|
157
|
+
path.write_text("\n".join(kept) + ("\n" if kept else ""), encoding="utf-8")
|
|
158
|
+
except Exception:
|
|
159
|
+
pass
|
|
@@ -75,4 +75,7 @@ def render_markdown(report: dict[str, Any]) -> str:
|
|
|
75
75
|
lines.extend(f"| {key} | {value} |" for key, value in report["by_severity"].items())
|
|
76
76
|
lines.extend(["", "## Boundaries", ""])
|
|
77
77
|
lines.extend(f"- {item}" for item in report["non_coverage"])
|
|
78
|
+
path_argument = report.get("path_argument")
|
|
79
|
+
if path_argument:
|
|
80
|
+
lines.append(f"- {path_argument['note']} (given: `{path_argument['given']}`)")
|
|
78
81
|
return "\n".join(lines) + "\n"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-assessment-deployment-evidence.md
RENAMED
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-build-closure-provenance.md
RENAMED
|
File without changes
|
{sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-knowledge-provider-integration.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.26 → sourcecode-5.9.27}/docs/architecture/DESIGN-p6-semantic-impact-engine.md
RENAMED
|
File without changes
|