sourcecode 5.8.0__tar.gz → 5.8.1__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.8.0 → sourcecode-5.8.1}/CHANGELOG.md +137 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/CLAUDE.md +10 -2
- {sourcecode-5.8.0 → sourcecode-5.8.1}/PKG-INFO +4 -3
- {sourcecode-5.8.0 → sourcecode-5.8.1}/README.md +2 -2
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/CACHE.md +1 -1
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/DEFECT-LEDGER.md +44 -34
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/DEVELOPMENT-ROADMAP.md +108 -6
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/USER_GUIDE.md +1 -1
- {sourcecode-5.8.0 → sourcecode-5.8.1}/pyproject.toml +12 -2
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/audit_report.py +31 -3
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/cache_model.py +5 -3
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/canonical_ir.py +7 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/cli.py +220 -134
- sourcecode-5.8.1/src/sourcecode/output_bounds.py +194 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/output_ceiling.py +62 -9
- sourcecode-5.8.1/src/sourcecode/output_sink.py +230 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/parallel.py +6 -2
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/parse_cache.py +132 -9
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/phased_run.py +19 -8
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/repository_ir.py +178 -22
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/risk.py +13 -1
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/risk_model.py +35 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/spring_tx_analyzer.py +8 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/verify_edit.py +40 -0
- sourcecode-5.8.0/raw +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/.gitignore +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/.ruff.toml +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/CONTRIBUTING.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/LICENSE +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/NOTICE +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/SECURITY.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/EXECUTIVE-ROADMAP.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/MANUAL-USUARIO.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/overview.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/contracts.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/licensing-schema.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/migrate-check.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/README.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/posture.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/privacy.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/schema.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/scripts/perf_gate.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/scripts/perf_harness.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/cache.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/classifier.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/context_graph.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/license.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/manifest_cache.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/migrate_check.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/posture.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/product_info.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/progress.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/release_info.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/supabase/functions/README.md +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.8.0 → sourcecode-5.8.1}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -2,6 +2,143 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [5.8.1] — 2026-08-17
|
|
6
|
+
|
|
7
|
+
*Ten rows from the two 5.8.0 re-audits, closed one commit at a time. The theme
|
|
8
|
+
is not the engine: of the ten, **three were analysis defects and seven were the
|
|
9
|
+
payload failing to say what the analysis already knew** — a population that
|
|
10
|
+
moved with no field to explain it, two empty lists beside two full builds, a
|
|
11
|
+
census naming production trees as excluded, a compact view that dropped its own
|
|
12
|
+
identity, a tier that read as a severity. Two reported causes were **refuted by
|
|
13
|
+
measurement** and are recorded as such rather than "fixed": the claimed
|
|
14
|
+
5.7.3 → 5.8.0 slowdown (±2 % over 10 repo×command pairs) and the ceiling hint
|
|
15
|
+
said to name no smaller variant when one exists.*
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- `posture` and `validation` take `--limit N` and `--compact` (ASK-10). Both
|
|
19
|
+
could exceed the output ceiling and declared no flag that could get under it,
|
|
20
|
+
so the only ways out were `--output FILE` — which puts the answer outside the
|
|
21
|
+
agent that asked for it — and `ASK_MAX_OUTPUT_TOKENS=0`, which switches the
|
|
22
|
+
guard off. `posture` exited 1 on 2 of 8 corpus repositories, and what pushed
|
|
23
|
+
it over was a *better* answer: conditional beans now name
|
|
24
|
+
`@ConditionalOnExpression` instead of a generic reason (`unresolved`
|
|
25
|
+
64 120 → 184 864 B). Bounding lives in one authority, reaches every depth of
|
|
26
|
+
the payload (a `--diff` is bounded on both sides), touches lists and never
|
|
27
|
+
counts, and every cut publishes `{total, shown, omitted}` with the registered
|
|
28
|
+
effect. Nothing is bounded unless you ask. Measured: `posture` on
|
|
29
|
+
keycloak-config-cli 53 115 → 4 605 B under `--compact`, summary unchanged.
|
|
30
|
+
A registry-derived battery now fails when a command that can exceed the
|
|
31
|
+
ceiling declares no way under it.
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
- A risk tier is not a rule severity, and no longer reads like one (B2). The
|
|
35
|
+
band and the severity shared a vocabulary while measuring different things,
|
|
36
|
+
and disagreed on 34 of 50 rows — both correct, since a severity is what the
|
|
37
|
+
rule says about a defect and a band is what the composition says about it in
|
|
38
|
+
this repository. `audit-report` announced 14 critical over bands while
|
|
39
|
+
`--min-severity critical` filtered severities and returned 0. Every risk row
|
|
40
|
+
and census now also carries `risk_tier` (R1…R5) beside `band`, with one
|
|
41
|
+
crosswalk sentence that names both axes, says they disagree by construction,
|
|
42
|
+
and points at `--min-band` as the flag that filters tiers.
|
|
43
|
+
- `--compact` makes an answer smaller, never unattributable (B14).
|
|
44
|
+
`cold-start --compact` dropped 11 of 19 keys — `schema_version`, `repo_id`,
|
|
45
|
+
`current_git_head`, and a 331-character `hotspots` section — from a document
|
|
46
|
+
whose weight was 97,7 % endpoints, and cut the endpoint list to 30 with
|
|
47
|
+
nothing to say it had. There is now an immutable minimum no compact view may
|
|
48
|
+
remove, every cut collection declares `{total, shown, omitted}` (on
|
|
49
|
+
BroadleafCommerce: 272 total, 30 shown, 242 omitted), and trimming goes by
|
|
50
|
+
weight rather than by a fixed key list, with every removed section named and
|
|
51
|
+
measured in `compact_omitted`.
|
|
52
|
+
- An excluded *pattern* is a directory whose files are all excluded (ASK-12).
|
|
53
|
+
`spring-audit` published `core/`, `module/` and `cli/` — three production
|
|
54
|
+
trees, 5 955 files between them — as excluded patterns, because the
|
|
55
|
+
constructor fell back to naming the first path segment. The exclusion itself
|
|
56
|
+
was conservative and correct; the field describing it was not, and an auditor
|
|
57
|
+
filed and withdrew an over-exclusion report over it. The same field also had
|
|
58
|
+
two constructors with two shapes. Both surfaces now call one producer beside
|
|
59
|
+
the authority that decides what a test source is: `patterns_matched` holds
|
|
60
|
+
only declared test roots, and per-file rules are published as a
|
|
61
|
+
`rules_matched` census with a sentence explaining each rule.
|
|
62
|
+
- One authority writes every output-ceiling hint (ASK-09). `repo-ir` carried two
|
|
63
|
+
hand-written hints — one for stdout, one for the separate megabyte guard on a
|
|
64
|
+
written file — and `migrate-check` a third that reimplemented `build_hint`
|
|
65
|
+
line for line. A hand-written escape list cannot know which flags the caller
|
|
66
|
+
already passed, which is the defect the field reported from the other side.
|
|
67
|
+
`output_ceiling` now expresses what those commands needed: `--force` as a
|
|
68
|
+
bypass, offered only where it is declared; `--gzip` as a file-only bound; a
|
|
69
|
+
`destination="file"` view where `--output FILE` is not an escape and the token
|
|
70
|
+
env var does not apply; and the "no smaller inline variant" prefix decided by
|
|
71
|
+
counting the bounding escapes rather than the sentence. The reported half —
|
|
72
|
+
`endpoints` and `cold-start` claiming nothing smaller exists while `--compact`
|
|
73
|
+
fits — does not reproduce against the unified emit seam.
|
|
74
|
+
- `verify-edit` names the change that bought its model (B4). A clean worktree
|
|
75
|
+
already short-circuits — measured 0,47 s with `model_built: false` on a
|
|
76
|
+
2 985-file repository — but a single changed path that is neither `.java`
|
|
77
|
+
nor a build descriptor (a stray `.yml`, an unclassified extension) forces two
|
|
78
|
+
repository-wide builds while appearing in **neither** published list. The
|
|
79
|
+
payload therefore read `changed_files: []`, `changed_build_files: []`,
|
|
80
|
+
`model_built: true` and 16,3 s of work with nothing to explain it, which is
|
|
81
|
+
how it was reported as a broken short circuit. `analysis.model_forced_by:
|
|
82
|
+
{count, paths, reason}` now names those paths, and `basis` says the model was
|
|
83
|
+
forced rather than implying nothing changed.
|
|
84
|
+
- A write that cannot finish leaves the filesystem as it found it (B15). The
|
|
85
|
+
payload was written to a temporary beside the destination and renamed onto it
|
|
86
|
+
— atomic, and correct — but a failed rename left the temporary behind: a field
|
|
87
|
+
matrix of five bad destinations left **13,9 MB of untracked files inside the
|
|
88
|
+
repository**, which is the premise "read-only analysis" being false. The
|
|
89
|
+
write now lives in one authority (`sourcecode.output_sink`) and removes its
|
|
90
|
+
temporary in a `finally`. Three edges came with it: a discard sink (`nul`,
|
|
91
|
+
`NUL`, `CON` on Windows, `/dev/null` on POSIX) is a destination, not an I/O
|
|
92
|
+
error — `written: false`, `sink: "null-device"`, `exit 0`, matched only on the
|
|
93
|
+
platform that reserves the name; the operating system's message no longer
|
|
94
|
+
enters our English sentence but travels in `os_error: {raw, errno, errno_name,
|
|
95
|
+
locale}`, beside a `cleaned_up` list of what the run took back with it; and
|
|
96
|
+
`-o reports/today/out.json` creates the parent directories, deliberately, with
|
|
97
|
+
a hint that says so instead of telling you to check for a directory we would
|
|
98
|
+
have made.
|
|
99
|
+
- The parse store publishes the ceiling its policy can hold, not only its budget
|
|
100
|
+
(ASK-15 / AS-18). The resting excess over the 512 MB budget was measured going
|
|
101
|
+
5,45 → 44,35 MB and, followed across three further commands, **not
|
|
102
|
+
converging** — because the policy is "swept every 32 MB written" and with no
|
|
103
|
+
writes there is no sweep. Nothing was lying; the figure to size a disk by was
|
|
104
|
+
simply not published. `cache status` now carries `effective_ceiling_mb`
|
|
105
|
+
(`budget + sweep_interval × concurrent writers`, the writer count read from
|
|
106
|
+
the authority the parse pool resolves `--jobs` against) with a basis that
|
|
107
|
+
names both terms and says why the excess *rests*: the last interval before a
|
|
108
|
+
process exits is never swept. `over_budget` — normal, bounded, expected — is
|
|
109
|
+
separated from `over_ceiling`, the only state that contradicts what we
|
|
110
|
+
publish. `cache model` and `docs/CACHE.md` corrected from the same fact.
|
|
111
|
+
- Retiring a stale parse-cache generation is a rename, not a walk of the store
|
|
112
|
+
(ASK-14 / AS-17). The first run after an upgrade is the one run that finds a
|
|
113
|
+
whole unreachable generation, and it unlinked every file of it *inside* the
|
|
114
|
+
analysis, before its own first write — so a cold run's cost scaled with what
|
|
115
|
+
the store already held, which is the exact condition the field measured its
|
|
116
|
+
worst cold number under. The generation is now renamed out of reach in one
|
|
117
|
+
directory operation and unlinked on a daemon thread behind the run: **990 ms →
|
|
118
|
+
10,9 ms** on the analysis path over 20 000 entries / 153 MB. A filesystem that
|
|
119
|
+
refuses the rename still gets the inline delete, and a deletion cut short by
|
|
120
|
+
process exit is finished by the next run. `cache status` keeps counting those
|
|
121
|
+
bytes, named `retired (deleting)` — they are on the disk until they are not.
|
|
122
|
+
The other half of the report, a claimed 5.7.3 → 5.8.0 slowdown in the analysis
|
|
123
|
+
path itself, **did not reproduce**: 10 repo×command pairs A/B'd against
|
|
124
|
+
`0900336` with an isolated cache per cell put every delta inside ±2 %.
|
|
125
|
+
- An analysed population does not move between releases without a field that
|
|
126
|
+
explains the move (B17-sv / AS-16). 5.8.0's E-35 fix removed symbols that were
|
|
127
|
+
never declarations — `return unknownHelper("x");` parsed as one — and
|
|
128
|
+
`metadata.symbols_analyzed` fell with them (`saint-server` 43 642 → 43 003,
|
|
129
|
+
−1,46 %, after five constant versions). The correction was right and the
|
|
130
|
+
release said nothing, so the next field re-audit read it as lost coverage and
|
|
131
|
+
filed it P0. Every command that publishes `symbols_analyzed` now publishes
|
|
132
|
+
`symbols_excluded: {count, reason, basis}` beside it — `repo-ir`'s
|
|
133
|
+
`analysis_meta`, the CIR metadata and `spring-audit`'s metadata, from one
|
|
134
|
+
authority — **always present, `count: 0` included**, because a field that
|
|
135
|
+
appears only when it is non-zero says nothing by its absence. The count is
|
|
136
|
+
carried in the parse-cache entry, so a warm run reports the same number as a
|
|
137
|
+
cold one and a file prepared by a worker reports the same as one parsed in
|
|
138
|
+
sequence. `reason` names the phantom and the release that removed it; `basis`
|
|
139
|
+
names the discriminator (`statement_head_in_return_type_slot`), which is
|
|
140
|
+
checkable against the source.
|
|
141
|
+
|
|
5
142
|
## [5.8.0] — 2026-08-16
|
|
6
143
|
|
|
7
144
|
*The field queue from the two 5.7.3 validations, closed end to end: the blast
|
|
@@ -70,5 +70,13 @@ the same command runs on a 3 300-file monolith.
|
|
|
70
70
|
`unknown`, never `0` and never "not reachable".
|
|
71
71
|
- **Vendor-agnostic inference.** Logic never branches on a proprietary name;
|
|
72
72
|
names are evidence, never the rule.
|
|
73
|
-
-
|
|
74
|
-
|
|
73
|
+
- **The suite runs in parallel by default.** `addopts = "-q -n auto"`, so plain
|
|
74
|
+
`pytest` runs the whole battery and prints the summary line — 70 s on 8 cores,
|
|
75
|
+
not 246 s. `-o addopts=""` is no longer the way to see the count; it now
|
|
76
|
+
*removes* the parallelism. Override the worker count with `-n <k>`, not by
|
|
77
|
+
clearing `addopts`.
|
|
78
|
+
- **Run one file while you work, the suite before you commit.** Naming the file
|
|
79
|
+
is ~2 s; the full run is 70 s. `-k <pattern>` is not the shortcut — it
|
|
80
|
+
deselects but still collects all ~9 000 tests, so it floors at 16 s. After a
|
|
81
|
+
red run, `--lf` re-runs only what failed.
|
|
82
|
+
- 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.8.
|
|
3
|
+
Version: 5.8.1
|
|
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
|
|
@@ -35,6 +35,7 @@ Requires-Dist: tree-sitter>=0.21; extra == 'ast'
|
|
|
35
35
|
Provides-Extra: dev
|
|
36
36
|
Requires-Dist: mcp<2,>=1.2; extra == 'dev'
|
|
37
37
|
Requires-Dist: mypy>=1.10; extra == 'dev'
|
|
38
|
+
Requires-Dist: pytest-xdist>=3.8; extra == 'dev'
|
|
38
39
|
Requires-Dist: pytest>=8; extra == 'dev'
|
|
39
40
|
Requires-Dist: ruff>=0.15; extra == 'dev'
|
|
40
41
|
Provides-Extra: mcp
|
|
@@ -47,7 +48,7 @@ Description-Content-Type: text/markdown
|
|
|
47
48
|
|
|
48
49
|
**Context · Impact · Migration · Architecture · Review — everything from one structural model.**
|
|
49
50
|
|
|
50
|
-

|
|
51
52
|

|
|
52
53
|
|
|
53
54
|
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
|
|
@@ -135,7 +136,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
135
136
|
# pip / pipx
|
|
136
137
|
pipx install sourcecode # or: pip install sourcecode
|
|
137
138
|
|
|
138
|
-
ask version # ask 5.8.
|
|
139
|
+
ask version # ask 5.8.1 — and, on a build that has aged,
|
|
139
140
|
# how many releases have probably shipped since
|
|
140
141
|
```
|
|
141
142
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**Context · Impact · Migration · Architecture · Review — everything from one structural model.**
|
|
6
6
|
|
|
7
|
-

|
|
8
8
|

|
|
9
9
|
|
|
10
10
|
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
|
|
@@ -92,7 +92,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
92
92
|
# pip / pipx
|
|
93
93
|
pipx install sourcecode # or: pip install sourcecode
|
|
94
94
|
|
|
95
|
-
ask version # ask 5.8.
|
|
95
|
+
ask version # ask 5.8.1 — and, on a build that has aged,
|
|
96
96
|
# how many releases have probably shipped since
|
|
97
97
|
```
|
|
98
98
|
|
|
@@ -59,7 +59,7 @@ the enclosing monorepo, and `cache status` / `cache clear` resolve to that same
|
|
|
59
59
|
| `ris` | the Repository Intelligence Snapshot — structural index, endpoint index, summaries | tree state (the snapshot records the tree it describes) | rebuilt on every warm |
|
|
60
60
|
| `cir` | the shared Canonical IR — the Java parse every knowledge command reuses | tree state · analyzer fingerprint · schema version | built |
|
|
61
61
|
| `task` | one `prepare-context` task answer, per task and per option set | tree state · task · --symptom / --all / --include-config / --format | never — a warm does not run any task |
|
|
62
|
-
| `parse` | the symbol extraction of one file, keyed by its bytes | the file's own bytes and the extractor's source — content-addressed, so it is never stale and never needs invalidating. Bounded by `ASK_PARSE_CACHE_MAX_MB` (default 512 MB, least-recently-used, swept every 32 MB written rather than on every write, so the
|
|
62
|
+
| `parse` | the symbol extraction of one file, keyed by its bytes | the file's own bytes and the extractor's source — content-addressed, so it is never stale and never needs invalidating. Bounded by `ASK_PARSE_CACHE_MAX_MB` (default 512 MB, least-recently-used, swept every 32 MB written rather than on every write, and the last interval before a process exits is never swept — so the store rests up to one interval per writing process above its budget, and the figure to size a disk by is the ceiling `cache status` publishes beside it, not the budget itself (ASK-15)) and reported in `cache status` (F-AR) | filled for every Java file the warm parses |
|
|
63
63
|
|
|
64
64
|
Measured on BroadleafCommerce (2 000+ Java files, dirty tree), warm machine, 3.2.2, each command in isolation.
|
|
65
65
|
|