sourcecode 5.9.27__tar.gz → 5.9.29__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.27 → sourcecode-5.9.29}/CHANGELOG.md +153 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/PKG-INFO +3 -3
- {sourcecode-5.9.27 → sourcecode-5.9.29}/README.md +2 -2
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-09-01-EXTERNAL-5.9.22.md +2 -2
- sourcecode-5.9.29/docs/AUDIT-2026-09-02-ALTERNATIVE-5.9.27.md +102 -0
- sourcecode-5.9.29/docs/AUDIT-2026-09-02-ALTERNATIVE-5.9.28.md +174 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/DEFECT-LEDGER.md +223 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/DEVELOPMENT-ROADMAP.md +128 -6
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/EXECUTIVE-ROADMAP.md +104 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/USER_GUIDE.md +1 -1
- {sourcecode-5.9.27 → sourcecode-5.9.29}/pyproject.toml +1 -1
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/audit_recipe.py +6 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/cache.py +81 -4
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/cli.py +238 -8
- sourcecode-5.9.29/src/sourcecode/concurrency.py +295 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/context_cache.py +43 -2
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/degradation.py +15 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/dependency_analyzer.py +25 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/empty_answer_diagnostics.py +11 -0
- sourcecode-5.9.29/src/sourcecode/inflight.py +287 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/manifest_cache.py +11 -9
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/output_budget.py +49 -10
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/parallel.py +35 -2
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/progress.py +34 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/repository_ir.py +149 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/resource_budget.py +106 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/risk.py +99 -19
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/rule_pass.py +18 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_findings.py +8 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_impact.py +17 -3
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_security_audit.py +15 -2
- {sourcecode-5.9.27 → sourcecode-5.9.29}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/.github/workflows/windows-battery.yml +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/.github/workflows/windows-regression.yml +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/.gitignore +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/.ruff.toml +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/CLAUDE.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/CODE_OF_CONDUCT.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/CONTRIBUTING.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/LICENSE +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/NOTICE +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/SECURITY.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-28-EXTERNAL-5.9.10.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.16.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.17.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-31-REMEDIATION-5.9.18.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-09-01-ALTERNATIVE-5.9.23.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-09-01-EXTERNAL-5.9.23.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-09-02-ALTERNATIVE-5.9.25.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-09-02-EXTERNAL-5.9.25.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-09-02-EXTERNAL-5.9.26.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/CACHE.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/MANUAL-USUARIO.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/PRODUCT-ROUTE.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/RD-JVM-ASK-TRIAGE-2026-08-31.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/RELEASE-VERIFICATION.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-assessment-report.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-pack-manifest.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/overview.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/contracts.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/licensing-schema.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/migrate-check.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/pack-gate-github-actions.yml +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/pack-gate-gitlab.yml +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/README.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/5.9.22/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/5.9.22/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/corpus-testing-2026-08-22.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/posture.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/privacy.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/schema.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/hatch_build.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/context_cost_harness.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/perf_gate.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/perf_harness.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/test_fast.sh +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/windows_reliability_matrix.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/__main__.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/access_drift.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/analysis_budget.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/answer_bounds.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/audit_clusters.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/audit_report.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/audit_since.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/audit_verify.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/baseline_attestation.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/breaking_changes.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/build_modules.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/build_stamp.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/c4_render.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/cache_model.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/cache_observation.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/ci_output.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/classifier.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/click_runtime.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/context_graph.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/cve_feed.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/cve_reachability.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/defect_classes/__init__.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/defect_classes/registry.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/empty_reach.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/endpoint_disposition.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/explain_endpoint.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/field_deprecations.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/findings_baseline.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/functional_routes.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/github_diff.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/intent_router.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/jvm_inventory.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/license.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/migrate_check.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/migration_apply.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/output_bounds.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/output_ceiling.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/output_sink.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/pack_manifest.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/packs.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/parse_cache.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/path_display.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/phased_run.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/posture.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/pr_risk.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/product_info.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/regress.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/regulatory_pack.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/release_info.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/remediation_diff.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/remediation_flow.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/remediation_report.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/risk_model.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/sarif_emit.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schema_producers.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schema_registry.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/selection_contract.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/self_audit.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/selftest.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/timeline_cache.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/vex.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/watch_loop.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/wired_surface.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/supabase/functions/README.md +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.9.27 → sourcecode-5.9.29}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -1,5 +1,158 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.9.29] — 2026-09-02
|
|
4
|
+
|
|
5
|
+
*The 5.9.28 field round's two P0s and its P1, plus the suite's first green run
|
|
6
|
+
in several releases. Where 5.9.28 answered a question about the worker pool,
|
|
7
|
+
this release answers the one about where a run stops when it stops.*
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **An in-flight marker for runs that never finish (`R-01-INFLIGHT`).** The
|
|
12
|
+
field measured four `spring-audit` hangs and could say nothing about any of
|
|
13
|
+
them: every diagnostic this product had — the envelope, the forensic sidecar
|
|
14
|
+
— lives on a path a hung run never reaches. A marker is now written when a
|
|
15
|
+
hang-prone command starts, rewritten at each phase and stage change the
|
|
16
|
+
heartbeat already reports, and deleted on the way out. A run killed
|
|
17
|
+
externally leaves `inflight/<pid>.json` naming its argv, its start time, the
|
|
18
|
+
phase and the stage it stopped in. Abandoned markers are published by a
|
|
19
|
+
later run in `_meta.incomplete_runs`, because the run that stops cannot
|
|
20
|
+
report anything itself; each row states whether it is a measurement (the
|
|
21
|
+
process is gone) or an inference (no refresh, on a platform that cannot
|
|
22
|
+
probe liveness safely). Covers the audit family plus `onboard` and
|
|
23
|
+
`remediate`, the two commands the field reports hanging outside it.
|
|
24
|
+
`ASK_NO_INFLIGHT_MARKER=1` disables it.
|
|
25
|
+
- **`timings.rule_families`** — wall time per rule family, highest first, with
|
|
26
|
+
a basis stating that it ranks cost and not complexity. The phase split could
|
|
27
|
+
say `security_rules: 12,617 ms` and never which of six families spent it.
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- **The most expensive rule family is between 3 and 24 times faster, with a
|
|
32
|
+
byte-identical answer (P1).** `SEC-010` was 85 % of the rule phase and 35 %
|
|
33
|
+
of a whole audit; profiling found the walk under it re-reading every
|
|
34
|
+
remaining source, from disk, once per callee name it resolved — 96,399 reads
|
|
35
|
+
for 28 lookups. It indexes declarable names in the pass that already reads
|
|
36
|
+
each file once. Measured warm: `SEC-010` 10,830 → 3,246 ms on a 3,860-file
|
|
37
|
+
repository (audit 15.5 → 12.2 s) and 64,391 → 2,628 ms on an 878-file one
|
|
38
|
+
(audit 71.1 → 8.4 s), unchanged where a repository has no HTTP-input seeds.
|
|
39
|
+
`content_id` identical on all three.
|
|
40
|
+
- **That family reports while it runs, and a deadline can stop it inside.** It
|
|
41
|
+
owned the longest stretch of an audit and left one heartbeat line unchanged
|
|
42
|
+
for the whole of it, which from outside is what the field calls a hang. A
|
|
43
|
+
budget cut returns what it measured instead of surfacing as an analysis
|
|
44
|
+
error.
|
|
45
|
+
- **`manifest_cache` keyed its entries on a list that omitted every
|
|
46
|
+
lockfile.** Two repositories with identical manifests and different resolved
|
|
47
|
+
dependencies hashed the same, and the second was served the first's answer.
|
|
48
|
+
The key now reads the analyzer's own `INPUT_FILENAMES`, and a battery reads
|
|
49
|
+
that module's source and fails if it opens a file the set does not name.
|
|
50
|
+
- **`SpringAuditResult.merge()` dropped `spring_footprint`**, which switched
|
|
51
|
+
BUG-03's marginal-detection disclosure back off on every `--scope all` run —
|
|
52
|
+
the default.
|
|
53
|
+
- Machine-census leases are refreshed while a run is alive, so a killed run no
|
|
54
|
+
longer makes every later run on that machine halve its worker pool for an
|
|
55
|
+
hour; the lease directory is capped.
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
|
|
59
|
+
- The suite is green: 13,748 tests, 0 failures. It had carried twenty-one
|
|
60
|
+
standing reds for several releases, which is how a real regression becomes
|
|
61
|
+
indistinguishable from the background. Two were the product defects above;
|
|
62
|
+
the rest were assertions that had fallen behind the code they pin, each
|
|
63
|
+
fixed or opted out with the reason stated.
|
|
64
|
+
|
|
65
|
+
### Known Limitations
|
|
66
|
+
|
|
67
|
+
- `ALT-01`/`ALT-03` remain open. The bisection the field asked for ran over two
|
|
68
|
+
corpora — 250 to 4,772 files on one, 9,195 on another — and found no size at
|
|
69
|
+
which `spring-audit` stops answering: 5.8 s to 39.6 s, sublinear, `rc=0`
|
|
70
|
+
throughout. File count alone is exonerated on this platform at up to 2.75x
|
|
71
|
+
the field repository's size. This release makes the stretch the failing runs
|
|
72
|
+
sat in several times shorter and, for the first time, visible while it
|
|
73
|
+
happens; it does not claim to have fixed the hang.
|
|
74
|
+
- The next field round should send `inflight/` and `entry-trace.jsonl`
|
|
75
|
+
together after a hang. A marker still stuck in `SEC-010` says the family is
|
|
76
|
+
not the cause; a marker in another stage moves the search there; no marker
|
|
77
|
+
at all keeps it upstream of `main_entry`.
|
|
78
|
+
- `BUG-02` and `BUG-12` still need the field's own large repository.
|
|
79
|
+
|
|
80
|
+
## [5.9.28] — 2026-09-02
|
|
81
|
+
|
|
82
|
+
*Remediation batch on the 5.9.27 audit queue: nine rows, one commit each. The
|
|
83
|
+
round's own P0 — "does the shared worker pool tolerate concurrent `ask`
|
|
84
|
+
processes on one machine, or assume exclusive use?" — is answered here in
|
|
85
|
+
source, and the answer was exclusive use.*
|
|
86
|
+
|
|
87
|
+
### Fixed
|
|
88
|
+
|
|
89
|
+
- **Concurrent invocations no longer size their worker pools as if each owned
|
|
90
|
+
the machine (`R-01`).** `parallel.default_jobs()` returned `cpu_count() - 1`
|
|
91
|
+
per process, so `k` concurrent runs started `k x (N-1)` parsing workers on
|
|
92
|
+
`N` cores and nothing in any payload said the machine had been shared. A
|
|
93
|
+
best-effort census of live invocations now divides that budget, and
|
|
94
|
+
`_meta.concurrency` publishes peers at start, whether the budget was shared,
|
|
95
|
+
and that a shared run is not an isolated-machine measurement. `cache._gc`
|
|
96
|
+
defers eviction while a peer is live, so a sweep cannot delete the working
|
|
97
|
+
set a concurrent run is reading. `ASK_NO_CONCURRENCY_CENSUS=1` restores the
|
|
98
|
+
previous behaviour.
|
|
99
|
+
- **The RSS ceiling stops a run where it is crossed (`BUG-22`, `REG-02`'s
|
|
100
|
+
enforcement half).** The check ran at phase boundaries only, so a phase
|
|
101
|
+
could allocate without bound and be refused after it finished — the field's
|
|
102
|
+
2,029.92 MB peak under a 1,536 MB ceiling that was genuinely in force. The
|
|
103
|
+
ceiling is now sampled inside the parse loop (throttled to one footprint
|
|
104
|
+
sample per 0.5 s) and raises a typed refusal rendered as the same
|
|
105
|
+
`MEMORY_TOO_LARGE` envelope, instead of `EXECUTION_FAILED`.
|
|
106
|
+
- **A routing style this model does not read is published rather than reported
|
|
107
|
+
as an absent surface (`BUG-10`).** `unmodeled_routing_evidence` names the
|
|
108
|
+
files declaring an annotation whose argument is a path-like string literal
|
|
109
|
+
that produced no endpoint — a rule that names no framework. Measured:
|
|
110
|
+
`struts` reports 4 files under `@Action`/`@Namespace` where the answer used
|
|
111
|
+
to say nothing was found.
|
|
112
|
+
- **Overloaded handlers publish their ambiguity (`NEW-02`/`BUG-05`).** The
|
|
113
|
+
symbol index is keyed `Class#method` without parameter types, so every
|
|
114
|
+
overload collapsed onto the last declaration scanned. Entries now carry
|
|
115
|
+
`overload_count`, `anchor_ambiguity` and `anchor_candidate_lines`; an
|
|
116
|
+
unambiguous anchor carries none of it.
|
|
117
|
+
- **`selftest` refuses an unscoped run over nested repositories (`BUG-13`).**
|
|
118
|
+
It warned and then ran the ledger against the whole workspace. The implicit
|
|
119
|
+
`.` now refuses with `INVALID_USAGE` before any row runs; `--allow-nested`
|
|
120
|
+
is there for a caller who means it.
|
|
121
|
+
- **Every cache store publishes what evicts it (`BUG-16`).** The context
|
|
122
|
+
cache's 30-day TTL and 256-entry cap lived inside `_gc`, so ~1.7 GB of
|
|
123
|
+
growth had no readable contract. `cache status` now prints each store's
|
|
124
|
+
eviction contract, read from the same authority the sweep uses.
|
|
125
|
+
- **`_truncation_summary` accounts for its own bytes (`ALT-08`).**
|
|
126
|
+
`final_size_bytes` was measured before the summary and note were attached;
|
|
127
|
+
it is now measured over the assembled payload, with `content_size_bytes`
|
|
128
|
+
keeping the trimmed-content figure under a name that says which it is.
|
|
129
|
+
- **`impact-chain` publishes a null audit share when no audit ran
|
|
130
|
+
(`ALT-25`).** `metadata.audit_time_ms` was always ~0.0 on the default path —
|
|
131
|
+
the elapsed time of *not* running an opt-in repository-wide audit, under a
|
|
132
|
+
name readers compare against `query_time_ms`.
|
|
133
|
+
- **`retrieve security-surface --target` says why it has no anchor.** Four
|
|
134
|
+
rounds were answered "No such option: --target". The refusal now states that
|
|
135
|
+
the intent is repository-wide and names `security-chain --target`, derived
|
|
136
|
+
from `intent_router.ANCHOR_KINDS`.
|
|
137
|
+
|
|
138
|
+
### Known Limitations
|
|
139
|
+
|
|
140
|
+
- `ALT-01`/`ALT-03` remain open. This release removes the contention mechanism
|
|
141
|
+
the 5.9.27 round evidenced; it does not explain the one hang observed with
|
|
142
|
+
nothing else running. The next field round should re-measure with
|
|
143
|
+
`_meta.concurrency` attached — `peer_invocations_at_start: 0` beside a
|
|
144
|
+
failure separates contention from whatever remains.
|
|
145
|
+
- `BUG-02` (`rc=127` with no output) and `BUG-12` (multi-gigabyte RSS while
|
|
146
|
+
building a small answer) still need the field's own large repository.
|
|
147
|
+
`BUG-22`'s in-phase sampler bounds the second one's damage without closing
|
|
148
|
+
it.
|
|
149
|
+
- `ask --help` measures 0.41-0.44 s on the engineering host against
|
|
150
|
+
14.4-14.7 s in the field under confirmed contention. Not a refutation — a
|
|
151
|
+
different machine — and a reason to re-measure before profiling it as a
|
|
152
|
+
standalone defect.
|
|
153
|
+
- The release gate is unchanged: do not use the audit-command family to gate
|
|
154
|
+
unattended CI until the field re-measures.
|
|
155
|
+
|
|
3
156
|
## [5.9.27] — 2026-09-02
|
|
4
157
|
|
|
5
158
|
*Follow-up from the 5.9.26 re-audit — a sharper instrumentation lead and a
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 5.9.
|
|
3
|
+
Version: 5.9.29
|
|
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.29 — 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.29 — and, on a build that has aged,
|
|
245
245
|
# how many releases have probably shipped since
|
|
246
246
|
```
|
|
247
247
|
|
|
@@ -12,7 +12,7 @@ a regression assertion exist.
|
|
|
12
12
|
|
|
13
13
|
## Executive Result
|
|
14
14
|
|
|
15
|
-
The audit rates ASK Engine **6.6/10** on the large
|
|
15
|
+
The audit rates ASK Engine **6.6/10** on the large native-Windows corpus and **7.5/10** on
|
|
16
16
|
the smaller nine-axis assessment. The measurements agree on the main risk:
|
|
17
17
|
source analysis is accurate and unusually explicit about uncertainty, but large
|
|
18
18
|
repository execution and several output contracts are not yet reliable enough
|
|
@@ -52,7 +52,7 @@ SQL-injection recall, memory, and inconsistent CLI contracts.
|
|
|
52
52
|
## Performance Evidence
|
|
53
53
|
|
|
54
54
|
The audit measured `--agent` on ThingsBoard at **182.6 s / 2,088 MB RSS** and
|
|
55
|
-
`spring-audit` at **164.2 s cold**. On the larger
|
|
55
|
+
`spring-audit` at **164.2 s cold**. On the larger native-Windows corpus it reports
|
|
56
56
|
`ask . --agent` at **447 s**, `contract-diff` at **329 s**, `delta` at **187 s**,
|
|
57
57
|
and `validation --compact` at **91 s**. Warm root compact analysis can be below
|
|
58
58
|
one second; these are cold/deep-path costs.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Alternative External Audit - 5.9.27
|
|
2
|
+
|
|
3
|
+
## Scope And Verdict
|
|
4
|
+
|
|
5
|
+
Native-Windows re-audit on the same audited repository (3,342 Java files) used
|
|
6
|
+
in every prior round. Score **4.6/10**, the first uptick in four rounds (5.9.22
|
|
7
|
+
6.6, 5.9.23 4.9, 5.9.25 4.3, 5.9.26 3.8). The uptick carries a large
|
|
8
|
+
qualification discovered mid-session: this audit's own machine was shared
|
|
9
|
+
with a second, independent automated process, and that materially changes
|
|
10
|
+
how the four-round erratic-failure pattern should be read.
|
|
11
|
+
|
|
12
|
+
## Priority Finding — Confirmed Shared-Machine Contention
|
|
13
|
+
|
|
14
|
+
The auditor found the shared `entry-trace.jsonl` diagnostic file (added in
|
|
15
|
+
5.9.27 to answer whether audit-family commands reach `main_entry`) growing
|
|
16
|
+
with invocations they never launched, against five OSS reference
|
|
17
|
+
repositories (`thingsboard`, `mall`, `struts`, `spring-petclinic`,
|
|
18
|
+
`jhipster-sample-app`) under the same `timeout N ask ...` harness pattern the
|
|
19
|
+
auditor uses. `Get-CimInstance Win32_Process` confirmed a live process under
|
|
20
|
+
the same Windows user actively running `ask.exe risk mall --limit 20` at the
|
|
21
|
+
time of inspection — not background noise, a second real test harness on the
|
|
22
|
+
same machine, same user, same shared `~/.sourcecode` cache and diagnostics
|
|
23
|
+
directory. Two of the auditor's own `spring-audit . --compact` hangs
|
|
24
|
+
overlapped a 525-second window in which 34 foreign invocations were traced.
|
|
25
|
+
|
|
26
|
+
This reframes, but does not resolve, the standing question. If ASK's shared
|
|
27
|
+
worker pool and cache do not isolate concurrent `ask` processes on one
|
|
28
|
+
machine, contention could produce exactly the observed pattern — the same
|
|
29
|
+
command sometimes hanging, sometimes returning empty near-instantly, with no
|
|
30
|
+
per-process variable distinguishing the two. It does not explain everything
|
|
31
|
+
(one hang occurred right after the trace went quiet for 20 seconds with
|
|
32
|
+
nothing else running), so contention is documented as a real, evidenced
|
|
33
|
+
contributing factor, not a proven sole cause.
|
|
34
|
+
|
|
35
|
+
## Integrity Note
|
|
36
|
+
|
|
37
|
+
This round's ledger entry for 5.9.26 described a two-pass, self-contradictory
|
|
38
|
+
session ("an initial 129-invocation pass ... 0/23 ... 7.4/10, then a second
|
|
39
|
+
pass ... 0/35 ... 3.8/10"). This auditor states plainly that the first pass
|
|
40
|
+
and its 7.4/10 score do not correspond to anything they ran or reported. Given
|
|
41
|
+
the newly confirmed shared-machine contention, the likely explanation is that
|
|
42
|
+
5.9.26's report mixed observations from two concurrent, independent audit
|
|
43
|
+
sessions on the same machine (the native-Windows lineage and a
|
|
44
|
+
multi-repository "testing/" corpus lineage matching the five OSS repos found
|
|
45
|
+
in the trace this round) rather than one evaluator's two passes. Recorded as
|
|
46
|
+
an open provenance question, not resolved either way — see
|
|
47
|
+
[`DEFECT-LEDGER.md`](DEFECT-LEDGER.md) for how this changes the 5.9.26 record.
|
|
48
|
+
|
|
49
|
+
## Priority Regressions
|
|
50
|
+
|
|
51
|
+
None newly introduced. The audit-command family remains the standing issue:
|
|
52
|
+
`spring-audit`, `verify`, `risk`, `audit-report` stayed at 0 successful
|
|
53
|
+
answers in this session's isolated (non-overlapping) invocations;
|
|
54
|
+
`migrate-check` and `migrate-apply` each answered once, both immediately
|
|
55
|
+
after the foreign trace activity appeared to quiet down — noted as a
|
|
56
|
+
correlation worth cross-referencing against `entry-trace.jsonl`, not asserted
|
|
57
|
+
as causal.
|
|
58
|
+
|
|
59
|
+
## Verified Improvements
|
|
60
|
+
|
|
61
|
+
- **The entry-point trace (5.9.27's response to last round's `R-01`) works as
|
|
62
|
+
designed**: the auditor's own invocations — `verify .`, `migrate-apply .`,
|
|
63
|
+
`risk . --limit 20`, `audit-report . --format markdown`, `risk . -o
|
|
64
|
+
promise.json` — now appear in `entry-trace.jsonl` even when they return
|
|
65
|
+
empty or hang. This confirms `main_entry` is reached on the failing runs,
|
|
66
|
+
closing the question the previous round's diagnostic gap left open. The
|
|
67
|
+
`empty_answer_diagnostics.record()` sidecar still never fires on any
|
|
68
|
+
observed failure, which narrows the search specifically to somewhere
|
|
69
|
+
between `main_entry` and the output-promise guard — a materially smaller
|
|
70
|
+
surface than "somewhere in the process" three rounds ago.
|
|
71
|
+
- `selftest`'s itemized gaps (last round's fix) confirmed: `"10 ledger row(s)
|
|
72
|
+
could not run: ASK-16, B6, E-37, ..."` replaces the prior generic slug.
|
|
73
|
+
- `ALT-09` (piped refusal on `cache clear`) reconfirmed a third consecutive
|
|
74
|
+
session.
|
|
75
|
+
- `BUG-15`/`BUG-21` (markup leak, `--jobs` range) reconfirmed.
|
|
76
|
+
- `migrate-check`/`migrate-apply` produced complete, reasonably sized
|
|
77
|
+
payloads (37.5 KB/41s and 9.5 KB/46s) on the runs that did answer.
|
|
78
|
+
|
|
79
|
+
## Open, Unchanged
|
|
80
|
+
|
|
81
|
+
- `onboard .` remains the single most erratic measurement across rounds:
|
|
82
|
+
904ms to a full 200-second external kill within the same session, same
|
|
83
|
+
invocation, same tree, no changes between runs.
|
|
84
|
+
- `ask --help` measured 14.4-14.7s this session, worse than the 3-4s the
|
|
85
|
+
5.9.26 ledger entry flagged as worth its own row "if it persists" — it has
|
|
86
|
+
persisted across two rounds now. May share `R-01`'s contention signature;
|
|
87
|
+
not verified in isolation this session.
|
|
88
|
+
- `watch`'s ~55s index-warm-before-first-tick is unchanged and correctly
|
|
89
|
+
understood as real cost, not a defect, per the prior round's correction.
|
|
90
|
+
- `retrieve security-surface --target` still rejects `--target` as an unknown
|
|
91
|
+
option, unchanged across four rounds.
|
|
92
|
+
|
|
93
|
+
## Verification Boundary
|
|
94
|
+
|
|
95
|
+
Session ran on a machine independently confirmed to be shared with a second,
|
|
96
|
+
concurrent `ask` test harness during at least part of the observation window.
|
|
97
|
+
Reliability figures in this round should be read as measured under
|
|
98
|
+
uncontrolled, real contention, not as an isolated single-process baseline.
|
|
99
|
+
The auditor's own recommendation: repeat `spring-audit . --compact` x3 on
|
|
100
|
+
both a reference repo and the audited repository in the same clean window, nothing else
|
|
101
|
+
running, to separate "the repository" from "the shared machine" as the
|
|
102
|
+
variable.
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# Alternative External Audit - 5.9.28
|
|
2
|
+
|
|
3
|
+
*The audited repository is referred to neutrally throughout (3,342 Java files,
|
|
4
|
+
`repo_id 7fced5c877cacfc5`, dirty working tree) — it is the same subject as
|
|
5
|
+
every prior round in this lineage.*
|
|
6
|
+
|
|
7
|
+
## Scope And Verdict
|
|
8
|
+
|
|
9
|
+
Native-Windows re-audit, sixth round in this lineage. Score **6.2/10** (5.9.22
|
|
10
|
+
6.6, 5.9.23 4.9, 5.9.25 4.3, 5.9.26 3.8, 5.9.27 4.6, 5.9.28 6.2) — the first
|
|
11
|
+
substantial rise in five versions, and the first with a root cause identified
|
|
12
|
+
in code rather than a symptom patched. **No regression against 5.9.27 was
|
|
13
|
+
found.** Windows 11 Pro 10.0.26200, Python 3.10.0, pipx, `ask.EXE`, build
|
|
14
|
+
`adbbf9ca7652e2ad2dfdb2db911c12e1793dded5`.
|
|
15
|
+
|
|
16
|
+
| Axis | 5.9.27 | 5.9.28 | Basis |
|
|
17
|
+
|---|---:|---:|---|
|
|
18
|
+
| Analysis accuracy | 9.0 | 9.5 | Overload anchoring exact and cross-checked against the real source |
|
|
19
|
+
| Honesty of figures | 9.0 | 9.3 | `audit_time_ms` null instead of a false `0.0`; every cache store publishes its eviction contract |
|
|
20
|
+
| Diagnostic instrumentation | partial progress | real step, known limit | `_meta.concurrency` is precise and actionable — and absent from exactly the runs that fail |
|
|
21
|
+
| CLI ergonomics | 6.5 | 7.5 | Nested-workspace `selftest` refusal; `retrieve --target` explains and redirects |
|
|
22
|
+
| Audit-family reliability | 2/12 | 2/8, cause bounded | `migrate-check`/`migrate-apply` clean; `spring-audit` 0/4, `verify` 0/1, `risk` 0/1, `audit-report` 0/1 |
|
|
23
|
+
| Light-path performance | 6.5 | 6.5 | `impact-chain` 11.3 s, `review-pr` 29.4 s — within range under residual contention |
|
|
24
|
+
|
|
25
|
+
## Priority Finding — The Hang Reproduces With Contention Ruled Down
|
|
26
|
+
|
|
27
|
+
The most important measurement of this round. The auditor isolated the
|
|
28
|
+
contention variable to its lowest observable level across six sessions, and
|
|
29
|
+
the failure persisted at 100%:
|
|
30
|
+
|
|
31
|
+
1. `entry-trace.jsonl` was monitored for 120 s with nothing launched, waiting
|
|
32
|
+
for a quiet window.
|
|
33
|
+
2. 100 s of total calm confirmed — no new lines.
|
|
34
|
+
3. `timeout -k 5 150 ask spring-audit . --compact` launched into that window.
|
|
35
|
+
4. Result: `rc=124`, 150,176 ms, **0 bytes of stdout**.
|
|
36
|
+
5. The trace grew by two lines over the whole 150 s window: the auditor's own
|
|
37
|
+
invocation, and one light foreign invocation (`risk thingsboard --limit
|
|
38
|
+
20`) — against the *dozens* of concurrent foreign invocations measured in
|
|
39
|
+
the 5.9.27 session.
|
|
40
|
+
|
|
41
|
+
Session total: **4/4 hangs** of `spring-audit . --compact`, the last of them
|
|
42
|
+
under the lowest contention load obtainable in six audits.
|
|
43
|
+
|
|
44
|
+
The 5.9.28 release note states: *"one hang was observed with nothing else
|
|
45
|
+
running, and that is unexplained."* This round supplies four repetitions of
|
|
46
|
+
that case rather than one, which turns "unexplained" into "unexplained and
|
|
47
|
+
reproducible" — a better-defined problem, still unsolved. Contention is a
|
|
48
|
+
real, now precisely measured factor; it is **not the sole cause**. Something
|
|
49
|
+
specific to this repository still breaks `spring-audit` on a near-idle
|
|
50
|
+
machine.
|
|
51
|
+
|
|
52
|
+
The auditor's recommendation: profile the `applying all rules over 3342 Java
|
|
53
|
+
files` phase (the one the stderr heartbeat names) against a growing subset of
|
|
54
|
+
the repository — 250, 500, 1,000, 2,000, 3,342 files — to find where the
|
|
55
|
+
behaviour changes from "answers" to "hangs indefinitely". If the command
|
|
56
|
+
exhausts memory or time deterministically on some code pattern in this tree,
|
|
57
|
+
contention would be worsening a failure that already exists in isolation
|
|
58
|
+
rather than causing one.
|
|
59
|
+
|
|
60
|
+
## Instrumentation Gap — The Blind Spot `_meta.concurrency` Cannot Cover
|
|
61
|
+
|
|
62
|
+
`_meta.concurrency` is described as the best instrumentation to appear in six
|
|
63
|
+
sessions. On a successful `endpoints --output` run it read
|
|
64
|
+
`{"peer_invocations_at_start": 17, "worker_budget_shared": true, "jobs": 1,
|
|
65
|
+
"jobs_unshared": 4}` — exact, actionable, and enough for any consumer to tell
|
|
66
|
+
a contaminated timing from an isolated one without doing process archaeology.
|
|
67
|
+
|
|
68
|
+
It never appears on a hung or empty run: stderr across the four `spring-audit`
|
|
69
|
+
hangs contains zero mentions of `concurrency`, because those processes die
|
|
70
|
+
before assembling any payload. This is the same blind spot `R-01` identified
|
|
71
|
+
in the 5.9.26 round (the process does not reach the output guard); what has
|
|
72
|
+
changed is that we now know it *would* publish something useful if it got
|
|
73
|
+
there.
|
|
74
|
+
|
|
75
|
+
Concrete suggestion from the auditor: write an in-flight marker
|
|
76
|
+
(`inflight/<pid>.json` carrying `{argv, started_at, last_phase}`, updated at
|
|
77
|
+
each phase change the heartbeat already reports) when an audit-family command
|
|
78
|
+
starts, and delete it on completion. A process that hangs or dies leaves that
|
|
79
|
+
file orphaned — which is precisely the forensic evidence the next field
|
|
80
|
+
session needs, without depending on an external observer correlating
|
|
81
|
+
timestamps in a trace file shared with an unknown number of other processes.
|
|
82
|
+
|
|
83
|
+
## Measured Reliability — Six Versions, Same Invocation, Same Repository
|
|
84
|
+
|
|
85
|
+
| Invocation | 5.9.23 | 5.9.25 | 5.9.26 | 5.9.27 | 5.9.28 |
|
|
86
|
+
|---|---:|---:|---:|---:|---|
|
|
87
|
+
| `spring-audit . --compact` | 0/24 | 0/18 | 0/8 | 0/5 | 0/4 (3 under verified-minimal contention) |
|
|
88
|
+
| `verify .` | 0/24 | 0/18 | 0/5 | 0/1 | 0/1 |
|
|
89
|
+
| `migrate-check . --compact` | 7/12 | 4/26 | 0/5 | 1/1 | 1/1 ✓ |
|
|
90
|
+
| `migrate-apply .` | 14/24 | 0/26 | 0/5 | 1/1 | 1/1 ✓ |
|
|
91
|
+
| `risk . --limit 20` | 0/13 | 0/7 | 0/4 | 0/1 | 0/1 |
|
|
92
|
+
| `audit-report . --format markdown` | 0/7 | 0/7 | 0/4 | 0/1 | 0/1 |
|
|
93
|
+
|
|
94
|
+
`migrate-check` and `migrate-apply` have now answered reliably in two
|
|
95
|
+
consecutive sessions (38–39 s, correct payloads) — a trend rather than luck.
|
|
96
|
+
The other four remain at zero.
|
|
97
|
+
|
|
98
|
+
## Verified Fixes — Checked With The Auditor's Own Data
|
|
99
|
+
|
|
100
|
+
- **`NEW-02`/`BUG-05` (overload anchoring) — closed, cross-checked against the
|
|
101
|
+
real source.** `ask endpoints . --output`: the four endpoints of one
|
|
102
|
+
overloaded handler pair now publish `anchor_ambiguity: true`,
|
|
103
|
+
`overload_count: 2`, `anchor_candidate_lines: [134, 145]`, and those two
|
|
104
|
+
line numbers match the two real annotations the auditor had verified by hand
|
|
105
|
+
three sessions earlier. First defect tracked since the 5.9.22 round that is
|
|
106
|
+
genuinely resolved rather than "not reproduced this time".
|
|
107
|
+
- **`BUG-13` (nested-workspace `selftest`) — closed, verified against a
|
|
108
|
+
purpose-built fixture.** The auditor built a workspace holding two real
|
|
109
|
+
nested Git repositories: refusal in **373 ms**, `{"code": "INVALID_USAGE",
|
|
110
|
+
..., "nested_repositories": 2}`, with `--allow-nested` documented. Against
|
|
111
|
+
1/12 rows passing in 120 s before.
|
|
112
|
+
- **`BUG-16` (cache eviction contract) — closed.** `ask cache status` now
|
|
113
|
+
prints, per store, when and how entries are evicted — information absent for
|
|
114
|
+
four versions.
|
|
115
|
+
- **`ALT-25` (`impact-chain.audit_time_ms`) — closed.** `null` with
|
|
116
|
+
`findings_status: "not_computed"` and the rule stated, replacing the
|
|
117
|
+
misleading `0.0`.
|
|
118
|
+
- **`retrieve security-surface --target` — closed, high quality.** The refusal
|
|
119
|
+
now says the intent is repository-wide and names
|
|
120
|
+
`ask retrieve security-chain --target <symbol>`, after four sessions of
|
|
121
|
+
"No such option: --target".
|
|
122
|
+
- **`R-01`'s mechanism — confirmed real and quantified** (see above), with the
|
|
123
|
+
reservation that the disclosure cannot reach the failing runs.
|
|
124
|
+
|
|
125
|
+
## Not Verified This Round
|
|
126
|
+
|
|
127
|
+
- **`ALT-08` — the auditor ran the wrong command and says so.**
|
|
128
|
+
`ask review-pr . --files -` (119,979 bytes, above the declared 100,000-byte
|
|
129
|
+
ceiling) carries no `_truncation_summary` at all: that field belongs to
|
|
130
|
+
`ask prepare-context review-pr`, a different command sharing the task name.
|
|
131
|
+
Neither claimed nor refuted; pending a repeat with the correct command.
|
|
132
|
+
- `BUG-22`/`REG-02` (`--agent` not relaunched), `BUG-10` (needs a repository
|
|
133
|
+
with the routing styles it detects, absent here), `ALT-07`, `ALT-10`,
|
|
134
|
+
`BUG-02`, `BUG-12`, `BUG-09`, `BUG-23`: not relaunched for time budget, no
|
|
135
|
+
regression signal against any of them.
|
|
136
|
+
- `ask --help`: 12.3 s cold, 2.9 s on immediate repetition. Still high on the
|
|
137
|
+
audit machine, consistent with residual contention rather than a defect in
|
|
138
|
+
the command.
|
|
139
|
+
|
|
140
|
+
## Verified And Defect-Free In 5.9.28
|
|
141
|
+
|
|
142
|
+
`endpoints` (3,763, exact), `impact-chain` (37,445 bytes), `posture`,
|
|
143
|
+
`verify-edit`, `explain`, `impact`, `drift`, `trend`, `chunk-file`, `intent`,
|
|
144
|
+
`pr-risk`, `review-pr` (119,979 bytes, coherent), `migrate-check` (38,081
|
|
145
|
+
bytes), `migrate-apply` (10,142 bytes), `selftest` with an explicit path
|
|
146
|
+
(`rc=75`, 9,910 bytes) and with nesting detection (`rc=2`). `--jobs`
|
|
147
|
+
out-of-range rejection confirmed for the sixth consecutive session.
|
|
148
|
+
|
|
149
|
+
## Commercial Position
|
|
150
|
+
|
|
151
|
+
The reliable subset grew for real this round — `migrate-check`,
|
|
152
|
+
`migrate-apply`, `endpoints`, `posture`, `impact-chain`, `pr-risk`,
|
|
153
|
+
`review-pr`, `selftest` with an explicit path, now with correct overload
|
|
154
|
+
anchors — and is valued at **18–20 €/dev/month**, up from prior rounds. The
|
|
155
|
+
central security-audit family (`spring-audit`, `verify`, `risk`,
|
|
156
|
+
`audit-report`) remains unusable on this repository for the sixth consecutive
|
|
157
|
+
version.
|
|
158
|
+
|
|
159
|
+
**Upgrade recommendation: yes, unconditionally** — no regression against
|
|
160
|
+
5.9.27, and four corrections verified with the auditor's own data rather than
|
|
161
|
+
accepted on the changelog's word. For anyone who needs the audit family on
|
|
162
|
+
this repository specifically: still not the moment, but for the first time the
|
|
163
|
+
team has a concrete, reproducible lead instead of a diffuse symptom.
|
|
164
|
+
|
|
165
|
+
## Attack Order Requested By The Auditor
|
|
166
|
+
|
|
167
|
+
1. `R-01` — bisect the `applying all rules` phase over a growing file subset
|
|
168
|
+
(250 → 3,342) to find where the behaviour changes; the trigger may not be
|
|
169
|
+
purely concurrency.
|
|
170
|
+
2. Extend `R-01`'s instrumentation to runs that never complete — the in-flight
|
|
171
|
+
marker above.
|
|
172
|
+
3. `R-02` — repeat the `ALT-08` verification with `ask prepare-context
|
|
173
|
+
review-pr`.
|
|
174
|
+
4. Remaining rows unchanged in priority from the 5.9.27 report.
|