sourcecode 5.9.10__tar.gz → 5.9.11__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.10 → sourcecode-5.9.11}/CHANGELOG.md +62 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/CLAUDE.md +12 -4
- {sourcecode-5.9.10 → sourcecode-5.9.11}/PKG-INFO +24 -11
- {sourcecode-5.9.10 → sourcecode-5.9.11}/README.md +23 -10
- sourcecode-5.9.11/docs/AUDIT-2026-08-28-EXTERNAL-5.9.10.md +169 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/DEFECT-LEDGER.md +77 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/DEVELOPMENT-ROADMAP.md +98 -9
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/EXECUTIVE-ROADMAP.md +46 -1
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/MANUAL-USUARIO.md +21 -4
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/USER_GUIDE.md +23 -6
- {sourcecode-5.9.10 → sourcecode-5.9.11}/pyproject.toml +1 -1
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/answer_bounds.py +11 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/cache.py +68 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/classifier.py +120 -21
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/cli.py +57 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/java.py +22 -1
- sourcecode-5.9.11/src/sourcecode/detectors/jvm_ext.py +134 -0
- sourcecode-5.9.11/src/sourcecode/manifest_cache.py +101 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/output_ceiling.py +33 -8
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/phased_run.py +34 -2
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/progress.py +85 -12
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/release_info.py +1 -1
- sourcecode-5.9.10/src/sourcecode/detectors/jvm_ext.py +0 -68
- sourcecode-5.9.10/src/sourcecode/manifest_cache.py +0 -63
- {sourcecode-5.9.10 → sourcecode-5.9.11}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/.github/workflows/windows-battery.yml +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/.gitignore +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/.ruff.toml +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/CODE_OF_CONDUCT.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/CONTRIBUTING.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/LICENSE +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/NOTICE +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/SECURITY.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/CACHE.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/PRODUCT-ROUTE.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/DESIGN-assessment-report.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/DESIGN-pack-manifest.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/overview.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/contracts.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/licensing-schema.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/migrate-check.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/pack-gate-github-actions.yml +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/pack-gate-gitlab.yml +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/README.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/perf/corpus-testing-2026-08-22.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/posture.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/privacy.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/schema.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/hatch_build.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/scripts/context_cost_harness.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/scripts/perf_gate.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/scripts/perf_harness.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/scripts/test_fast.sh +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/__main__.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/access_drift.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/analysis_budget.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/audit_clusters.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/audit_recipe.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/audit_report.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/audit_since.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/audit_verify.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/baseline_attestation.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/breaking_changes.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/build_modules.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/build_stamp.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/c4_render.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/cache_model.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/cache_observation.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/ci_output.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/context_graph.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/cve_feed.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/cve_reachability.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/defect_classes/__init__.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/defect_classes/registry.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/empty_reach.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/endpoint_disposition.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/explain_endpoint.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/field_deprecations.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/findings_baseline.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/functional_routes.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/github_diff.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/intent_router.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/license.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/migrate_check.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/migration_apply.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/output_bounds.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/output_sink.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/pack_manifest.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/packs.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/parallel.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/parse_cache.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/path_display.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/posture.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/pr_risk.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/product_info.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/regress.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/regulatory_pack.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/remediation_diff.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/remediation_flow.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/remediation_report.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/repository_ir.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/resource_budget.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/risk.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/risk_model.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/sarif_emit.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/schema_producers.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/schema_registry.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/selection_contract.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/self_audit.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/selftest.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/timeline_cache.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/vex.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/watch_loop.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/wired_surface.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/supabase/functions/README.md +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.9.10 → sourcecode-5.9.11}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -1,5 +1,67 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.9.11] — 2026-08-28
|
|
4
|
+
|
|
5
|
+
*`AUD-616` remediation: seven of nine rows closed, two partially, one carried forward.*
|
|
6
|
+
|
|
7
|
+
**Fixed**
|
|
8
|
+
|
|
9
|
+
- A stack's confidence now answers to the source in the tree. A repository of 151
|
|
10
|
+
`.kt` files with zero `.java` files and one `pom.xml` in a subdirectory published
|
|
11
|
+
`stack: java`, `confidence: high`, `primary: true` and headlined itself a Java
|
|
12
|
+
library. `JvmExtDetector` admits on source population as well as manifest
|
|
13
|
+
filename, so a Kotlin repository built with the Groovy DSL is no longer
|
|
14
|
+
invisible; and `TypeClassifier._enrich_stack`, which is the real authority for
|
|
15
|
+
`confidence`, now caps a stack with no source files of its own at `low` and
|
|
16
|
+
floors the tree's largest source population at `medium` against a competing
|
|
17
|
+
manifest-backed claim. (`AUD-616-KOTLIN`)
|
|
18
|
+
- A JVM repository with sources and no application-defining framework classifies as
|
|
19
|
+
`library` rather than `unknown`, whether or not it is multi-module. Module count
|
|
20
|
+
describes a build layout, not whether a repository is a library. Measured over
|
|
21
|
+
thirteen JVM repositories: three change and all three are libraries, ten are
|
|
22
|
+
unchanged. (`AUD-616-JUNIT4-SELF`)
|
|
23
|
+
- The output-ceiling refusal offers `--output FILE` before any `--format`
|
|
24
|
+
substitution, and each substitution states that it re-runs the command and that
|
|
25
|
+
its cost on this repository is unmeasured. The first suggestion was previously
|
|
26
|
+
the one path held open as an availability defect. (`AUD-616-O`)
|
|
27
|
+
- The cache GC no longer evicts the entry the calling run has just written. A core
|
|
28
|
+
larger than the whole store budget was written and deleted inside one process on
|
|
29
|
+
every run, so that repository could never be served from cache and nothing said
|
|
30
|
+
why. `cache status` publishes `size_budget_mb`, `largest_core_bytes` and an
|
|
31
|
+
`over_budget_reason`. (`AUD-616-P`)
|
|
32
|
+
- The delayed liveness warning names the phase, the stage and its counts, how long
|
|
33
|
+
the run has been in that phase, and whether the phase changed since the previous
|
|
34
|
+
warning — the signal that separates a blocked run from a slow one. The in-phase
|
|
35
|
+
clock is the phase's own, not the run's. (`AUD-616-L`)
|
|
36
|
+
|
|
37
|
+
**Added**
|
|
38
|
+
|
|
39
|
+
- The root analysis is a phase runner: `ASK_MAX_ANALYSIS_SECONDS` stops it at a
|
|
40
|
+
measured seam and returns a structured `partial-answer-v1` result naming the
|
|
41
|
+
phases completed and pending, the elapsed time and the budget's provenance,
|
|
42
|
+
instead of nothing at all. It declares `--ci` and `--allow-partial` from the same
|
|
43
|
+
factories every other phase runner uses, and a cut gated run exits 75.
|
|
44
|
+
(`AUD-616-TUTORIALS`)
|
|
45
|
+
|
|
46
|
+
**Performance**
|
|
47
|
+
|
|
48
|
+
- Two repeated walks of the same file tree removed from the detection phase:
|
|
49
|
+
`manifest_cache._key()` ran fourteen recursive globs per call and was called by
|
|
50
|
+
both `load()` and `save()` for each module, and the classifier flattened the tree
|
|
51
|
+
seven times per `enrich`. Measured cold on a 24,073-file monorepo: detection
|
|
52
|
+
30.3 s → 9.2 s, total 54.9 s → 32.5 s (**×1.69**), payload byte-identical.
|
|
53
|
+
|
|
54
|
+
**Known limits**
|
|
55
|
+
|
|
56
|
+
- The two availability items stay open and are not closed on measurements taken
|
|
57
|
+
here. Neither reproduces on the engineering platform — root compact completes in
|
|
58
|
+
54.9 s with output, and `audit-report --format markdown` ran 2/2 clean — and both
|
|
59
|
+
were reported against a different build and platform. Independent re-measurement
|
|
60
|
+
there, plus a published repository-size envelope, is the remaining work.
|
|
61
|
+
(`AUD-616-TUTORIALS`, `AUD-616-L`)
|
|
62
|
+
- Windows process-tree cleanup is carried forward untouched: it cannot be
|
|
63
|
+
reproduced or refuted from the engineering platform. (`AUD-616-WIN-PROC`)
|
|
64
|
+
|
|
3
65
|
## [5.9.10] — 2026-08-27
|
|
4
66
|
|
|
5
67
|
*Release-alignment patch release.*
|
|
@@ -75,8 +75,16 @@ the same command runs on a 3 300-file monolith.
|
|
|
75
75
|
not 246 s. `-o addopts=""` is no longer the way to see the count; it now
|
|
76
76
|
*removes* the parallelism. Override the worker count with `-n <k>`, not by
|
|
77
77
|
clearing `addopts`.
|
|
78
|
-
- **Run
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
- **Run only the tests your change touches. The full suite runs once, at the end
|
|
79
|
+
of a session of modifications — not per change, not per commit.** Name the
|
|
80
|
+
files that cover what you edited: ~2 s each. A whole-suite run is 70 s plus the
|
|
81
|
+
wait, and repeating it after every step is the single most expensive habit
|
|
82
|
+
available here — a documentation-only edit never needs one at all (the doc
|
|
83
|
+
batteries `test_ledger_*`, `test_bundled_docs`, `test_integration_docs` are the
|
|
84
|
+
whole obligation). `-k <pattern>` is not the shortcut — it deselects but still
|
|
85
|
+
collects all ~9 000 tests, so it floors at 16 s. After a red run, `--lf`
|
|
86
|
+
re-runs only what failed.
|
|
87
|
+
- **A red the suite already had is not yours to discover twice.** Before treating
|
|
88
|
+
a failure as a regression, check it against `HEAD` (`git stash -u`, run the
|
|
89
|
+
same file, pop). Record pre-existing reds once and move on.
|
|
82
90
|
- The entry point for local runs is `run_cli.py`, not `python -m sourcecode.cli`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 5.9.
|
|
3
|
+
Version: 5.9.11
|
|
4
4
|
Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/HarounDominique/sourcecode
|
|
6
6
|
Project-URL: Repository, https://github.com/HarounDominique/sourcecode
|
|
@@ -59,7 +59,7 @@ Description-Content-Type: text/markdown
|
|
|
59
59
|
> question. All analysis is local and deterministic; see [Privacy](#configuration--privacy)
|
|
60
60
|
> before inspecting a repository whose telemetry policy you need to control.
|
|
61
61
|
|
|
62
|
-

|
|
63
63
|

|
|
64
64
|
|
|
65
65
|
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
|
|
@@ -196,15 +196,28 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
|
|
|
196
196
|
answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
|
|
197
197
|
unset, or set it to `0`, to disable the ceiling explicitly.
|
|
198
198
|
|
|
199
|
-
**Current performance status.** Release 5.9.
|
|
199
|
+
**Current performance status.** Release 5.9.11 retains the shared Canonical IR
|
|
200
200
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
201
201
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
202
|
-
not duration promises.
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
202
|
+
not duration promises. It also removes two repeated walks of the same file tree in
|
|
203
|
+
the detection phase, measured at **1.69× on a 24,073-file monorepo** — 54.9 s to
|
|
204
|
+
32.5 s cold, with a byte-identical answer. A measurement on one repository and one
|
|
205
|
+
machine is not a duration promise either.
|
|
206
|
+
|
|
207
|
+
The root analysis now stops at `ASK_MAX_ANALYSIS_SECONDS` instead of running past
|
|
208
|
+
it: a spent budget returns a structured partial result naming the phases that
|
|
209
|
+
completed and those that did not, and `--ci` makes a cut run fail the gate with
|
|
210
|
+
exit 75 (`--allow-partial` accepts one deliberately). The long-run progress
|
|
211
|
+
message names the phase it is in and whether that phase has changed, so a slow run
|
|
212
|
+
is distinguishable from a blocked one.
|
|
213
|
+
|
|
214
|
+
The current external audit still records two open availability limits, and they
|
|
215
|
+
are held open deliberately: `audit-report --format markdown` under contention, and
|
|
216
|
+
the root compact flow under strict timeouts on very large monorepos. Neither
|
|
217
|
+
reproduces on the engineering platform, so neither is closed on measurements taken
|
|
218
|
+
there. Use `ask cache model <repo>`, `--progress stderr`, `audit-report
|
|
219
|
+
--from-risk` and JSON/YAML output for supervised runs; consult the
|
|
220
|
+
[current reliability queue](docs/DEVELOPMENT-ROADMAP.md#external-audit-intake--aud-616-re-audit-release-5910)
|
|
208
221
|
before treating a historical timing or bounded flag as a current guarantee.
|
|
209
222
|
|
|
210
223
|
**CI delivery and workspace licensing.** `migrate-check --format sarif` emits
|
|
@@ -220,7 +233,7 @@ in `overlapping_paths`; a missing or non-directory path is rejected as structure
|
|
|
220
233
|
invalid input rather than treated as an empty repository. This prevents silent
|
|
221
234
|
entitlement errors in CI and does not change per-repository gates or billing.
|
|
222
235
|
|
|
223
|
-
Release 5.9.
|
|
236
|
+
Release 5.9.11 also carries the boundary-contract hardening: missing consumer repositories,
|
|
224
237
|
malformed CVE feeds and unresolved `pack gate --since` refs fail as structured
|
|
225
238
|
input errors; duplicate same-commit baselines are never overwritten. `posture
|
|
226
239
|
--diff` validates unknown profiles when the repository declares profiles. In
|
|
@@ -253,7 +266,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
253
266
|
# pip / pipx
|
|
254
267
|
pipx install sourcecode # or: pip install sourcecode
|
|
255
268
|
|
|
256
|
-
ask version # ask 5.9.
|
|
269
|
+
ask version # ask 5.9.11 — and, on a build that has aged,
|
|
257
270
|
# how many releases have probably shipped since
|
|
258
271
|
```
|
|
259
272
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
> question. All analysis is local and deterministic; see [Privacy](#configuration--privacy)
|
|
11
11
|
> before inspecting a repository whose telemetry policy you need to control.
|
|
12
12
|
|
|
13
|
-

|
|
14
14
|

|
|
15
15
|
|
|
16
16
|
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
|
|
@@ -147,15 +147,28 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
|
|
|
147
147
|
answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
|
|
148
148
|
unset, or set it to `0`, to disable the ceiling explicitly.
|
|
149
149
|
|
|
150
|
-
**Current performance status.** Release 5.9.
|
|
150
|
+
**Current performance status.** Release 5.9.11 retains the shared Canonical IR
|
|
151
151
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
152
152
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
153
|
-
not duration promises.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
153
|
+
not duration promises. It also removes two repeated walks of the same file tree in
|
|
154
|
+
the detection phase, measured at **1.69× on a 24,073-file monorepo** — 54.9 s to
|
|
155
|
+
32.5 s cold, with a byte-identical answer. A measurement on one repository and one
|
|
156
|
+
machine is not a duration promise either.
|
|
157
|
+
|
|
158
|
+
The root analysis now stops at `ASK_MAX_ANALYSIS_SECONDS` instead of running past
|
|
159
|
+
it: a spent budget returns a structured partial result naming the phases that
|
|
160
|
+
completed and those that did not, and `--ci` makes a cut run fail the gate with
|
|
161
|
+
exit 75 (`--allow-partial` accepts one deliberately). The long-run progress
|
|
162
|
+
message names the phase it is in and whether that phase has changed, so a slow run
|
|
163
|
+
is distinguishable from a blocked one.
|
|
164
|
+
|
|
165
|
+
The current external audit still records two open availability limits, and they
|
|
166
|
+
are held open deliberately: `audit-report --format markdown` under contention, and
|
|
167
|
+
the root compact flow under strict timeouts on very large monorepos. Neither
|
|
168
|
+
reproduces on the engineering platform, so neither is closed on measurements taken
|
|
169
|
+
there. Use `ask cache model <repo>`, `--progress stderr`, `audit-report
|
|
170
|
+
--from-risk` and JSON/YAML output for supervised runs; consult the
|
|
171
|
+
[current reliability queue](docs/DEVELOPMENT-ROADMAP.md#external-audit-intake--aud-616-re-audit-release-5910)
|
|
159
172
|
before treating a historical timing or bounded flag as a current guarantee.
|
|
160
173
|
|
|
161
174
|
**CI delivery and workspace licensing.** `migrate-check --format sarif` emits
|
|
@@ -171,7 +184,7 @@ in `overlapping_paths`; a missing or non-directory path is rejected as structure
|
|
|
171
184
|
invalid input rather than treated as an empty repository. This prevents silent
|
|
172
185
|
entitlement errors in CI and does not change per-repository gates or billing.
|
|
173
186
|
|
|
174
|
-
Release 5.9.
|
|
187
|
+
Release 5.9.11 also carries the boundary-contract hardening: missing consumer repositories,
|
|
175
188
|
malformed CVE feeds and unresolved `pack gate --since` refs fail as structured
|
|
176
189
|
input errors; duplicate same-commit baselines are never overwritten. `posture
|
|
177
190
|
--diff` validates unknown profiles when the repository declares profiles. In
|
|
@@ -204,7 +217,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
204
217
|
# pip / pipx
|
|
205
218
|
pipx install sourcecode # or: pip install sourcecode
|
|
206
219
|
|
|
207
|
-
ask version # ask 5.9.
|
|
220
|
+
ask version # ask 5.9.11 — and, on a build that has aged,
|
|
208
221
|
# how many releases have probably shipped since
|
|
209
222
|
```
|
|
210
223
|
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# External Audit Intake — ASK 5.9.10
|
|
2
|
+
|
|
3
|
+
**Received:** 2026-08-28
|
|
4
|
+
**Scope:** repositories under `Documents/workspace/testing/` only
|
|
5
|
+
**Evidence base:** direct re-verification of the twelve `AUD-615` items, a robustness
|
|
6
|
+
sweep over six previously unaudited repositories (`ktor-samples`, `spock`,
|
|
7
|
+
`Chronicle-Queue`, `javaee7-samples`, `camel-examples`, `shopizer-v1.1.5`), and five
|
|
8
|
+
parallel forks each using its own scratch directory
|
|
9
|
+
**Queue ID:** `AUD-616`
|
|
10
|
+
|
|
11
|
+
## Executive disposition
|
|
12
|
+
|
|
13
|
+
The report publishes three headline numbers in sequence — a provisional **8.5/10**, a
|
|
14
|
+
corrected **8.0/10** after the `tutorials` trend datum landed, and **8.1/10** on a second
|
|
15
|
+
rubric that scores per axis. As in `AUD-615`, the ledger records the evidence and the
|
|
16
|
+
closure boundaries, not a headline. **The governing score is the conservative `8.0/10`.**
|
|
17
|
+
|
|
18
|
+
The auditor notes that the installed `5.9.10` build self-declares `"stale": true` (four
|
|
19
|
+
releases have shipped since it was installed) and that the audit deliberately continued
|
|
20
|
+
against the installed build. Every timing below is therefore a property of that artefact.
|
|
21
|
+
|
|
22
|
+
Per-axis movement on the second rubric:
|
|
23
|
+
|
|
24
|
+
| Axis | 5.9.9 | 5.9.10 | Δ | Driver |
|
|
25
|
+
|---|---:|---:|:--:|---|
|
|
26
|
+
| Reliability | 8.0 | 7.7 | ▼ | `audit-report --format markdown` still unbounded; new root-cache readback race |
|
|
27
|
+
| Error quality | 9.0 | 8.8 | ▼ | The `OUTPUT_TOO_LARGE` hint recommends the one format under an open critical row |
|
|
28
|
+
| Help ↔ behaviour coherence | 8.9 | 8.9 | ≈ | `cold-start --compact` unchanged for five rounds |
|
|
29
|
+
| Agent-oriented design | 9.6 | 9.6 | ≈ | No change |
|
|
30
|
+
| Safety / non-destructiveness | 9.1 | 9.1 | ≈ | Orphan processes confirmed, but they do terminate eventually |
|
|
31
|
+
| Semantic consistency between siblings | 7.5 | 8.0 | ▲ | `AUD-615-E` closure holds; the impact family is now uniform |
|
|
32
|
+
|
|
33
|
+
Five clean forks, no target-repository writes, no commits, no modified Java files, no
|
|
34
|
+
artefacts outside `.ask/`. Scratch isolation per fork was applied this round, which is the
|
|
35
|
+
methodology correction `AUD-615` required.
|
|
36
|
+
|
|
37
|
+
## The regression that governs this round
|
|
38
|
+
|
|
39
|
+
`AUD-616-TUTORIALS` is now the most serious open item in the series, above `L`. Root
|
|
40
|
+
compact on `tutorials` (24,073 Java files) has degraded **monotonically across five
|
|
41
|
+
consecutive releases**, with no exception and no measurement out of order:
|
|
42
|
+
|
|
43
|
+
| Release | Wall time | Result |
|
|
44
|
+
|---|---:|---|
|
|
45
|
+
| 5.9.6 | 4m00.1s | exit 124, 0 bytes stdout |
|
|
46
|
+
| 5.9.7 | 5m11.5s | exit 124, 0 bytes stdout |
|
|
47
|
+
| 5.9.8 | 5m39.6s | exit 124, 0 bytes stdout |
|
|
48
|
+
| 5.9.9 | 6m20.1s | exit 124, 0 bytes stdout |
|
|
49
|
+
| 5.9.10 | 7m00.1s | exit 124, 0 bytes stdout |
|
|
50
|
+
|
|
51
|
+
The process is CPU-active throughout and the delayed progress warnings keep advancing from
|
|
52
|
+
60 s to 420 s, so this is cost, not a trivial deadlock. Six measurements moving in one
|
|
53
|
+
direction is a trend, not variance: the row is escalated to **critical** and reclassified
|
|
54
|
+
from "availability observation" to **sustained performance regression**. It is also the one
|
|
55
|
+
row where every prior round's remediation work is measurable — and measures worse.
|
|
56
|
+
|
|
57
|
+
## Accepted defects and regressions
|
|
58
|
+
|
|
59
|
+
| ID | Severity | Finding | Triage |
|
|
60
|
+
|---|---:|---|---|
|
|
61
|
+
| `AUD-616-TUTORIALS` | Critical / sustained regression | Root compact on 24,073 Java files degraded 4m00.1s → 7m00.1s across five releases, always exit 124 with zero stdout. | Open, escalated. Attribute the cost per analysis phase against file and module count, publish a scale contract, and emit a structured partial result or a bounded deadline failure instead of nothing. |
|
|
62
|
+
| `AUD-616-L` | Critical / regression | `audit-report --format markdown` on `thingsboard`: the isolated fork ran 2/2 clean (3m1.4s and 1m49.7s, exit 0, 3,701 bytes both times), while the same report's second block asserts four consecutive versions without a single completion and a repeated heartbeat that never changes stage. | Open, evidence conflicting. Two successes under low load do not close a contention-sensitive defect, and the two blocks of the report contradict each other. Reproduce under deliberate contention, add stage-level progress, and bound the run with a structured failure. |
|
|
63
|
+
| `AUD-616-KOTLIN` | Medium / confident falsehood | `ktor-samples` (151 `.kt`, **0** `.java`) publishes `"stack": "java"`, `"detection_method": "manifest"`, `"confidence": "high"`, `"primary": true`. | Open, new, mechanism verified in source. This is a high-confidence claim with zero supporting source evidence, which the product's own rule forbids. |
|
|
64
|
+
| `AUD-616-O` | Medium | When `audit-report --format json/yaml` exceeds the ceiling, the hint opens with `--format markdown` — the exact path held open as critical by `AUD-616-L`. A caller following the first suggestion gets an unbounded run with no error. | Open, new, deterministic, mechanism verified in source. |
|
|
65
|
+
| `AUD-616-P` | Low-medium / investigation | Root `ask . --compact -f yaml`: run 1 cold 112.2 s `served_from_cache: false` (correct); run 2 immediately after 113.3 s and still `false`; run 3 minutes later 1.1 s and `true`. | Open, 1/1 sample. Distinct from `AUD-612-B03` (which was "the cache is never used"): here the entry is written but not yet visible to a process started immediately afterwards. |
|
|
66
|
+
| `AUD-616-JUNIT4-SELF` | Low-medium / classification | The JUnit4 **framework** repository itself still returns `project_type: unknown`. `AUD-615-JUNIT4` closed the consumer case by design; the repository that *provides* `junit:junit` is not covered. | Open, new row on purpose. The previous closure must not be read as covering this case. |
|
|
67
|
+
| `AUD-616-WIN-PROC` | Medium | 6-7 `ask.exe` processes alive after fast, successful commands with no timeout involved. The auditor then declares the round **inconclusive**: the sample was contaminated by processes from unrelated sessions. New nuance: orphans do exit on their own eventually — one child survived a parent timeout by more than 13 minutes while still writing output. | Open, carried forward. It is late cleanup and non-response to the parent's termination signal, not a permanent leak. |
|
|
68
|
+
| `AUD-616-INTENT-TIE-COV` | Low / coverage | The `AUD-615-INTENT-TIE` reclassification is confirmed coherent, but no regression covers a genuine tie: two intents of the **same** requirement class (both repository-wide, or both target-required) with an identical score. | Open as a coverage gap, not a defect. |
|
|
69
|
+
| `AUD-616-E-PROV` | Low / ledger hygiene | `AUD-614-E` cited three divergent `risk_level` values on not-found paths (`unknown`/`low`/`unknown`). The auditor verified `impact` and `impact-chain` but could never identify which command produced the third, divergent `low`. | Open as a documentation requirement: the ledger row must name the exact command so an external evaluator can re-verify the same case. |
|
|
70
|
+
|
|
71
|
+
## Source-verified mechanisms
|
|
72
|
+
|
|
73
|
+
Three of the new rows were reproduced against the checkout rather than accepted on the
|
|
74
|
+
report's word:
|
|
75
|
+
|
|
76
|
+
**`AUD-616-KOTLIN`.** `JavaDetector.can_detect` admits on the presence of `pom.xml` or
|
|
77
|
+
`build.gradle` alone (`src/sourcecode/detectors/java.py:136`) and `detect()` then emits
|
|
78
|
+
`StackDetection(stack="java", detection_method="manifest", confidence="high", ...)`
|
|
79
|
+
unconditionally (`src/sourcecode/detectors/java.py:218-222`) — no `.java` population is
|
|
80
|
+
ever consulted. The Kotlin/Scala detector admits only on the *filenames*
|
|
81
|
+
`build.gradle.kts`, `settings.gradle.kts` or `build.sbt`
|
|
82
|
+
(`src/sourcecode/detectors/jvm_ext.py:18-23`), so a Kotlin repository built with the Groovy
|
|
83
|
+
DSL publishes **no Kotlin stack at all** and Java is left unopposed. `select_primary_stack`
|
|
84
|
+
uses source-file volume only as the *last* tiebreaker after priority, confidence and
|
|
85
|
+
manifest weight (`src/sourcecode/classifier.py:117-135`), so 151 `.kt` files could not have
|
|
86
|
+
overturned the decision even if the Kotlin stack had been emitted. The control case is
|
|
87
|
+
consistent with this: `spock` (674 `.java` + 607 `.groovy`) claims Java correctly, because
|
|
88
|
+
there the `.java` population is real.
|
|
89
|
+
|
|
90
|
+
**`AUD-616-JUNIT4-SELF`.** The `test` classification requires the `JUnit 4` framework
|
|
91
|
+
**and** every `.java` path under a test root (`src/sourcecode/classifier.py:283-292`); the
|
|
92
|
+
JUnit4 framework repository has production sources under `src/main/java`, so it falls
|
|
93
|
+
through. The `library` branch immediately above it requires a multi-module layout
|
|
94
|
+
(`src/sourcecode/classifier.py:280`), which a single-module framework repository does not
|
|
95
|
+
have, and the fall-through returns `unknown` (`src/sourcecode/classifier.py:298`). The gap
|
|
96
|
+
is structural, not a missing name heuristic.
|
|
97
|
+
|
|
98
|
+
**`AUD-616-O`.** `_BOUNDING_FORMATS` lists `markdown` first
|
|
99
|
+
(`src/sourcecode/output_ceiling.py:105`) and `ways_out()` appends the bounding formats
|
|
100
|
+
before `--output FILE` and before the `ASK_MAX_OUTPUT_TOKENS=0` bypass
|
|
101
|
+
(`src/sourcecode/output_ceiling.py:588-611`). The ordering rule itself is deliberate and
|
|
102
|
+
correct — bound the same answer first, then ask for less of it. The defect is that the
|
|
103
|
+
recommendation is unconditional on whether the recommended path completes.
|
|
104
|
+
|
|
105
|
+
## Confirmed stable — do not reopen
|
|
106
|
+
|
|
107
|
+
Reverified in this round with no regression: `AUD-615-F` (6/6 correct exits with stdout to
|
|
108
|
+
`/dev/null`), `AUD-615-RISK-L0` (2.8 s, `analysis_skipped: true`), `AUD-615-SELFTEST-TIMEOUT`
|
|
109
|
+
(exit 75 with a 7.2 KB structured diagnostic), `AUD-615-INTENT-TIE` (behaviour coherent with
|
|
110
|
+
the reclassification), `AUD-615-DRIFT` (default profile normalized), `AUD-615-COLD-COMPACT`
|
|
111
|
+
(size stable across runs), `AUD-615-E` and `AUD-615-07`.
|
|
112
|
+
|
|
113
|
+
`pack gate --since develop` measured 208.6 s, consistent with the 234 s recovery in 5.9.9:
|
|
114
|
+
the four-round upward trend on that command remains broken.
|
|
115
|
+
|
|
116
|
+
The whole earlier closure set — `spring_detected` parity, cross-process cache warming,
|
|
117
|
+
Markdown badge extraction in the root summary, compact endpoint disclosure with
|
|
118
|
+
`population_total`, exit status under stdout redirection, `--files -` empty-list rejection,
|
|
119
|
+
canonical `GIT_REF_NOT_FOUND`, the snapshot-dependent `cold-start --compact` contract,
|
|
120
|
+
`impact-chain` null risk score, `risk --limit 0`, the `selftest --timeout` contract, YAML
|
|
121
|
+
`served_from_cache` coherence and the command-typo suggestion — was re-exercised without a
|
|
122
|
+
single regression.
|
|
123
|
+
|
|
124
|
+
**Size-datum note.** The report records `cold-start --compact` as 14,959-14,960 bytes in one
|
|
125
|
+
block and 88,265-88,266 bytes in another. These are different repositories; no
|
|
126
|
+
reconciliation is claimed, and both are stability evidence within their own subject. The
|
|
127
|
+
one-byte delta is the redirection newline, not a payload change.
|
|
128
|
+
|
|
129
|
+
## Robustness sweep — six new repositories
|
|
130
|
+
|
|
131
|
+
Five of six behaved correctly and produce no queue rows:
|
|
132
|
+
|
|
133
|
+
- `spock` — 674 Java + 607 Groovy, classified without confusing the two languages.
|
|
134
|
+
- `Chronicle-Queue` — CLI tool, `spring_detected: false`, correct.
|
|
135
|
+
- `javaee7-samples` — classic Java EE, correct.
|
|
136
|
+
- `camel-examples` — 474 dependencies resolved without a crash.
|
|
137
|
+
- `shopizer-v1.1.5` — atypical layout with no root `pom.xml`; `project_type: null` with an
|
|
138
|
+
explicit explanation. Correct by design: the type genuinely cannot be inferred.
|
|
139
|
+
|
|
140
|
+
The sixth, `ktor-samples`, produced `AUD-616-KOTLIN`. This is the first Kotlin subject in
|
|
141
|
+
the series.
|
|
142
|
+
|
|
143
|
+
## Capability requests derived from this round
|
|
144
|
+
|
|
145
|
+
These are feature requirements the findings imply; they are not defects on their own.
|
|
146
|
+
|
|
147
|
+
1. **Scale contract with partial output.** Root compact and `audit-report` must publish a
|
|
148
|
+
supported repository-size envelope and, past a deadline, a structured partial result or a
|
|
149
|
+
bounded failure — never zero bytes at exit 124. (`TUTORIALS`, `L`.)
|
|
150
|
+
2. **Stage-level progress.** The current heartbeat repeats without naming the phase, which is
|
|
151
|
+
what prevented the auditor from separating a block from slowness across four rounds.
|
|
152
|
+
3. **Source-evidence gate on stack confidence,** plus first-class Kotlin admission from
|
|
153
|
+
`.kt` source volume rather than manifest filename. (`KOTLIN`.)
|
|
154
|
+
4. **A `library` classification for single-module JVM repositories** with no entry point and
|
|
155
|
+
no web/API framework, so a testing framework is not `unknown`. (`JUNIT4-SELF`.)
|
|
156
|
+
5. **Availability-aware hint ordering,** or an escape recommendation that reflects whether
|
|
157
|
+
the recommended path is bounded. (`O`.)
|
|
158
|
+
6. **Windows process-tree cleanup** via Job Objects or a verified equivalent. (`WIN-PROC`.)
|
|
159
|
+
7. **A regression for a genuine same-class intent tie.** (`INTENT-TIE-COV`.)
|
|
160
|
+
|
|
161
|
+
## Commercial interpretation
|
|
162
|
+
|
|
163
|
+
The auditor holds the band at **`$25-40/developer/month`** and keeps the standing
|
|
164
|
+
condition: **no large-scale CI gating claim**. The `TUTORIALS` trend strengthens that
|
|
165
|
+
condition rather than relaxing it — a degradation visible across five consecutive releases
|
|
166
|
+
is exactly the evidence an annual reliability commitment cannot be sold against. Do not
|
|
167
|
+
market `audit-report --format markdown`, the root command, or production CI gating for
|
|
168
|
+
repositories above roughly 3,000 files until `AUD-616-TUTORIALS` and `AUD-616-L` are closed
|
|
169
|
+
with bounded, independently reproduced evidence.
|
|
@@ -150,6 +150,83 @@ Spring detection controls, baseline safety and the prior `/dev/null` fix matrix.
|
|
|
150
150
|
intermittent endpoint-security retrieval issue had 0/18 failures in this pass and stays
|
|
151
151
|
under observation because its historical rate is about 2% over 51 runs.
|
|
152
152
|
|
|
153
|
+
**External audit intake `AUD-616`, re-audit of release 5.9.10 — 2026-08-28.** The scope was
|
|
154
|
+
again restricted to `testing/`, with direct re-verification of all twelve `AUD-615` items, a
|
|
155
|
+
robustness sweep over six previously unaudited repositories and five parallel forks, each
|
|
156
|
+
with its own scratch directory — the methodology control `AUD-615` required is now applied.
|
|
157
|
+
The report publishes three headline numbers (8.5 provisional, 8.0 corrected, 8.1 on a
|
|
158
|
+
per-axis rubric); **the governing score is the conservative 8.0/10**, and as before the rows
|
|
159
|
+
below record evidence, not a headline. The installed artefact self-declares `"stale": true`;
|
|
160
|
+
the auditor continued against it deliberately, so every timing is a property of that build.
|
|
161
|
+
No target-repository writes, commits or Java-file changes were reported.
|
|
162
|
+
|
|
163
|
+
The governing item of this round is the `tutorials` trend: five consecutive releases, each
|
|
164
|
+
slower than the last, with no measurement out of order. It is escalated to critical and
|
|
165
|
+
reclassified from an availability observation to a sustained performance regression.
|
|
166
|
+
|
|
167
|
+
**Verdict on the round (5.9.11).** Seven of the nine rows are closed, two are partially
|
|
168
|
+
closed and one — `WIN-PROC` — is carried forward as not actionable from a Darwin checkout.
|
|
169
|
+
The two critical rows are the two partial ones, and both for the same reason, stated plainly
|
|
170
|
+
because it changes what a future round should measure: **neither timing symptom reproduces
|
|
171
|
+
in this checkout.** Root `--compact` on `tutorials` completes in 54.9 s, exit 0, 15 KB, and
|
|
172
|
+
`audit-report --format markdown` on `thingsboard` ran 2/2 clean at 39.3 s and 26.8 s. The
|
|
173
|
+
4m00→7m00 trend and the four-round non-completion are properties of the auditor's build and
|
|
174
|
+
platform, and re-measurement there is the outstanding work on both rows.
|
|
175
|
+
|
|
176
|
+
What was done instead of accepting or dismissing them was to attribute the cost and remove
|
|
177
|
+
the silence. The cost is now published per phase against file count, and two mechanisms
|
|
178
|
+
behind it are closed with a measured **×1.69** on the governing subject — detection 30.3 s →
|
|
179
|
+
9.2 s, total 54.9 s → 32.5 s, payload byte-identical. The silence is closed at both ends: the
|
|
180
|
+
root analysis stops at `ASK_MAX_ANALYSIS_SECONDS` and returns a structured partial envelope
|
|
181
|
+
with a gate verdict instead of zero bytes at exit 124, and the delayed liveness warning names
|
|
182
|
+
the phase, its counts and whether it has changed — the one signal that separates a blocked
|
|
183
|
+
run from a slow one, and the one four consecutive rounds did not have.
|
|
184
|
+
|
|
185
|
+
Three findings of this round belong to the checkout rather than to the report, and are
|
|
186
|
+
recorded so they are not re-derived. `AUD-616-P`'s race did not reproduce serialized, and the
|
|
187
|
+
double miss reproduced here first was **our own concurrency** — the same contamination
|
|
188
|
+
`AUD-615` had to correct for; a deterministic mechanism with the identical symptom was found
|
|
189
|
+
underneath it and fixed. `AUD-616-JUNIT4-SELF`'s filed remedy would not have closed the row —
|
|
190
|
+
JUnit4 has three `main()`-bearing entry points, so "no entry point" was the wrong condition.
|
|
191
|
+
And the root analysis joining the bounded tier exposed three batteries comparing the two
|
|
192
|
+
command-name vocabularies as raw strings, or walking only to command leaves; each now goes
|
|
193
|
+
through the authority that already reconciles them.
|
|
194
|
+
|
|
195
|
+
| ID | Severity | Status | Evidence and required closure |
|
|
196
|
+
|---|---:|---|---|
|
|
197
|
+
| AUD-616-TUTORIALS | Critical / sustained regression | partially closed 5.9.11 — perf attributed and bounded; the reported trend does not reproduce here | **Not reproducible as filed on this platform.** Root `--compact` on `tutorials` (24,073 Java files) completes in 54.9 s, exit 0, 15 KB, four serialized cold runs (54.9 / 52.7 / 53.5 / 57.9, max/min 1.10). The report's 4m00→7m00 with exit 124 is a property of the auditor's build and platform, not of this checkout. What was verified and fixed instead is the cost and the silence. **Cost, attributed per phase against file count** (`SOURCECODE_PERF`): discovery 3.5 s, detection 30.3 s, analysis 13.4 s, serialize 6.0 s. Two mechanisms found by cProfile and closed: `manifest_cache._key()` ran fourteen `rglob` walks per call and was called by both `load()` and `save()` for each of 246 modules (1.5 M `posix.scandir` calls, 26 s) — now one `os.walk`, memoised per root, digest unchanged and asserted against the fourteen calls it replaces; and `TypeClassifier` walked the file tree seven times per `enrich` × 246 modules — now once, threaded. **Measured: detection 30.3 → 9.2 s, total 54.9 → 32.5 s (×1.69), payload byte-identical, max/min 1.003.** **Silence, closed:** the root analysis is a `PhasedRun` over the four `perf` seams, so `ASK_MAX_ANALYSIS_SECONDS` bounds it and a spent budget emits the `partial-answer-v1` envelope — phases completed and pending, elapsed, budget and its provenance — instead of zero bytes. It declares `--ci`/`--allow-partial` and exits 75 on a cut gated run. **Still open:** a published repository-size envelope (the scale contract), and re-measurement on the auditor's platform. |
|
|
198
|
+
| AUD-616-L | Critical / regression | partially closed 5.9.11 — stage-level progress shipped; the unbounded run does not reproduce | **Not reproducible as filed here.** `audit-report --format markdown` on `thingsboard` ran 2/2 clean: exit 0, 3,662 bytes both times, 39.3 s and 26.8 s — consistent with the audit's own isolated fork (3m1.4s, 1m49.7s, 3,701 bytes) and nowhere near a timeout. The **bounded structured failure** the row asks for is already shipped and verified: the command is a `PhasedRun`, and under `ASK_MAX_ANALYSIS_SECONDS=1` it returns a report declaring `Status: partial` and `Total defects: 0 (floor — this run was cut short)`. **The heartbeat half was a real defect and is fixed.** The delayed warning read `run has exceeded 5.0m; still working` and repeated that sentence unchanged for the life of the run — identical at 60 s and 420 s, which is why four rounds could not separate a blocked run from a slow one: a blocked process is also still alive. It now names the phase, the stage and its counts, how long the run has been in that phase, and whether the phase changed since the previous warning. Writing it surfaced a second defect: the first version read `_stage_t0`, which only restarts on a *counted* stage change, and published `parsing manifests for 21.1s` about a phase entered at 3 s — the run's elapsed time under a label claiming to be the phase's. A phase clock now exists separately from the counted-stage clock `_eta_seconds` uses. **Still open:** reproduction under deliberate contention on the auditor's platform. |
|
|
199
|
+
| AUD-616-KOTLIN | Medium / confident falsehood | closed 5.9.11 | Reproduced exactly, then closed at both ends. `JvmExtDetector` also admits on source population now, with the sibling `.java` count as the bar rather than an absolute number, so a Kotlin repository on the Groovy DSL — or with no root build file, which is `ktor-samples` — surfaces a Kotlin stack, while a Java monolith carrying three `.kt` tests does not. Admission by source publishes `detection_method: heuristic`, no `manifests` and no `package_manager`: a build file was not read, so nothing only a build file attests is claimed. The real authority for `confidence` was `TypeClassifier._enrich_stack`, which recomputes what the detector published from a score summing *declarations* and gives the source population one point whether there are two files or twenty thousand; both ends are corrected there, once, for every stack with a source extension — zero source files caps at `low` with a `no_source_evidence` signal, and owning the largest source population against a competing manifest-backed claim floors at `medium`. `ktor-samples` now reports `kotlin` primary at `medium`, `java` at `low`, and headlines "Kotlin library / package". Controls re-measured unchanged: `spring-security`, `shenyu`, `thingsboard` keep `java` primary at `high`. |
|
|
200
|
+
| AUD-616-O | Medium | closed 5.9.11 | `--output FILE` moves ahead of the format substitutions, and each substitution now states in its own text that it re-runs the command and that its cost on this repository is unmeasured. The module's ordering rule is unchanged and was not the defect; the reading of "the same answer" was. A bounding flag and `--output FILE` keep the rendering that has already run to completion here — that run is why the refusal has a size to report at all — while a different `--format` is a different composition this module has measured nothing about. The bypass stays last, the file destination is untouched, and the population is still the intersection of `FORMAT_REGISTRY` with the command's declared options, so nothing branches on a command name. |
|
|
201
|
+
| AUD-616-P | Low-medium / investigation | closed 5.9.11 — race not reproduced, a deterministic mechanism with the same symptom fixed | **The race does not reproduce serialized.** On `tutorials`, store cleared first, four sequential runs: 82.1 s cold and `false`, then 1.58 / 1.48 / 1.47 s, all `true`. A double miss was reproduced here first and then attributed to two `ask` processes analysing the repository at once — runs against one repository share `~/.sourcecode/cache/<repo_id>/` whatever scratch directory they are given, so per-fork scratch isolation does not separate them. **A deterministic mechanism with the same symptom did reproduce and is fixed.** The GC's size pass sorted candidates oldest-first and could walk to the end of that list, and the end of it is the entry the calling run has just written: a core larger than the whole store budget was written and deleted inside one process, on every run, for ever. It is reachable at this scale rather than hypothetically — `tutorials` stores a 9.4 MB core against a 50 MB default. The newest core is no longer a candidate; everything older still is. When the newest entry alone exceeds the budget the store stays over budget, and `cache.status()` publishes `size_budget_mb`, `largest_core_bytes` and an `over_budget_reason` naming the variable to raise. |
|
|
202
|
+
| AUD-616-JUNIT4-SELF | Low-medium / classification | closed 5.9.11 | **One correction to the remedy as filed:** it proposed classifying single-module JVM repositories "with no entry point", and JUnit4 has three — `TestRunner`, `JUnitCore` and `Version` each carry a `main()` — so that condition would have left the row open. The multi-module requirement was what was doing the wrong work: module count describes a build layout, not whether a repository is a library, and it was in the branch only because the row that introduced it (JobRunr) happened to be multi-module. By the time control reaches that point every stronger reading has been ruled out by the branches above, so what is left is a JVM repository with sources and no application-defining framework — the same inference the multi-module branch already makes. Measured over thirteen JVM repositories before and after: three change and all three are libraries (`junit4`, `mybatis-3`, `Mybatis-PageHelper`, each `unknown` → `library`); the other ten are byte-identical. A repository with no detected stack still publishes no type, which is the `shopizer` case confirmed correct by design. |
|
|
203
|
+
| AUD-616-WIN-PROC | Medium | open, carried forward — not actionable on this platform | Unchanged from `AUD-614-WIN-PROC` and `AUD-615-WIN-PROC`. The subject is native Windows process-tree teardown and the auditor's own sample was declared inconclusive (contaminated by unrelated sessions). Nothing in this round can be reproduced or refuted from a Darwin checkout, and shipping a Job Objects path that no test here can exercise would be a change made blind. It needs a native Windows/Git Bash run, and the narrowed reading stands: late cleanup and non-response to the parent's termination signal, not a permanent leak. |
|
|
204
|
+
| AUD-616-INTENT-TIE-COV | Low / coverage | closed 5.9.11 | Behaviour was already correct and nothing held it there. Both sides are covered now, with the tying questions derived from the shipped vocabulary rather than invented: `central classes deployment shape` ties two repository-wide intents at 2.8284, and `what endpoints break cross module impact` ties two target-required ones at 5.1962. Each refuses, names both candidates and the reason, offers no command, and reports no intent — so no consumer reads the rest of the payload as describing a losing candidate. A first test asserts the fixtures still tie, so a vocabulary change that destroys the tie fails the test depending on it instead of passing vacuously; a second asserts both candidates really are of one requirement class, without which the battery would silently become another copy of the rows it complements. |
|
|
205
|
+
| AUD-616-E-PROV | Low / ledger hygiene | closed 5.9.11 | **The command is `ask impact-chain <EventClass> <repo> --type events`** — the event-topology query, a third sibling of `impact` and `impact-chain` and the one the re-audit could not identify. `EventTopologyResult` declares `risk_level: str = "low"` as its dataclass default and the `not_found` branch returned the result without overriding it, so a class absent from the CIR was published as a resolved low-risk answer while its two siblings said `unknown`. The value was corrected in 5.9.9; what nothing covered is the **parity** — three commands, three code paths, one question, and no test that fails when one drifts again. A battery now runs all three through the CLI on a repository, the way an external evaluator would, and asserts they agree. Re-verified: all three publish `resolution: not_found` and `risk_level: unknown`. |
|
|
206
|
+
| AUD-616-F, -RISK-L0, -SELFTEST-TIMEOUT, -INTENT-TIE, -DRIFT, -COLD-COMPACT, -E, -07 | — | closed 5.9.9 (reverified in 5.9.10) | 6/6 correct exits with stdout to `/dev/null`; `risk --limit 0` in 2.8 s with `analysis_skipped: true`; `selftest --timeout` exit 75 with a 7.2 KB structured diagnostic; intent behaviour coherent with the reclassification; `drift` default profile normalized; `cold-start --compact` size stable across repeated runs. No regression in any of them. |
|
|
207
|
+
|
|
208
|
+
**Size-datum note.** The report records `cold-start --compact` as 14,959-14,960 bytes in one
|
|
209
|
+
block and 88,265-88,266 bytes in another. Different repositories; no reconciliation is
|
|
210
|
+
claimed, and the one-byte delta is the redirection newline, not a payload change.
|
|
211
|
+
|
|
212
|
+
**Robustness sweep.** Five of six new repositories behaved correctly and open no row:
|
|
213
|
+
`spock` (674 Java + 607 Groovy, languages not confused), `Chronicle-Queue` (CLI tool,
|
|
214
|
+
`spring_detected: false`), `javaee7-samples` (classic Java EE), `camel-examples` (474
|
|
215
|
+
dependencies, no crash) and `shopizer-v1.1.5` (no root `pom.xml`, `project_type: null` with
|
|
216
|
+
an explicit explanation — correct by design, the type genuinely cannot be inferred). The
|
|
217
|
+
sixth, `ktor-samples`, is the first Kotlin subject in the series and opened `AUD-616-KOTLIN`.
|
|
218
|
+
|
|
219
|
+
**Also stable.** `pack gate --since develop` measured 208.6 s, consistent with the 234 s
|
|
220
|
+
recovery in 5.9.9: the four-round upward trend on that command remains broken. The full
|
|
221
|
+
earlier closure set was re-exercised without a single regression.
|
|
222
|
+
|
|
223
|
+
**Commercially**, the band stays `$25-40/developer/month` with the standing no-large-scale
|
|
224
|
+
CI-gating condition. The `TUTORIALS` trend strengthens that condition rather than relaxing
|
|
225
|
+
it: a degradation visible across five consecutive releases is precisely the evidence an
|
|
226
|
+
annual reliability commitment cannot be sold against. Full triage is in
|
|
227
|
+
[`AUDIT-2026-08-28-EXTERNAL-5.9.10.md`](AUDIT-2026-08-28-EXTERNAL-5.9.10.md).
|
|
228
|
+
|
|
229
|
+
|
|
153
230
|
**Commercial boundary.** The corrected assessment is `$25-40/developer/month`, not the
|
|
154
231
|
initial `$45-58` headline. Do not market enterprise-scale support or production CI
|
|
155
232
|
gating for repositories above roughly 3,000 files until the four critical/high
|