sourcecode 5.9.25__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.25 → sourcecode-5.9.27}/CHANGELOG.md +76 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/PKG-INFO +3 -3
- {sourcecode-5.9.25 → sourcecode-5.9.27}/README.md +2 -2
- sourcecode-5.9.27/docs/AUDIT-2026-09-02-ALTERNATIVE-5.9.25.md +112 -0
- sourcecode-5.9.27/docs/AUDIT-2026-09-02-EXTERNAL-5.9.25.md +62 -0
- sourcecode-5.9.27/docs/AUDIT-2026-09-02-EXTERNAL-5.9.26.md +70 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/DEFECT-LEDGER.md +119 -39
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/DEVELOPMENT-ROADMAP.md +45 -14
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/EXECUTIVE-ROADMAP.md +56 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/USER_GUIDE.md +1 -1
- {sourcecode-5.9.25 → sourcecode-5.9.27}/pyproject.toml +1 -1
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/answer_bounds.py +10 -1
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/cli.py +141 -10
- sourcecode-5.9.27/src/sourcecode/empty_answer_diagnostics.py +159 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/posture.py +10 -1
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/progress.py +21 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/reconciliation.py +14 -5
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/release_info.py +1 -1
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/remediation_report.py +3 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/repository_ir.py +20 -1
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/resource_budget.py +12 -3
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/risk.py +16 -1
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/selftest.py +16 -3
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/watch_loop.py +1 -1
- {sourcecode-5.9.25 → sourcecode-5.9.27}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/.github/workflows/windows-battery.yml +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/.github/workflows/windows-regression.yml +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/.gitignore +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/.ruff.toml +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/CLAUDE.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/CODE_OF_CONDUCT.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/CONTRIBUTING.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/LICENSE +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/NOTICE +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/SECURITY.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-28-EXTERNAL-5.9.10.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.16.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.17.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-08-31-REMEDIATION-5.9.18.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-09-01-ALTERNATIVE-5.9.23.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-09-01-EXTERNAL-5.9.22.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-2026-09-01-EXTERNAL-5.9.23.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/CACHE.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/MANUAL-USUARIO.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/PRODUCT-ROUTE.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/RD-JVM-ASK-TRIAGE-2026-08-31.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/RELEASE-VERIFICATION.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/DESIGN-assessment-report.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/DESIGN-pack-manifest.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/overview.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/contracts.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/licensing-schema.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/migrate-check.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/pack-gate-github-actions.yml +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/pack-gate-gitlab.yml +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/README.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/5.9.22/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/5.9.22/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/perf/corpus-testing-2026-08-22.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/posture.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/privacy.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/schema.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/hatch_build.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/scripts/context_cost_harness.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/scripts/perf_gate.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/scripts/perf_harness.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/scripts/test_fast.sh +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/scripts/windows_reliability_matrix.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/__main__.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/access_drift.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/analysis_budget.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/audit_clusters.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/audit_recipe.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/audit_report.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/audit_since.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/audit_verify.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/baseline_attestation.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/breaking_changes.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/build_modules.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/build_stamp.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/c4_render.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/cache.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/cache_model.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/cache_observation.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/ci_output.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/classifier.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/click_runtime.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/context_graph.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/cve_feed.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/cve_reachability.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/defect_classes/__init__.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/defect_classes/registry.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/empty_reach.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/endpoint_disposition.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/explain_endpoint.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/field_deprecations.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/findings_baseline.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/functional_routes.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/github_diff.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/intent_router.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/jvm_inventory.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/license.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/manifest_cache.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/migrate_check.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/migration_apply.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/output_bounds.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/output_ceiling.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/output_sink.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/pack_manifest.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/packs.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/parallel.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/parse_cache.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/path_display.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/phased_run.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/pr_risk.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/product_info.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/regress.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/regulatory_pack.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/remediation_diff.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/remediation_flow.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/risk_model.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/sarif_emit.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/schema_producers.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/schema_registry.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/selection_contract.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/self_audit.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/timeline_cache.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/vex.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/wired_surface.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/supabase/functions/README.md +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.9.25 → sourcecode-5.9.27}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -1,5 +1,81 @@
|
|
|
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
|
+
|
|
43
|
+
## [5.9.26] — 2026-09-02
|
|
44
|
+
|
|
45
|
+
*Fix queue from the two 5.9.25 re-audits (multi-repository and native-Windows).*
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
|
|
49
|
+
- Non-interactive `cache clear` / `cache context-clear` now read a piped
|
|
50
|
+
refusal instead of treating any redirected stdin as an implicit "yes".
|
|
51
|
+
- A malformed Java file with unbalanced parentheses — a missing `;` or `)`
|
|
52
|
+
that still extracts a clean symbol pair — is now disclosed as a recovered
|
|
53
|
+
parse, alongside the existing unbalanced-brace signal.
|
|
54
|
+
- `watch` publishes an immediate startup event on stdout before its tick
|
|
55
|
+
loop begins, instead of giving no output at all until the first change.
|
|
56
|
+
- A successful `--agent` run now discloses the default 1,536 MB RSS ceiling
|
|
57
|
+
it was run under, instead of reporting `configured_max_rss_mb: null` for a
|
|
58
|
+
ceiling that was actively enforced.
|
|
59
|
+
- `selftest`'s reported gaps now name the specific ledger rows that failed
|
|
60
|
+
or could not run, instead of a bare category slug.
|
|
61
|
+
- `risk` and `posture` now publish the marginal-Spring-detection disclosure
|
|
62
|
+
(`stack_fit.fit: "partial"`) that existed since 5.8.21 but was unreachable
|
|
63
|
+
from either command.
|
|
64
|
+
- Every command that reports an unproven "empty answer with exit 0" now
|
|
65
|
+
writes a forensic sidecar (phase, peak RSS, argv) referenced from its
|
|
66
|
+
error envelope, so a future occurrence carries evidence instead of
|
|
67
|
+
requiring reconstruction after the fact.
|
|
68
|
+
|
|
69
|
+
### Known Limitations
|
|
70
|
+
|
|
71
|
+
- The empty-`exit 0` failure across `spring-audit`, `verify`, `risk`,
|
|
72
|
+
`audit-report`, `migrate-check` and `migrate-apply` (`ALT-01`/`ALT-03`) is
|
|
73
|
+
not reproducible on this platform and remains open; the new diagnostic
|
|
74
|
+
sidecar is the actionable response until it recurs with evidence.
|
|
75
|
+
- The `--agent` RSS ceiling still evaluates only after the analysis
|
|
76
|
+
completes, not periodically during it (`BUG-22`), and warm-path
|
|
77
|
+
performance for `spring-audit` (`REG-03`) remains unverified.
|
|
78
|
+
|
|
3
79
|
## [5.9.25] — 2026-09-01
|
|
4
80
|
|
|
5
81
|
*Reliability remediation from the alternative 5.9.23 audit.*
|
|
@@ -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,112 @@
|
|
|
1
|
+
# Alternative External Audit - 5.9.25
|
|
2
|
+
|
|
3
|
+
## Scope And Verdict
|
|
4
|
+
|
|
5
|
+
This native-Windows re-audit evaluated the 5.9.25 build on the same dirty
|
|
6
|
+
3,342-Java-file repository as the 5.9.23 round, under Python 3.10. It rates
|
|
7
|
+
the release **4.3/10**, down from 4.9 for 5.9.23 (6.6 for 5.9.22). Three
|
|
8
|
+
defects from the prior round are genuinely fixed with verified evidence
|
|
9
|
+
(content-id clock exclusion, findings-population reconciliation, nested-cap
|
|
10
|
+
aggregation), but the release-blocking failure did not shrink — it became
|
|
11
|
+
**erratic**: the same invocation, repeated seconds apart with nothing else
|
|
12
|
+
changed, now swings between an instant empty answer and a full one, and the
|
|
13
|
+
failure mode has spread to `migrate-apply`, `migrate-check` and `onboard`,
|
|
14
|
+
which were reliable in 5.9.23.
|
|
15
|
+
|
|
16
|
+
This is an external measurement. It is evidence of a release-blocking
|
|
17
|
+
failure, not proof of a single root cause. Engineering-host results do not
|
|
18
|
+
close it.
|
|
19
|
+
|
|
20
|
+
## Execution Matrix
|
|
21
|
+
|
|
22
|
+
| Invocation | Runs | Answers | Empty `exit 0` | Timeouts |
|
|
23
|
+
|---|---:|---:|---:|---:|
|
|
24
|
+
| `spring-audit . --compact` | 18 | 0 | 17 | 1 |
|
|
25
|
+
| `verify .` | 18 | 0 | 18 | 0 |
|
|
26
|
+
| `risk . --limit 20` | 7 | 0 | 7 | 0 |
|
|
27
|
+
| `audit-report . --format markdown` | 7 | 0 | 7 | 0 |
|
|
28
|
+
| `migrate-apply .` (first batch) | 8 | 0 | 8 | 0 |
|
|
29
|
+
| `migrate-apply .` (isolated re-run, same session) | 3 | 3 | 0 | 0 |
|
|
30
|
+
| `risk . -o promise.json` (output-artifact promise) | 4 | 0 | 4 (no file written) | 0 |
|
|
31
|
+
| `selftest .` | 1 | 1 pass of 12 checked | — | — |
|
|
32
|
+
|
|
33
|
+
The same `migrate-apply .` invocation gave 8/8 empty answers in 1.1-1.7s in
|
|
34
|
+
one batch and 3/3 full answers (14-29s, 9,542 bytes) minutes later with
|
|
35
|
+
nothing else changed — no cache clear, no env var, same repository size. The
|
|
36
|
+
decision of "is there a result to serialize" is not correlated with repo
|
|
37
|
+
size, budget, cache state or output format in this data; it now looks
|
|
38
|
+
consistent with worker/lock availability at start, not with any input.
|
|
39
|
+
|
|
40
|
+
## Release Blockers
|
|
41
|
+
|
|
42
|
+
1. `ALT-01` — **reopened, contradicted by native re-test.** The commit cited
|
|
43
|
+
as closing this row (`a7ad44b`, "exit 0 requires delivered stdout or a
|
|
44
|
+
verified requested artifact") does not hold: `risk . -o promise.json`
|
|
45
|
+
returned `rc=0`, 0 bytes, and no file in 4/4 native runs. `risk` and the
|
|
46
|
+
audit-family commands appear to take the same early silent-failure branch
|
|
47
|
+
identified in `ALT-03`, which returns before reaching the output-promise
|
|
48
|
+
guard that does correctly protect `endpoints --output`. Verify the guard
|
|
49
|
+
is reachable from every command's failure path, not just its success path.
|
|
50
|
+
2. `ALT-03` — **open, now with a sharper — but still unconfirmed — signature.**
|
|
51
|
+
The failure is no longer "hangs on the large root, works on the small
|
|
52
|
+
subtree"; it is now mostly near-instant (1-2s) empty success instead of a
|
|
53
|
+
multi-minute hang, on the same commands. This is consistent with a phase
|
|
54
|
+
that is *skipped* rather than one that is *stuck*, but the audit could not
|
|
55
|
+
isolate the trigger with fewer than 3 concurrent heavy ASK processes.
|
|
56
|
+
3. `ALT-09` (new) — Critical: `ask cache clear .` ignores the actual content
|
|
57
|
+
of a piped stdin answer. `echo n | ask cache clear .` deletes cache
|
|
58
|
+
entries despite `n` meaning "no" at any `[y/N]` prompt; only true EOF
|
|
59
|
+
(`< /dev/null`) correctly refuses. The non-interactivity detector appears
|
|
60
|
+
to treat "stdin has bytes" as "proceed", instead of reading and comparing
|
|
61
|
+
those bytes against `y`/`yes`. Low blast radius today (cache is
|
|
62
|
+
rebuildable), high risk if the same detection pattern is reused for a
|
|
63
|
+
future destructive command that touches source.
|
|
64
|
+
4. Closure requires at least 30 native repetitions per affected command, with
|
|
65
|
+
byte counts, exit code, timeout status and requested-output-file
|
|
66
|
+
existence — unchanged from the 5.9.23 round's bar, still unmet.
|
|
67
|
+
|
|
68
|
+
## Additional Regressions
|
|
69
|
+
|
|
70
|
+
- `ALT-10` (new): `onboard .` took 164.9s cold on this session versus a
|
|
71
|
+
consistent 681-780ms in every prior round on the same repository (roughly
|
|
72
|
+
240x). Not release-blocking on its own since it did deliver a full answer,
|
|
73
|
+
but unprecedented and worth profiling for a shared warm-up path with the
|
|
74
|
+
commands above.
|
|
75
|
+
- `ALT-11` (new), low: `watch .` returns `rc=124` at 15.2s with no heartbeat
|
|
76
|
+
or "watching..." confirmation line, so a caller cannot distinguish "still
|
|
77
|
+
starting" from "hung" without external knowledge of expected behavior.
|
|
78
|
+
- `pack gate --since HEAD~1` and `pack assessment .` now hang to their
|
|
79
|
+
external kill (200s / 300s) instead of failing fast with the legitimate
|
|
80
|
+
`INVALID_USAGE` / `INVALID_INPUT` errors they gave in 5.9.23 — both compose
|
|
81
|
+
the audit-family commands above and inherit `ALT-01`/`ALT-03`.
|
|
82
|
+
- `selftest .` fell from 9/12 pass (5.9.23) to 1/12 pass on the same 120s
|
|
83
|
+
deadline, same repository, same machine — the product's own regression
|
|
84
|
+
battery is itself a casualty of `ALT-03`.
|
|
85
|
+
- `impact-chain` `metadata.audit_time_ms` is always `0.0` while
|
|
86
|
+
`query_time_ms` varies normally; likely the same skipped security phase
|
|
87
|
+
publishing `0` instead of `null` for a phase that never ran.
|
|
88
|
+
- `prepare-context review-pr`'s `_truncation_summary` has a minor arithmetic
|
|
89
|
+
mismatch between `original_size_bytes - final_size_bytes` and the stated
|
|
90
|
+
budget accounting (low severity, unlike the `ALT-05` totals mismatch it
|
|
91
|
+
otherwise resembles).
|
|
92
|
+
|
|
93
|
+
## Preserved Evidence
|
|
94
|
+
|
|
95
|
+
- `ALT-04` (content-id clock exclusion) confirmed: `impact-chain` gave the
|
|
96
|
+
same hash across 3 repeated runs, versus 3 different hashes in 5.9.23.
|
|
97
|
+
- `ALT-05` (findings-population reconciliation) confirmed with exact
|
|
98
|
+
arithmetic: `population_total: 1526`, `excluded_before_cap: 933`, and
|
|
99
|
+
`1526 - 593 = 933 = by_rule.MIG-016`.
|
|
100
|
+
- `ALT-06` (false-complete `selftest`) partially confirmed: `complete` is
|
|
101
|
+
correctly `false` when rows fail, but `gaps` still collapses 10 named
|
|
102
|
+
failing rows into one generic entry instead of the itemized list the
|
|
103
|
+
payload's own `rows[]` already has (`ALT-06` should stay open for this
|
|
104
|
+
half).
|
|
105
|
+
- `ALT-08` (stdout budget disclosure) confirmed, functioning.
|
|
106
|
+
- Endpoint analysis remained exact (3,763), UTF-8 encoding is correct at the
|
|
107
|
+
byte level, and the lightweight CI paths `pr-risk`, `review-pr` and
|
|
108
|
+
`pr-impact` delivered full payloads every time.
|
|
109
|
+
|
|
110
|
+
These controls must remain in the regression battery while the P0 recovery
|
|
111
|
+
work proceeds; they do not compensate for an audit-family failure that grew
|
|
112
|
+
more erratic and spread to previously reliable commands.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# External Audit - 5.9.25
|
|
2
|
+
|
|
3
|
+
## Release Status
|
|
4
|
+
|
|
5
|
+
The 5.9.25 re-audit rates ASK Engine at **6.3/10**, down from 6.9. Precision,
|
|
6
|
+
recall and determinism hold steady; the empty-success defect first measured at
|
|
7
|
+
3/47 in 5.9.23 is now measured at 18.4% (9/49, byte-counted) and has spread
|
|
8
|
+
from two commands to three, including `spring-audit`, the command the tool's
|
|
9
|
+
own help recommends first. The release is **not recommended for unattended CI
|
|
10
|
+
gating**, with more urgency than the prior round.
|
|
11
|
+
|
|
12
|
+
## Priority Regressions
|
|
13
|
+
|
|
14
|
+
1. `NEW-01` P0 (escalated): `spring-audit --compact`, `risk` and Markdown
|
|
15
|
+
`audit-report` all now exit 0 with zero stdout/stderr, measured at 18.4%
|
|
16
|
+
(9/49) across four batches. The cleanest sample is two back-to-back,
|
|
17
|
+
identical `spring-audit thingsboard --compact` invocations: the first
|
|
18
|
+
returns 46,596 bytes in 69.7s, the second 0 bytes in 57.2s — this directly
|
|
19
|
+
refutes the earlier "only on abnormally fast runs" hypothesis. Hot path,
|
|
20
|
+
two-process contention, output format and repository size were all tested
|
|
21
|
+
and ruled out; three-or-more concurrent heavy ASK processes is an
|
|
22
|
+
unconfirmed correlation, not a cause.
|
|
23
|
+
2. `REG-02` Critical: the default `--agent` ceiling still rejects large
|
|
24
|
+
repositories by default, with a higher observed peak RSS than 5.9.23
|
|
25
|
+
(thingsboard 2,029.92 MB vs 1,552.45 MB; spring-boot 2,580.41 MB vs
|
|
26
|
+
2,523.87 MB). `ASK_MAX_RSS_MB=0` remains the only workaround.
|
|
27
|
+
3. `BUG-01` P0, unchanged: a Java file with a syntax error can still vanish
|
|
28
|
+
from the answer with no `parse_fail`/`parse_status` disclosure anywhere in
|
|
29
|
+
the payload or in `answer_bounds.gaps`.
|
|
30
|
+
4. `REG-03`, unchanged: warm `spring-audit` shows no reliable benefit over
|
|
31
|
+
cold in either time or reliability — the pair in item 1 above is itself the
|
|
32
|
+
sharpest evidence, since the "warm" run was both slower on wall clock in
|
|
33
|
+
proportion to work done and the one that came back empty.
|
|
34
|
+
5. `BUG-03` P1, unchanged: marginal Spring detection can still overstate zero-
|
|
35
|
+
finding coverage.
|
|
36
|
+
|
|
37
|
+
## Verified Improvements
|
|
38
|
+
|
|
39
|
+
- `REG-01` resolved: root `ask --help` no longer hangs in a nested-repository
|
|
40
|
+
workspace. Cost now scales sub-linearly with file count (49 files: 608ms;
|
|
41
|
+
4,772 files: 13.6s), against 82-86s trending toward 120s+ (`rc=124`) in
|
|
42
|
+
5.9.23 on the same shape of workspace. The original 31-repo/8,322-file
|
|
43
|
+
extreme case was not re-confirmed — the audit's own 110s harness cutoff
|
|
44
|
+
interrupted it before completion — so treat as resolved-on-the-measured-
|
|
45
|
+
range, not proven at the original extreme.
|
|
46
|
+
- `BUG-15` closed: no Rich markup leaks into non-TTY `--help` output (0
|
|
47
|
+
occurrences of `[bold]`/`[dim]`/`[bold green]`, down from 208 in 5.9.22 and
|
|
48
|
+
202 in 5.9.23).
|
|
49
|
+
- `BUG-21` closed, cleanly: `--jobs` now rejects out-of-range values with
|
|
50
|
+
`INVALID_USAGE` and a stated `1<=x<=128` bound, replacing silent acceptance.
|
|
51
|
+
|
|
52
|
+
## Verification Boundary
|
|
53
|
+
|
|
54
|
+
The audit covered 49 byte-counted invocations of the three empty-success-
|
|
55
|
+
suspect commands plus a 93-invocation surface sweep (`S-`, `PC-`, `V-`, `G-`
|
|
56
|
+
variants) that produced zero empties outside those three commands — the
|
|
57
|
+
defect is concentrated, not transversal. SEC-010 precision, `migrate-check
|
|
58
|
+
--compact` savings, universal path aliases, the `verify` gate state machine,
|
|
59
|
+
Java 21 handling and content-id determinism were re-confirmed unchanged from
|
|
60
|
+
5.9.23. `BUG-17` (`remediation-report` silently empty on an unexpected
|
|
61
|
+
positional argument, rather than the `INVALID_USAGE` it gave in 5.9.22/23) is
|
|
62
|
+
flagged as the same failure class as `NEW-01`, on a lower-traffic command.
|
|
@@ -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,57 +14,137 @@ 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 —
|
|
18
|
-
|
|
19
|
-
**
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
`
|
|
32
|
-
`
|
|
33
|
-
|
|
34
|
-
|
|
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.
|
|
35
53
|
|
|
36
54
|
| ID | Severity | Status | Evidence and required closure |
|
|
37
55
|
|---|---:|---|---|
|
|
38
|
-
| `ALT-01` | Critical maximum | **
|
|
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
|
+
|
|
72
|
+
## Current Synchronization — Alternative External Audit `5.9.25`, and External Audit `5.9.25` (2026-09-02)
|
|
73
|
+
|
|
74
|
+
**Release `5.9.26` closes eight rows from this round with verified evidence**
|
|
75
|
+
(`ALT-09`, `ALT-11`, `BUG-01`, `BUG-03`, `REG-02`'s disclosure half, `ALT-06`'s
|
|
76
|
+
itemization half, plus the `remediation-report` path-admission coverage gap
|
|
77
|
+
and the `ALT-01`/`ALT-03` forensic sidecar) — see each row below for the
|
|
78
|
+
commit-level detail, and `CHANGELOG.md` for the release note. It does **not**
|
|
79
|
+
close the release gate: `ALT-01`/`ALT-03` were investigated and instrumented,
|
|
80
|
+
not fixed, because the failure did not reproduce outside native Windows.
|
|
81
|
+
|
|
82
|
+
**Release gate unchanged and now more urgent: do not use 5.9.25 or 5.9.26 to
|
|
83
|
+
gate unattended CI through the audit-command family.** Two independent re-audits of
|
|
84
|
+
5.9.25 agree the empty-`exit 0` defect did not shrink. The multi-repository
|
|
85
|
+
audit measured it at 18.4% (9/49, byte-counted) and, for the first time, in
|
|
86
|
+
`spring-audit` itself — the command the tool's own help recommends first. The
|
|
87
|
+
native-Windows audit found the same failure has gone from a hang to something
|
|
88
|
+
**erratic**: the identical `migrate-apply .` invocation gave 8/8 empty answers
|
|
89
|
+
in one batch and 3/3 full answers minutes later with nothing else changed, and
|
|
90
|
+
the failure spread to `migrate-check` and `onboard`, both reliable in 5.9.23.
|
|
91
|
+
`ALT-01` is **reopened**: the commit cited as closing it does not hold under
|
|
92
|
+
native re-test — `risk . -o FILE` still returns `rc=0`, zero bytes, and no
|
|
93
|
+
file in 4/4 runs.
|
|
94
|
+
|
|
95
|
+
Three rows are genuinely closed with verified evidence this round: `ALT-04`
|
|
96
|
+
(content-id clock exclusion, 3/3 stable hashes), `ALT-05` (findings-population
|
|
97
|
+
reconciliation, exact arithmetic), and `REG-01` (root `ask --help` no longer
|
|
98
|
+
hangs — sub-linear cost curve up to 4,772 files; the original 31-repo extreme
|
|
99
|
+
case was not re-confirmed). `BUG-15` (Rich markup leak) and `BUG-21`
|
|
100
|
+
(`--jobs` range validation) also close cleanly.
|
|
101
|
+
|
|
102
|
+
Priority order is: `ALT-01` reopened silent success and unkept output
|
|
103
|
+
promises; `ALT-03` security/audit-phase bisection, now with an erratic rather
|
|
104
|
+
than hang-only signature; `ALT-09` (new) `cache clear` ignoring a piped `n`
|
|
105
|
+
answer; `REG-02` agent memory ceiling; `BUG-01` silent malformed-file
|
|
106
|
+
disappearance; then `ALT-07` remediate hang, `ALT-10`/`ALT-11` new latency and
|
|
107
|
+
ergonomics findings, and remaining CLI ergonomics. Full evidence:
|
|
108
|
+
[`AUDIT-2026-09-02-ALTERNATIVE-5.9.25.md`](AUDIT-2026-09-02-ALTERNATIVE-5.9.25.md)
|
|
109
|
+
and [`AUDIT-2026-09-02-EXTERNAL-5.9.25.md`](AUDIT-2026-09-02-EXTERNAL-5.9.25.md).
|
|
110
|
+
|
|
111
|
+
| ID | Severity | Status | Evidence and required closure |
|
|
112
|
+
|---|---:|---|---|
|
|
113
|
+
| `ALT-01` | Critical maximum | **reopened, contradicted by native re-test** | `risk . -o FILE` returned `rc=0`, 0 bytes, no file in 4/4 native runs. Source review of the guard (`_fail_on_missing_required_answer`, `_fail_on_unkept_output_promise`, armed for `risk`/`spring-audit`/`verify`/`audit-report`/`migrate-check`/`migrate-apply` via `REQUIRED_ANSWER_COMMANDS`) finds it correctly wired end to end on this platform; the field failure is not reproducible outside native Windows. Both guards now write a forensic sidecar (`empty_answer_diagnostics.record`, referenced as `diagnostics_path` in the error envelope) capturing phase/RSS/argv/pid at the exact moment either fires, so the next occurrence carries evidence instead of a report written from memory. This does not close the row — it makes the next native reproduction diagnosable. |
|
|
39
114
|
| `ALT-02` | Critical maximum | **fixed, bounded-phase follow-up** | `aab1e8b` propagates deadline checks into security posture and publishes omitted stages and partial coverage. A small-repository budget can still finish its coarse earlier phases before the deadline is observed; `ALT-03` owns reducing that phase granularity. |
|
|
40
|
-
| `ALT-03` | High | **open, investigation** |
|
|
41
|
-
| `ALT-04` | High | **fixed** | `36e3893` excludes every nested `*_time_ms` execution clock from `content_id
|
|
42
|
-
| `ALT-05` | High | **fixed** | `b12c8f1` publishes `population_total` and `excluded_before_cap` beside the compact findings cap
|
|
43
|
-
| `ALT-06` | High | **fixed** | `
|
|
115
|
+
| `ALT-03` | High | **open, investigation, sharper signature** | Failures are now mostly near-instant (1-2s) empty success rather than multi-minute hangs on the same commands — consistent with a phase being *skipped*, not *stuck*. The audit could not isolate a trigger below three concurrent heavy ASK processes. Bisect the known working small subtree against the 3,342-file root; do not assert causality before reproducing it. The `ALT-01` diagnostic sidecar now records the last known phase and peak RSS at the moment of every occurrence, closing the evidence gap the audits both named. |
|
|
116
|
+
| `ALT-04` | High | **fixed, confirmed** | `36e3893` excludes every nested `*_time_ms` execution clock from `content_id`. Re-confirmed: `impact-chain` gave the same hash across 3 repeated native runs (was 3 different hashes in 5.9.23). |
|
|
117
|
+
| `ALT-05` | High | **fixed, confirmed** | `b12c8f1` publishes `population_total` and `excluded_before_cap` beside the compact findings cap. Re-confirmed with exact arithmetic: `1526 - 593 = 933 = by_rule.MIG-016`. |
|
|
118
|
+
| `ALT-06` | High | **fixed** | `complete` is correctly `false` when rows fail. The itemization half is also closed: `answer_bounds._summarise` picked a dict's `id` before its `reason`/`what`, so `selftest`'s per-category `limitations` entries rendered as the bare slug (`selftest_rows_failed`) with the actual failing row IDs dropped even though `reason` and the new `rows` field named them. `_summarise` now prefers the descriptive text; no other producer in this codebase pairs `id` with `what`/`reason` on the same dict, so nothing else changes. |
|
|
44
119
|
| `ALT-07` | Medium | **open** | `remediate` regressed from a 23.6-second answer to hangs beyond 400 seconds in `auditing for repairable findings`; it shares the `ALT-03` investigation until separated by evidence. |
|
|
45
|
-
| `ALT-08` | Medium | **fixed** | `15d77d2` publishes the effective per-task stdout budget and the full-artifact path;
|
|
46
|
-
| `
|
|
47
|
-
| `
|
|
48
|
-
| `
|
|
49
|
-
| `
|
|
50
|
-
| `REG-
|
|
51
|
-
| `
|
|
52
|
-
| `
|
|
120
|
+
| `ALT-08` | Medium | **fixed, confirmed** | `15d77d2` publishes the effective per-task stdout budget and the full-artifact path; confirmed functioning, with a minor arithmetic mismatch in `prepare-context review-pr`'s `_truncation_summary` noted as low-severity follow-up. |
|
|
121
|
+
| `ALT-09` | Critical | **open, new** | `ask cache clear .` deletes cache entries even when piped stdin answers `n`; only true EOF (`< /dev/null`) correctly refuses. The non-interactivity detector appears to treat "stdin has bytes" as "proceed" instead of reading and comparing them against `y`/`yes`. Low blast radius today (cache is rebuildable); fix the detection to use `isatty()` plus an actual answer comparison before any future destructive command reuses the same pattern. |
|
|
122
|
+
| `ALT-10` | Medium | **open, new** | `onboard .` took 164.9s cold in one native session versus a consistent 681-780ms in every prior round on the same repository (~240x). Delivered a full answer, so not release-blocking alone; profile for a shared warm-up path with the `ALT-01`/`ALT-03` commands. |
|
|
123
|
+
| `ALT-11` | Low | **fixed** | `watch` now emits a `{"tick": 0, "status": "watching", "elapsed_ms": …}` NDJSON line on stdout immediately after the index warms and before the tick loop begins — the channel `watch` already promises a consumer is reading, unlike stderr, whose silence on a non-TTY stream is a deliberate, tested invariant elsewhere in the CLI. Written to `--output` too. |
|
|
124
|
+
| `NEW-01` | Critical maximum | **escalated** | Now measured at 18.4% (9/49, byte-counted) and reaches `spring-audit --compact` in addition to `risk` and Markdown `audit-report`. Two identical back-to-back `spring-audit thingsboard --compact` runs (46,596 bytes/69.7s, then 0 bytes/57.2s) refute the earlier "only on abnormally fast runs" hypothesis. `BUG-17` (`remediation-report` silently empty on an unexpected positional, rather than `INVALID_USAGE`) does not reproduce as described here: the command returns its normal, non-empty bundled-ledger report regardless of the path given, by design (`del path` — "the bundled ledger is used"), so it is not the same failure class as `NEW-01`. What is real and now fixed is narrower: `path_admission`'s own coverage battery had a gap for exactly this command — `remediation-report`'s `path` parameter matched the battery's repo-path discovery heuristic with no invocation row, a pre-existing red independent of this audit. Closed by documenting the exclusion inline (`PATH_NOT_READ_BY_DESIGN` in `tests/test_path_admission.py`), the same "opt-out is a decision, not an omission" convention `cli.py` already uses for `--copy`/`Progress`. |
|
|
125
|
+
| `REG-02` | Critical | **partially fixed: disclosure half closed, enforcement-timing half open** | Reproduced and fixed the specific gap named in both audits: a successful `--agent` run published `_meta.memory.configured_max_rss_mb: null` even though `_root_memory_seam` was actively enforcing the 1,536 MB default at every phase boundary for that same run. `disclosure()` now takes the same `default_ceiling_mb` `exceeded()` already did, and the root command threads whether `--agent` is active through a per-invocation flag (`_AGENT_MODE_ACTIVE`) so a successful run says what protected it. The still-open half — the ceiling rejecting large repositories only after minutes of work, and a higher observed peak than 5.9.23 (2,029.92 MB vs 1,552.45 MB) — needs periodic RSS sampling with early abort inside the expensive phases themselves (`BUG-22`'s row), which cannot be validated without the field's own large repository. |
|
|
126
|
+
| `REG-03` | High | **open, regression, unchanged** | Warm `spring-audit` still shows no reliable time or reliability benefit over cold; the `NEW-01` back-to-back pair is itself the sharpest evidence, since the "warm" run was proportionally slower and the one that came back empty. |
|
|
127
|
+
| `REG-01` | High | **closed, resolved on measured range** | Root `ask --help` no longer hangs in a nested-repository workspace: cost now scales sub-linearly (49 files: 608ms; 4,772 files: 13.6s), against 82-86s trending to 120s+/`rc=124` in 5.9.23. The original 31-repo/8,322-file extreme case was not re-confirmed — the audit's own 110s harness cutoff interrupted it. Re-run that specific extreme case before treating the ceiling as proven. |
|
|
128
|
+
| `REG-04` | Medium | **closed 5.9.24, reconfirmed** | `_meta.answer_bounds.capped` aggregation re-verified in `migrate-check --compact`: all 5 nested cap contracts listed, 268 omitted values disclosed. |
|
|
129
|
+
| `NEW-02` | High | **open, unchanged** | Overloaded endpoint handlers can all inherit the final overload's `declaration_line`; the `anchor_ambiguity`/`overload_count` fields expected from this row are still absent from the payload. Resolve by mapping annotation/signature or publish ambiguity. |
|
|
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. |
|
|
53
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. |
|
|
54
132
|
| `BUG-12` | Critical maximum | **open, P0** | Deep `--agent` output construction reaches multi-gigabyte RSS before a small answer. Bound projection while building. |
|
|
55
|
-
| `BUG-03` | High | **
|
|
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. |
|
|
56
134
|
| `BUG-04` | High | **open, P1** | `selftest` publishes `complete=true` with five error rows. Derive bounds from actual results. |
|
|
57
135
|
| `BUG-05` | High | **open, P1** | Overloaded endpoint handlers can receive the wrong declaration line. Resolve by mapping annotation or publish ambiguity. |
|
|
58
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. |
|
|
59
|
-
| `BUG-10` | High | **open, P1** | Unsupported routing styles can produce empty coverage gaps. Publish detected-but-unmodeled routing gaps. |
|
|
60
|
-
| `BUG-11` | High | **open, P1** | Default `pack assessment`
|
|
61
|
-
| `BUG-13` | High | **open, P1** | Unscoped `selftest` starts over nested repositories after warning. Refuse and require an explicit path. |
|
|
62
|
-
| `BUG-
|
|
137
|
+
| `BUG-10` | High | **open, P1, unchanged** | Unsupported routing styles can produce empty coverage gaps. Publish detected-but-unmodeled routing gaps. |
|
|
138
|
+
| `BUG-11` | High | **open, P1, now hangs instead of failing fast** | Default `pack assessment` and `pack gate --since` now hang to their external kill (300s/200s) instead of the legitimate `INVALID_INPUT`/`INVALID_USAGE` they gave in 5.9.23 — both compose the audit-family commands affected by `ALT-01`/`ALT-03` and inherit the failure. |
|
|
139
|
+
| `BUG-13` | High | **open, P1, unchanged** | Unscoped `selftest` starts over nested repositories after warning. Refuse and require an explicit path. |
|
|
140
|
+
| `BUG-15` | Low | **closed 5.9.25** | Non-TTY `ask --help` no longer emits Rich markup: 0 occurrences of `[bold]`/`[dim]`/`[bold green]`, down from 208 (5.9.22) and 202 (5.9.23). |
|
|
141
|
+
| `BUG-16` | High | **open, P1, unchanged** | Context-cache growth has no published budget or eviction contract; ~1.7 GB was measured (was ~1.6 GB in 5.9.23). |
|
|
142
|
+
| `BUG-21` | Low | **closed 5.9.25** | `--jobs` now rejects out-of-range values with `INVALID_USAGE` stating the `1<=x<=128` bound, replacing silent acceptance. |
|
|
63
143
|
| `BUG-22` | High | **open, P1** | RSS ceilings are checked post-hoc. Add periodic sampling and orderly abort. |
|
|
64
144
|
|
|
65
|
-
The remaining `BUG-04b`, `BUG-06`, `BUG-08`, `BUG-09`, `BUG-
|
|
66
|
-
`BUG-
|
|
67
|
-
|
|
145
|
+
The remaining `BUG-04b`, `BUG-06`, `BUG-08`, `BUG-09`, `BUG-19`, `BUG-20` and
|
|
146
|
+
`BUG-23` findings are open P2/coverage follow-ups in the audit document. None
|
|
147
|
+
is closed by documentation alone.
|
|
68
148
|
|
|
69
149
|
## Current Synchronization — External Audit `AUD-621`
|
|
70
150
|
|