sourcecode 5.8.27__tar.gz → 5.8.29__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of sourcecode might be problematic. Click here for more details.
- {sourcecode-5.8.27 → sourcecode-5.8.29}/CHANGELOG.md +16 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/PKG-INFO +5 -5
- {sourcecode-5.8.27 → sourcecode-5.8.29}/README.md +4 -4
- sourcecode-5.8.29/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +52 -0
- sourcecode-5.8.29/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +56 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/DEFECT-LEDGER.md +24 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/DEVELOPMENT-ROADMAP.md +26 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/EXECUTIVE-ROADMAP.md +14 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/RC1-CHECKLIST.md +1 -1
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/USER_GUIDE.md +6 -2
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/REGRESSION-GATE.md +8 -1
- {sourcecode-5.8.27 → sourcecode-5.8.29}/pyproject.toml +1 -1
- {sourcecode-5.8.27 → sourcecode-5.8.29}/scripts/perf_harness.py +4 -1
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/__init__.py +1 -1
- sourcecode-5.8.29/src/sourcecode/__main__.py +7 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/baseline_autocapture.py +4 -2
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/cache_model.py +11 -2
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/cli.py +17 -10
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detach.py +5 -6
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/envelope.py +5 -3
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/graph_analyzer.py +3 -2
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/output_bounds.py +4 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/path_admission.py +2 -1
- sourcecode-5.8.29/src/sourcecode/path_display.py +7 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/repository_ir.py +4 -1
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/security_config_scan.py +23 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/tree_utils.py +4 -2
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/verify_repo.py +5 -4
- {sourcecode-5.8.27 → sourcecode-5.8.29}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/.github/workflows/windows-battery.yml +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/.gitignore +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/.ruff.toml +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/CLAUDE.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/CODE_OF_CONDUCT.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/CONTRIBUTING.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/LICENSE +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/NOTICE +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/SECURITY.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/CACHE.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/MANUAL-USUARIO.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/PRODUCT-ROUTE.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/DESIGN-assessment-report.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/DESIGN-pack-manifest.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/overview.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/contracts.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/licensing-schema.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/migrate-check.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/pack-gate-github-actions.yml +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/pack-gate-gitlab.yml +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/README.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/perf/corpus-testing-2026-08-22.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/posture.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/privacy.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/schema.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/hatch_build.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/scripts/perf_gate.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/scripts/test_fast.sh +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/analysis_budget.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/answer_bounds.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/audit_clusters.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/audit_recipe.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/audit_report.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/audit_since.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/breaking_changes.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/build_modules.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/build_stamp.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/cache.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/cache_observation.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/ci_output.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/classifier.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/context_graph.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/defect_classes/__init__.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/defect_classes/registry.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/empty_reach.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/endpoint_disposition.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/explain_endpoint.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/field_deprecations.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/functional_routes.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/github_diff.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/license.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/manifest_cache.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/migrate_check.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/migration_apply.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/output_ceiling.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/output_sink.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/pack_manifest.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/packs.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/parallel.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/parse_cache.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/phased_run.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/posture.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/product_info.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/progress.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/regress.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/release_info.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/remediation_diff.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/resource_budget.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/risk.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/risk_model.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/sarif_emit.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/schema_producers.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/schema_registry.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/selection_contract.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/selftest.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/timeline_cache.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/wired_surface.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/supabase/functions/README.md +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.8.27 → sourcecode-5.8.29}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.8.29] — 2026-08-26
|
|
4
|
+
|
|
5
|
+
*Release synchronization for the external `5.8.28` audit. The posture diff now
|
|
6
|
+
honours `--limit` for nested endpoint-access rows, help output distinguishes the
|
|
7
|
+
historical timing anchor from the provisional cold observation, and the controlled
|
|
8
|
+
performance follow-up is recorded without an unsupported parser change. Roadmaps,
|
|
9
|
+
the defect ledger and the audit intake are aligned with the release state.*
|
|
10
|
+
|
|
11
|
+
## [5.8.28] — 2026-08-26
|
|
12
|
+
|
|
13
|
+
*Audit remediation release. Detached workers now use an executable package entry
|
|
14
|
+
point; DEAD-001 ignores explanatory annotation prose; posture diffs honour the
|
|
15
|
+
compact size contract; and non-interactive selftest runs publish nested-scope
|
|
16
|
+
warnings. Help and audit documentation are synchronized with the remaining
|
|
17
|
+
performance investigation.*
|
|
18
|
+
|
|
3
19
|
## [5.8.27] — 2026-08-26
|
|
4
20
|
|
|
5
21
|
*Audit remediation release. Detached workers avoid the Windows console shim,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 5.8.
|
|
3
|
+
Version: 5.8.29
|
|
4
4
|
Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/HarounDominique/sourcecode
|
|
6
6
|
Project-URL: Repository, https://github.com/HarounDominique/sourcecode
|
|
@@ -59,7 +59,7 @@ Description-Content-Type: text/markdown
|
|
|
59
59
|
> question. All analysis is local and deterministic; see [Privacy](#configuration--privacy)
|
|
60
60
|
> before inspecting a repository whose telemetry policy you need to control.
|
|
61
61
|
|
|
62
|
-

|
|
63
63
|

|
|
64
64
|
|
|
65
65
|
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
|
|
@@ -177,13 +177,13 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
|
|
|
177
177
|
answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
|
|
178
178
|
unset, or set it to `0`, to disable the ceiling explicitly.
|
|
179
179
|
|
|
180
|
-
**Current performance status.** Release 5.8.
|
|
180
|
+
**Current performance status.** Release 5.8.29 retains the shared Canonical IR
|
|
181
181
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
182
182
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
183
183
|
not duration promises. A controlled external warm-path audit has opened performance
|
|
184
184
|
and bounded-output regressions for this release; use `ask cache model <repo>` and
|
|
185
185
|
`--progress stderr` for supervised runs, and consult the
|
|
186
|
-
[active audit intake](docs/AUDIT-2026-08-
|
|
186
|
+
[active audit intake](docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md) before treating a
|
|
187
187
|
historical timing or bounded flag as a current guarantee.
|
|
188
188
|
|
|
189
189
|
**What a warm actually covers.** `ask cache warm` runs the compact analysis: it rebuilds the
|
|
@@ -210,7 +210,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
210
210
|
# pip / pipx
|
|
211
211
|
pipx install sourcecode # or: pip install sourcecode
|
|
212
212
|
|
|
213
|
-
ask version # ask 5.8.
|
|
213
|
+
ask version # ask 5.8.29 — and, on a build that has aged,
|
|
214
214
|
# how many releases have probably shipped since
|
|
215
215
|
```
|
|
216
216
|
|
|
@@ -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
|
|
@@ -128,13 +128,13 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
|
|
|
128
128
|
answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
|
|
129
129
|
unset, or set it to `0`, to disable the ceiling explicitly.
|
|
130
130
|
|
|
131
|
-
**Current performance status.** Release 5.8.
|
|
131
|
+
**Current performance status.** Release 5.8.29 retains the shared Canonical IR
|
|
132
132
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
133
133
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
134
134
|
not duration promises. A controlled external warm-path audit has opened performance
|
|
135
135
|
and bounded-output regressions for this release; use `ask cache model <repo>` and
|
|
136
136
|
`--progress stderr` for supervised runs, and consult the
|
|
137
|
-
[active audit intake](docs/AUDIT-2026-08-
|
|
137
|
+
[active audit intake](docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md) before treating a
|
|
138
138
|
historical timing or bounded flag as a current guarantee.
|
|
139
139
|
|
|
140
140
|
**What a warm actually covers.** `ask cache warm` runs the compact analysis: it rebuilds the
|
|
@@ -161,7 +161,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
161
161
|
# pip / pipx
|
|
162
162
|
pipx install sourcecode # or: pip install sourcecode
|
|
163
163
|
|
|
164
|
-
ask version # ask 5.8.
|
|
164
|
+
ask version # ask 5.8.29 — and, on a build that has aged,
|
|
165
165
|
# how many releases have probably shipped since
|
|
166
166
|
```
|
|
167
167
|
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# ASK Engine 5.8.27 - External Audit Intake
|
|
2
|
+
|
|
3
|
+
**Received:** 2026-08-26
|
|
4
|
+
**Audited artefact:** `5.8.27`, Windows 11, Git Bash/MSYS and native PowerShell
|
|
5
|
+
**Comparison:** the prior `5.8.26` audit and the current release artefact
|
|
6
|
+
|
|
7
|
+
This audit contains two assessments. The first confirms the semantic fixes; the
|
|
8
|
+
technical follow-up supplies a reproducible root cause for detached execution
|
|
9
|
+
and adds a bounded-output defect. The follow-up is the authoritative state for
|
|
10
|
+
those rows.
|
|
11
|
+
|
|
12
|
+
## Findings
|
|
13
|
+
|
|
14
|
+
| ID | Priority | Status | Finding and acceptance criterion |
|
|
15
|
+
|---|---:|---|---|
|
|
16
|
+
| `AUD-603-R01` | P1 | implemented, pending Windows verification | `--detach` now uses executable `sourcecode/__main__.py` through `python -m sourcecode`, rather than the inert `sourcecode.cli` module. Focused worker and package-entry tests pass; MSYS, PowerShell and parent-lifetime verification remains release evidence. |
|
|
17
|
+
| `AUD-603-S01` | P1 | implemented | `DEAD-001` now requires a Java comment to have annotation-directive shape before reporting it. Prose mentioning an annotation is ignored; true line/block commented annotations and existing security controls pass the focused battery. |
|
|
18
|
+
| `AUD-603-O01` | P2 | implemented | `posture --compact` now applies registered cuts without the monotone optimisation that could revert them on large diffs. Nested endpoint/security lists remain bounded and the diff battery passes. |
|
|
19
|
+
| `AUD-603-P01` | P2 | confirmed regression, investigation open | Two cold `5.8.27` measurements were about 174s and 184s versus one historical `5.8.26` measurement around 116s. `parsing manifests` consumed about 113s in one run despite one `pom.xml`. Reproduce with three controlled runs per release and profile before attributing or optimizing. |
|
|
20
|
+
| `AUD-603-U01` | P3 | implemented | Root help now labels the `31s @ 5.1.0` figure as a historical field anchor before presenting it. No current timing is claimed until a controlled benchmark exists. |
|
|
21
|
+
| `AUD-603-U02` | P3 | implemented, pending field verification | `selftest` now emits the nested-repository scope warning directly to stderr even when non-interactive, while leaving JSON stdout unchanged. The local ledger battery passes; field verification remains release evidence. |
|
|
22
|
+
|
|
23
|
+
## Confirmed closures and exclusions
|
|
24
|
+
|
|
25
|
+
- `AUD-602-S01` / `AUD-602-D01` are confirmed closed by the external re-test: SEC-004
|
|
26
|
+
has zero findings for the five Spring Security library shapes, and Boot 3 readiness is
|
|
27
|
+
`null` in all four non-applicable witnesses.
|
|
28
|
+
- `AUD-602-R01` is **not closed**. The previous direct-module fix is invalid because
|
|
29
|
+
`sourcecode.cli` has no module entry invocation. `AUD-603-R01` supersedes its status.
|
|
30
|
+
- `AUD-602-UX01` is **not closed**. Its communication residue is superseded by
|
|
31
|
+
`AUD-603-U01`, whose explicit headline label addresses the defect without inventing a
|
|
32
|
+
current benchmark.
|
|
33
|
+
- `AUD-602-UX02` is **not closed**. The warning is gated on TTY output, so it is absent in
|
|
34
|
+
the non-interactive case the audit cares about. It is superseded by `AUD-603-U02`.
|
|
35
|
+
- The Micronaut WebScripts message remains unconfirmed and requires no action.
|
|
36
|
+
- Root-only `--compact` on subcommands remains by design with a correct typed refusal.
|
|
37
|
+
|
|
38
|
+
## Scope notes
|
|
39
|
+
|
|
40
|
+
The performance comparison is directionally concerning but not a release-to-release
|
|
41
|
+
experiment: it has two current cold samples and one historical sample, with no parallel
|
|
42
|
+
`5.8.26` environment. Treat it as a regression signal requiring controlled measurement,
|
|
43
|
+
not as proof of a particular parser bottleneck. No prompt-injection, path-traversal,
|
|
44
|
+
traceback, write-leakage or process-zombie issue was reported in this round.
|
|
45
|
+
|
|
46
|
+
## Order
|
|
47
|
+
|
|
48
|
+
1. `AUD-603-R01` - restore an actually executable detached worker entry point.
|
|
49
|
+
2. `AUD-603-S01` - make DEAD-001 context-sensitive and add positive/negative controls.
|
|
50
|
+
3. `AUD-603-O01` - resolve the posture diff compact/ceiling contract.
|
|
51
|
+
4. `AUD-603-P01` - run the controlled cold benchmark and profile manifest parsing.
|
|
52
|
+
5. `AUD-603-U01` / `AUD-603-U02` - align help and non-interactive scope communication.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# ASK Engine 5.8.28 - External Audit Intake
|
|
2
|
+
|
|
3
|
+
**Received:** 2026-08-26
|
|
4
|
+
**Audited artefact:** `5.8.28`, Windows 11, Git Bash/MSYS and native PowerShell
|
|
5
|
+
**Comparison:** `5.8.27`
|
|
6
|
+
|
|
7
|
+
## Executive Summary
|
|
8
|
+
|
|
9
|
+
The audit rates `5.8.28` at 7/10 in the operational review and 9.5/10 in the
|
|
10
|
+
semantic regression review. No new regression was confirmed in the original
|
|
11
|
+
matrix. `--detach`, the DEAD-001 false positive, Boot 3 applicability and the
|
|
12
|
+
selftest scope warning are reported as fixed. The actionable queue is limited
|
|
13
|
+
to one CLI contract defect, one performance signal requiring attribution, and
|
|
14
|
+
one stale help headline.
|
|
15
|
+
|
|
16
|
+
The report contains a duplicated follow-up block that says detached execution
|
|
17
|
+
still invokes `python -m sourcecode.cli`. That statement describes the previous
|
|
18
|
+
implementation, not this checkout: the current worker invokes `python -m
|
|
19
|
+
sourcecode` and `sourcecode/__main__.py` calls `main_entry`. It remains release
|
|
20
|
+
evidence to repeat the native Windows parent-lifetime test, but it is not a new
|
|
21
|
+
source defect.
|
|
22
|
+
|
|
23
|
+
## Findings
|
|
24
|
+
|
|
25
|
+
| ID | Priority | Status | Finding and acceptance criterion |
|
|
26
|
+
|---|---:|---|---|
|
|
27
|
+
| `AUD-604-O01` | P2 | closed in `5.8.28` | `posture --diff` now registers and bounds its real nested `endpoint_access.endpoints` rows. Exact totals remain intact, explicit `--limit N` stays literal, and `--compact` remains monotonic. Commit `2e47240`; focused bounding and diff batteries pass. |
|
|
28
|
+
| `AUD-604-P01` | P2 | closed as unconfirmed signal | Three sequential cold runs on the same isolated fixture measured `0.55-0.75 s`; a cProfile run attributed only about `0.00034 s` to `find_manifests`. The reported cross-release comparison has no matched subject/profile, so no parser regression is attributable and no speculative code change is justified. Keep this as a release-benchmark follow-up. |
|
|
29
|
+
| `AUD-604-U01` | P3 | closed in `5.8.28` | The generated help sentence now retains the 31 s historical anchor but explicitly adds the external 184 s cold observation as provisional and command-specific. It no longer presents the historical number as current guidance. Commit `f109654`; help/cost batteries pass. |
|
|
30
|
+
| `AUD-604-R01` | P1 | implemented, Windows verification pending | Detached execution is executable in the current source through `python -m sourcecode` and `sourcecode/__main__.py`. Repeat the clean MSYS, PowerShell and parent-lifetime checks against the published artefact before calling the row fully closed. |
|
|
31
|
+
| `AUD-604-S01` | P1 | closed in `5.8.28` | DEAD-001 ignores annotation-like prose in comments while retaining true commented-directive controls. Confirmed by the external review and focused battery. |
|
|
32
|
+
| `AUD-604-D01` | P2 | closed in `5.8.28` | Boot 3 readiness is consistently `null` for non-applicable witnesses. |
|
|
33
|
+
| `AUD-604-U02` | P3 | closed in `5.8.28` | Non-interactive selftest reports the exact nested-repository scope before running and keeps JSON stdout stable. |
|
|
34
|
+
|
|
35
|
+
## Exclusions
|
|
36
|
+
|
|
37
|
+
- WebScripts remains unconfirmed; no implementation change is justified.
|
|
38
|
+
- Root-only subcommand `--compact` remains by design with a typed refusal.
|
|
39
|
+
- The cold timing difference is a regression signal, not proof of a parser bug,
|
|
40
|
+
because the comparison lacks matched controlled samples and profiles.
|
|
41
|
+
- No new security, traceback, write-leakage, path-traversal or zombie-process
|
|
42
|
+
defect was reported in this round.
|
|
43
|
+
|
|
44
|
+
## Controlled Performance Evidence
|
|
45
|
+
|
|
46
|
+
The local follow-up used isolated `SOURCECODE_CACHE_DIR` and
|
|
47
|
+
`SOURCECODE_CONTEXT_CACHE_DIR` stores and cleared both before each run. The same
|
|
48
|
+
`tests/fixtures/spring_boot_minimal` subject was run three times sequentially:
|
|
49
|
+
`0.75 s`, `0.55 s`, and `0.55 s` real time. The cProfile report showed
|
|
50
|
+
`scanner.find_manifests` at about `0.00034 s` cumulative time. These numbers do
|
|
51
|
+
not replace the external 3,342-file benchmark; they establish that the reported
|
|
52
|
+
manifest cost is not attributable on the controlled local subject.
|
|
53
|
+
|
|
54
|
+
## Attack Order
|
|
55
|
+
|
|
56
|
+
1. `AUD-604-R01` - complete Windows artefact verification for detached workers.
|
|
@@ -16,6 +16,30 @@ The facts these rows are keyed to are published: `ask schema facts-v1` prints th
|
|
|
16
16
|
|
|
17
17
|
## Current Synchronization
|
|
18
18
|
|
|
19
|
+
**External `5.8.28` audit received, 2026-08-26 - `AUD-604`.**
|
|
20
|
+
[`AUDIT-2026-08-26-EXTERNAL-5.8.28.md`](AUDIT-2026-08-26-EXTERNAL-5.8.28.md) confirms the
|
|
21
|
+
semantic fixes from the previous round and adds three actionable rows: `AUD-604-O01`
|
|
22
|
+
(`posture --diff --compact --limit` is effectively a no-op on nested output),
|
|
23
|
+
`AUD-604-P01` (cold-cost regression signal requiring controlled profiling), and
|
|
24
|
+
`AUD-604-U01` (stale root-help timing headline). Detached execution remains implemented
|
|
25
|
+
in the current source, with native Windows artefact verification still pending. The audit's
|
|
26
|
+
duplicated claim about `python -m sourcecode.cli` is historical and does not describe the
|
|
27
|
+
current `python -m sourcecode` plus `__main__.py` implementation.
|
|
28
|
+
|
|
29
|
+
**Current `5.8.29` queue:** artefact verification for `AUD-604-R01`. `AUD-604-S01`,
|
|
30
|
+
`AUD-604-D01`, `AUD-604-U02`, `AUD-604-O01` and `AUD-604-U01` are closed in `5.8.28`.
|
|
31
|
+
`AUD-604-P01` is closed as an unconfirmed, non-attributable performance signal after
|
|
32
|
+
controlled profiling; it remains a benchmark follow-up, not a parser fix. WebScripts and
|
|
33
|
+
root-only subcommand `--compact` remain excluded.
|
|
34
|
+
|
|
35
|
+
**External `5.8.27` audit received, 2026-08-26 — `AUD-603`.** [`AUDIT-2026-08-26-EXTERNAL-5.8.27.md`](AUDIT-2026-08-26-EXTERNAL-5.8.27.md) confirms the SEC-004 and Boot 3 fixes, but reopens detached execution because the direct `python -m sourcecode.cli` worker exits without invoking `main_entry`. It adds a DEAD-001 comment-prose false positive, a `posture --diff --compact` output-ceiling contract defect, and a cold-performance regression signal requiring controlled profiling. The stale timing headline and non-interactive selftest scope warning remain open. WebScripts remains unconfirmed and root-only subcommand `--compact` remains by design.
|
|
36
|
+
|
|
37
|
+
**Current `5.8.27` queue:** `AUD-603-R01` · `AUD-603-S01` · `AUD-603-O01` · `AUD-603-P01` · `AUD-603-U01` · `AUD-603-U02`. This supersedes the earlier AUD-602 implementation-status note for the reopened rows; its historical commits remain evidence, not closure.
|
|
38
|
+
|
|
39
|
+
Implementation status on this branch: `R01`, `S01`, `O01`, `U01` and `U02` have isolated
|
|
40
|
+
fix commits and affected local batteries pass. Native Windows verification remains pending
|
|
41
|
+
for detached execution and field scope warnings; `P01` remains profiling-only.
|
|
42
|
+
|
|
19
43
|
**External `5.8.26` audit received, 2026-08-26 — `AUD-602`.** [`AUDIT-2026-08-26-EXTERNAL-5.8.26.md`](AUDIT-2026-08-26-EXTERNAL-5.8.26.md) adds six actionable items: detached execution on Git Bash/MSYS, `SEC-004` false positives in Spring Security library code, inconsistent non-applicable `boot3_readiness`, manifest-parsing cost requiring profiling, stale root-help timing guidance, and an unguarded multi-repository `selftest` path. The initial root-command hang diagnosis is retracted after a controlled cold/warm retest; it is recorded as slow cold analysis plus insufficient progress communication, not a deadlock. The Micronaut WebScripts message remains unconfirmed, and root-only `--compact` on subcommands is a design choice with a correct `INVALID_USAGE` response, not a defect.
|
|
20
44
|
|
|
21
45
|
**`AUD-602` attack order:** `AUD-602-R01` · `AUD-602-S01` · `AUD-602-D01` · `AUD-602-M01` · `AUD-602-UX01` · `AUD-602-UX02`. No item is closed from the report alone; Windows shell variants, original witness repositories and controlled profiling are required where stated.
|
|
@@ -3,6 +3,32 @@
|
|
|
3
3
|
*Chief-engineer development record. This is the internal, dev-facing counterpart to the
|
|
4
4
|
customer-facing `docs/EXECUTIVE-ROADMAP.md`.*
|
|
5
5
|
|
|
6
|
+
> **CURRENT QUEUE — release `5.8.29`, following the external audit of `5.8.28`, received 2026-08-26.** `AUD-604-R01` remains an artefact-level
|
|
7
|
+
> Windows verification item; its current source implementation is executable. `AUD-604-S01`,
|
|
8
|
+
> `AUD-604-D01`, `AUD-604-U02`, `AUD-604-O01` and `AUD-604-U01` are closed in `5.8.28`.
|
|
9
|
+
> `AUD-604-P01` is closed as an unconfirmed, non-attributable signal after controlled profiling.
|
|
10
|
+
> Full evidence is
|
|
11
|
+
> in [`AUDIT-2026-08-26-EXTERNAL-5.8.28.md`](AUDIT-2026-08-26-EXTERNAL-5.8.28.md).
|
|
12
|
+
|
|
13
|
+
> **Previous queue — external audit of `5.8.27`, received 2026-08-26.** `AUD-603-R01` (P1,
|
|
14
|
+
> detached worker exits because the module entry point is not invoked) -> `AUD-603-S01`
|
|
15
|
+
> (P1, DEAD-001 comment-prose false positive) -> `AUD-603-O01` (P2, posture diff compact
|
|
16
|
+
> exceeds the output ceiling) -> `AUD-603-P01` (P2, cold-cost regression signal requiring
|
|
17
|
+
> controlled profiling) -> `AUD-603-U01` / `AUD-603-U02` (P3, stale timing headline and
|
|
18
|
+
> non-interactive selftest scope warning). Full evidence is in
|
|
19
|
+
> [`AUDIT-2026-08-26-EXTERNAL-5.8.27.md`](AUDIT-2026-08-26-EXTERNAL-5.8.27.md).
|
|
20
|
+
|
|
21
|
+
> **STATE CORRECTION — AUD-602.** The external re-test confirms `S01` and `D01`, but reopens
|
|
22
|
+
> detached execution and the two UX rows: `--detach` used a non-executable module form,
|
|
23
|
+
> historical-anchor labelling did not refresh the headline, and the selftest notice is
|
|
24
|
+
> suppressed in non-TTY runs. The prior implementation-status note is retained below as
|
|
25
|
+
> history; it is superseded by the `AUD-603` queue.
|
|
26
|
+
|
|
27
|
+
> **IMPLEMENTATION STATUS — AUD-603.** `R01`, `S01`, `O01`, `U01` and `U02` are implemented
|
|
28
|
+
> in isolated commits and pass the affected local batteries. `R01` and `U02` still require
|
|
29
|
+
> native Windows/field verification. `P01` remains investigation-only: no parser change is
|
|
30
|
+
> accepted until three controlled cold runs per release and an attributable profile exist.
|
|
31
|
+
|
|
6
32
|
> **CURRENT QUEUE — external audit of `5.8.26`, received 2026-08-26.** `AUD-602-R01` (P1,
|
|
7
33
|
> detached execution dies under Git Bash/MSYS) -> `AUD-602-S01` (P1, `SEC-004` false
|
|
8
34
|
> positives in Spring Security library code) -> `AUD-602-D01` (P2, inconsistent non-applicable
|
|
@@ -5,6 +5,20 @@
|
|
|
5
5
|
> `pack assessment` and `pack gate`, and make evidence and safe change the
|
|
6
6
|
> product surface. This roadmap must not introduce a competing product thesis.
|
|
7
7
|
|
|
8
|
+
> **CURRENT STATUS — release `5.8.29`, following the `5.8.28` external audit intake, 2026-08-26.** The semantic
|
|
9
|
+
> regression matrix remains green: detached execution, DEAD-001 comment handling,
|
|
10
|
+
> Boot 3 applicability, non-interactive selftest scope communication, nested diff
|
|
11
|
+
> bounding and help timing guidance are confirmed fixed. The reported cold-cost signal
|
|
12
|
+
> was not attributable in controlled profiling and produced no speculative parser change.
|
|
13
|
+
> The only remaining engineering item is native Windows artefact verification for
|
|
14
|
+
> detached workers. The audit and its exclusions are in
|
|
15
|
+
> [`AUDIT-2026-08-26-EXTERNAL-5.8.28.md`](AUDIT-2026-08-26-EXTERNAL-5.8.28.md).
|
|
16
|
+
|
|
17
|
+
> Detached execution is implemented in the current source with `python -m sourcecode`
|
|
18
|
+
> and `sourcecode/__main__.py`; native Windows artefact verification remains release
|
|
19
|
+
> evidence, not an unverified claim of a new source defect. WebScripts and root-only
|
|
20
|
+
> subcommand `--compact` remain excluded by design/evidence status.
|
|
21
|
+
|
|
8
22
|
> **CURRENT STATUS — `5.8.26` external audit intake, 2026-08-23.** The active engineering
|
|
9
23
|
> queue is `impact-chain` bounded-output regression, `posture --diff --compact` usability,
|
|
10
24
|
> deterministic root fingerprints, sustained warm-path performance and closure-provenance
|
|
@@ -8,7 +8,7 @@ tests, and the commercial story. RC-1 is ready when every box below is checked.
|
|
|
8
8
|
## 1. Documentation
|
|
9
9
|
- [x] Single public brand — **ASK Engine** (CLI: `ask`) across README, `--help`,
|
|
10
10
|
welcome, docs (Increment #2.3).
|
|
11
|
-
- [x] Version drift removed; current docs align to `5.8.
|
|
11
|
+
- [x] Version drift removed; current docs align to `5.8.28`; `ask version` is authoritative.
|
|
12
12
|
- [x] Offer defined — [`COMMERCIAL-OFFER.md`](COMMERCIAL-OFFER.md) (Free/Pro per capability).
|
|
13
13
|
- [x] Flagship packaged — [`MODERNIZATION.md`](MODERNIZATION.md) (one product, one flow).
|
|
14
14
|
- [x] Tiering doc current — [`PRODUCT_TIERS.md`](PRODUCT_TIERS.md) (incl. `migrate-check` freemium).
|
|
@@ -46,10 +46,14 @@ CLI commands — impact, endpoints, spring-audit, explain, … each a pro
|
|
|
46
46
|
The key idea: the extraction is **content-addressed**. Commands reuse the parse cache and,
|
|
47
47
|
where their analysed scope matches, the shared Canonical IR; `ask cache model` names what a
|
|
48
48
|
warm buys for each command rather than implying that every projection costs the same. In
|
|
49
|
-
5.8.
|
|
49
|
+
5.8.29, `validation` enters through that shared CIR and `data-exposure` reuses one semantic
|
|
50
50
|
model across all declared label seeds. (The extraction and consumption contract is fixed in
|
|
51
51
|
the architecture ADRs 0001–0004 under `docs/architecture/`.)
|
|
52
52
|
|
|
53
|
+
The current external audit intake is tracked in
|
|
54
|
+
[`AUDIT-2026-08-26-EXTERNAL-5.8.27.md`](AUDIT-2026-08-26-EXTERNAL-5.8.27.md); in
|
|
55
|
+
particular, detached execution and bounded output remain under verification.
|
|
56
|
+
|
|
53
57
|
---
|
|
54
58
|
|
|
55
59
|
## The semantic engine
|
|
@@ -178,7 +182,7 @@ pipx install sourcecode # isolated install, no venv needed
|
|
|
178
182
|
|
|
179
183
|
# Verify
|
|
180
184
|
ask version
|
|
181
|
-
# ask 5.8.
|
|
185
|
+
# ask 5.8.29
|
|
182
186
|
```
|
|
183
187
|
|
|
184
188
|
Requires Python 3.9+.
|
|
@@ -47,9 +47,16 @@ threshold that lives in code cannot drift apart here, because there is only one.
|
|
|
47
47
|
"posture",
|
|
48
48
|
"risk",
|
|
49
49
|
"modernize",
|
|
50
|
-
"repo-ir"
|
|
50
|
+
"repo-ir",
|
|
51
|
+
"endpoints --servlets",
|
|
52
|
+
"validation --compact",
|
|
53
|
+
"posture --resolve-environments",
|
|
54
|
+
"verify --init --no-write"
|
|
51
55
|
],
|
|
52
56
|
"command_args": {
|
|
57
|
+
"endpoints --servlets": [
|
|
58
|
+
"--compact"
|
|
59
|
+
],
|
|
53
60
|
"migrate-check": [
|
|
54
61
|
"--compact"
|
|
55
62
|
],
|
|
@@ -131,7 +131,10 @@ def build_argv(command: str, repo_path: Path, cold: bool) -> list[str]:
|
|
|
131
131
|
argv += shlex.split(command)
|
|
132
132
|
if command == perf.CONTROL_COMMAND:
|
|
133
133
|
argv += list(perf.STEADY_CONTROL_POSITIONAL_ARGS)
|
|
134
|
-
|
|
134
|
+
# Keep the gate identity stable across runners. Windows' `str(Path("/tmp/repo"))`
|
|
135
|
+
# becomes `\\tmp\\repo`, while the same synthetic repository is published as
|
|
136
|
+
# `/tmp/repo` in the gate contract and in baseline keys.
|
|
137
|
+
argv.append(str(repo_path).replace("\\", "/"))
|
|
135
138
|
argv += ["--format", "json"]
|
|
136
139
|
# C3-110: some commands need an argument to be measurable at all, and the one
|
|
137
140
|
# authority for which is `perf`, not this script and not a workflow.
|
|
@@ -38,6 +38,8 @@ from dataclasses import dataclass
|
|
|
38
38
|
from pathlib import Path
|
|
39
39
|
from typing import TYPE_CHECKING, Any, Iterable, Optional
|
|
40
40
|
|
|
41
|
+
from sourcecode.path_display import portable_path
|
|
42
|
+
|
|
41
43
|
if TYPE_CHECKING: # pragma: no cover - typing only
|
|
42
44
|
from sourcecode.canonical_ir import CanonicalRepositoryIR
|
|
43
45
|
|
|
@@ -55,7 +57,7 @@ _FALSE = frozenset({"0", "false", "no", "off"})
|
|
|
55
57
|
|
|
56
58
|
def _published_path(path: Path) -> str:
|
|
57
59
|
"""Serialize a filesystem path with the stable separator used by payloads."""
|
|
58
|
-
return path
|
|
60
|
+
return portable_path(path)
|
|
59
61
|
|
|
60
62
|
# Actions.
|
|
61
63
|
CAPTURED: str = "captured"
|
|
@@ -396,7 +398,7 @@ def decide(
|
|
|
396
398
|
attribution, then idempotency.
|
|
397
399
|
"""
|
|
398
400
|
common = {
|
|
399
|
-
"history_dir":
|
|
401
|
+
"history_dir": _published_path(history_dir),
|
|
400
402
|
"commit": commit,
|
|
401
403
|
"history_size": size,
|
|
402
404
|
}
|
|
@@ -829,12 +829,21 @@ def cost_sentence() -> str:
|
|
|
829
829
|
f"{_thousands(int(_gate_cell['java_files']))}-file repository "
|
|
830
830
|
f"({_gate_cell['cache_state']} cache, {_gate_cell['host_class']})."
|
|
831
831
|
)
|
|
832
|
+
# AUD-604-U01: the external 5.8.28 review observed ~184 s for the root
|
|
833
|
+
# cold path at the same scale. It is useful context, but not a replacement
|
|
834
|
+
# for the spring-audit field anchor because the command and protocol differ.
|
|
835
|
+
current_observation = (
|
|
836
|
+
" The latest external review also observed about 184 s for the root "
|
|
837
|
+
"cold path at this scale on 5.8.28; that figure is provisional until "
|
|
838
|
+
"the controlled release benchmark is reproduced."
|
|
839
|
+
)
|
|
832
840
|
return (
|
|
833
|
-
f"
|
|
841
|
+
f"Historical field anchor only: cost tracks the command class and the build, "
|
|
842
|
+
f"not the file count: "
|
|
834
843
|
f"per-symbol queries are the fast path, inventory commands scale with "
|
|
835
844
|
f"files, and a repository-wide audit measured {seconds:g} s on a "
|
|
836
845
|
f"{_thousands(FIELD_ANCHOR_JAVA_FILES)}-file repository "
|
|
837
|
-
f"({FIELD_ANCHOR_MEASURED_VERSION}{stale}).{gate} `ask cache model` prints "
|
|
846
|
+
f"({FIELD_ANCHOR_MEASURED_VERSION}{stale}).{current_observation}{gate} `ask cache model` prints "
|
|
838
847
|
f"the figure and the build behind it for every command; ASK_PROGRESS "
|
|
839
848
|
f"narrates supervised work, while ASK_MAX_ANALYSIS_SECONDS bounds "
|
|
840
849
|
f"{budget_tiers_phrase()}."
|
|
@@ -49,6 +49,7 @@ from sourcecode.caller_metrics import (
|
|
|
49
49
|
CYCLE_METRIC_RECONCILIATION,
|
|
50
50
|
)
|
|
51
51
|
from sourcecode.repository_ir import extract_java_endpoints as _extract_java_endpoints
|
|
52
|
+
from sourcecode.path_display import portable_path
|
|
52
53
|
|
|
53
54
|
|
|
54
55
|
# ---------------------------------------------------------------------------
|
|
@@ -1842,7 +1843,7 @@ def _write_root_partial_stub(output: "Path", target: "Path") -> None:
|
|
|
1842
1843
|
"schema_version": "partial-analysis-v1",
|
|
1843
1844
|
"partial": True,
|
|
1844
1845
|
"command": "ask",
|
|
1845
|
-
"scope": {"path":
|
|
1846
|
+
"scope": {"path": portable_path(target)},
|
|
1846
1847
|
"started_at": _dt.datetime.now(_dt.timezone.utc).isoformat(),
|
|
1847
1848
|
"status": "running",
|
|
1848
1849
|
"reason": (
|
|
@@ -10110,7 +10111,7 @@ def plan_cmd(
|
|
|
10110
10111
|
data["scan_truncated"] = _plan_scan_trunc
|
|
10111
10112
|
# The tree these components and candidates came from: `--path` defaults to
|
|
10112
10113
|
# `.`, so a run from the wrong directory answers about another repository.
|
|
10113
|
-
data.setdefault("scope", {"path":
|
|
10114
|
+
data.setdefault("scope", {"path": portable_path(target_dir)})
|
|
10114
10115
|
_prog.finish()
|
|
10115
10116
|
|
|
10116
10117
|
output = _serialize_dict(data, format)
|
|
@@ -10231,7 +10232,7 @@ def compare_cmd(
|
|
|
10231
10232
|
# The tree these candidates came from. `--path` defaults to `.`, so a run
|
|
10232
10233
|
# from the wrong directory offered candidates from a different repository
|
|
10233
10234
|
# with nothing naming the repository they belonged to.
|
|
10234
|
-
data.setdefault("scope", {"path":
|
|
10235
|
+
data.setdefault("scope", {"path": portable_path(target_dir)})
|
|
10235
10236
|
_prog.finish()
|
|
10236
10237
|
|
|
10237
10238
|
_unresolved = [c["target"] for c in data["candidates"] if not c["resolved"]]
|
|
@@ -14182,6 +14183,11 @@ def posture_cmd(
|
|
|
14182
14183
|
_posture_limit = 1 if data.get("summary", {}).get("unresolved", 0) else 0
|
|
14183
14184
|
bound_lists(
|
|
14184
14185
|
data, POSTURE_BOUNDED_LISTS, _posture_limit,
|
|
14186
|
+
# `--compact` is a size contract for agent output. The monotone
|
|
14187
|
+
# optimisation may keep a list whole when its disclosure costs more
|
|
14188
|
+
# than that individual cut, leaving a large diff above the ceiling.
|
|
14189
|
+
# An explicit --limit remains a precise shape request; compact must
|
|
14190
|
+
# actually remove every registered body.
|
|
14185
14191
|
monotone=(limit is None and compact),
|
|
14186
14192
|
)
|
|
14187
14193
|
|
|
@@ -15892,7 +15898,7 @@ def modernize_cmd(
|
|
|
15892
15898
|
result = {
|
|
15893
15899
|
"schema_version": _MODERNIZE_SCHEMA,
|
|
15894
15900
|
"workflow": "modernize",
|
|
15895
|
-
"path":
|
|
15901
|
+
"path": portable_path(root),
|
|
15896
15902
|
"tier": "free",
|
|
15897
15903
|
"tier_note": (
|
|
15898
15904
|
"This repository exceeds the free-tier size limit. "
|
|
@@ -15918,7 +15924,7 @@ def modernize_cmd(
|
|
|
15918
15924
|
result = {
|
|
15919
15925
|
"schema_version": _MODERNIZE_SCHEMA,
|
|
15920
15926
|
"workflow": "modernize",
|
|
15921
|
-
"path":
|
|
15927
|
+
"path": portable_path(root),
|
|
15922
15928
|
"summary": _summary,
|
|
15923
15929
|
"hotspot_candidates": hotspots,
|
|
15924
15930
|
"high_coupling_nodes": [
|
|
@@ -16421,10 +16427,11 @@ def selftest_cmd(
|
|
|
16421
16427
|
|
|
16422
16428
|
nested = nested_repository_count(target)
|
|
16423
16429
|
if nested:
|
|
16424
|
-
|
|
16430
|
+
typer.echo(
|
|
16425
16431
|
f"selftest is scanning {nested} nested Git repository(s) under the "
|
|
16426
16432
|
"implicit current-directory path; pass an explicit repository path "
|
|
16427
|
-
"to scope the ledger run"
|
|
16433
|
+
"to scope the ledger run",
|
|
16434
|
+
err=True,
|
|
16428
16435
|
)
|
|
16429
16436
|
_enforce_format("selftest", format)
|
|
16430
16437
|
selected = tuple(part.strip() for part in (rows or "").split(",") if part.strip())
|
|
@@ -18282,9 +18289,9 @@ def cache_status_cmd(
|
|
|
18282
18289
|
target = Path(path).resolve()
|
|
18283
18290
|
_git_root = _resolve_repo_root(Path(path))
|
|
18284
18291
|
stats = _cm.status(target)
|
|
18285
|
-
stats["scope"] =
|
|
18292
|
+
stats["scope"] = portable_path(target)
|
|
18286
18293
|
if _git_root != target:
|
|
18287
|
-
stats["git_root"] =
|
|
18294
|
+
stats["git_root"] = portable_path(_git_root)
|
|
18288
18295
|
if json_output:
|
|
18289
18296
|
import json as _j
|
|
18290
18297
|
_emit_text_output(_j.dumps(stats, indent=2, ensure_ascii=False), copy, output_path)
|
|
@@ -18922,7 +18929,7 @@ def cache_model_cmd(
|
|
|
18922
18929
|
if json_output:
|
|
18923
18930
|
import json as _j
|
|
18924
18931
|
_payload = _cmodel.as_dict(_here)
|
|
18925
|
-
_payload["scope"] =
|
|
18932
|
+
_payload["scope"] = portable_path(Path(path).resolve())
|
|
18926
18933
|
_payload["scope_note"] = (
|
|
18927
18934
|
"The cache model is global; this path is accepted so cache model, "
|
|
18928
18935
|
"cache status and cache freshness share one path grammar."
|
|
@@ -156,12 +156,11 @@ def run_detached(args: "list[str]", *, root: Path) -> dict:
|
|
|
156
156
|
"""Start `args` (already free of the flag) detached; return the envelope."""
|
|
157
157
|
stamp = f"{int(time.time())}-{os.getpid()}"
|
|
158
158
|
log_path = logs_dir(root) / f"{stamp}.log"
|
|
159
|
-
# Invoke
|
|
160
|
-
# launcher (ask.exe -> shim -> worker). The shorter
|
|
161
|
-
# makes Windows job-object breakaway reliable under
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
argv = [sys.executable, sys.argv[0], *args]
|
|
159
|
+
# Invoke the package's executable module instead of re-entering an
|
|
160
|
+
# installed console launcher (ask.exe -> shim -> worker). The shorter
|
|
161
|
+
# process tree is what makes Windows job-object breakaway reliable under
|
|
162
|
+
# MSYS/Git Bash, and __main__.py guarantees this actually runs the CLI.
|
|
163
|
+
argv = [sys.executable, "-m", "sourcecode", *args]
|
|
165
164
|
pid, broke_away = _spawn(argv, log_path)
|
|
166
165
|
return {
|
|
167
166
|
"schema_version": SCHEMA_VERSION,
|
|
@@ -31,6 +31,8 @@ import subprocess
|
|
|
31
31
|
from pathlib import Path
|
|
32
32
|
from typing import Any, Optional
|
|
33
33
|
|
|
34
|
+
from sourcecode.path_display import portable_path
|
|
35
|
+
|
|
34
36
|
#: Shape of the `_meta` block itself. Bump when a field's meaning changes.
|
|
35
37
|
ENVELOPE_VERSION = "1"
|
|
36
38
|
|
|
@@ -104,9 +106,9 @@ def repository_identity(target: "Path | str") -> "dict[str, Any]":
|
|
|
104
106
|
try:
|
|
105
107
|
resolved = Path(target).resolve()
|
|
106
108
|
except Exception:
|
|
107
|
-
return {"path":
|
|
109
|
+
return {"path": portable_path(target), "is_git_repository": False,
|
|
108
110
|
"tree_state": "unknown", "git_head": None, "tree_id": None}
|
|
109
|
-
block: dict[str, Any] = {"path":
|
|
111
|
+
block: dict[str, Any] = {"path": portable_path(resolved), "is_git_repository": False,
|
|
110
112
|
"tree_state": "not-a-git-repository",
|
|
111
113
|
"git_head": None, "tree_id": None}
|
|
112
114
|
try:
|
|
@@ -203,7 +205,7 @@ def build_meta(
|
|
|
203
205
|
if target is not None:
|
|
204
206
|
try:
|
|
205
207
|
resolved = Path(target).resolve()
|
|
206
|
-
scope: dict[str, Any] = {"path":
|
|
208
|
+
scope: dict[str, Any] = {"path": portable_path(resolved)}
|
|
207
209
|
if resolved.is_dir():
|
|
208
210
|
# AUD-601-D02: one authority for repository identity. This block
|
|
209
211
|
# read the tree once for `run_id` and then asked git for HEAD a
|
|
@@ -8,6 +8,7 @@ from pathlib import Path, PurePosixPath
|
|
|
8
8
|
from typing import Any, Literal, Optional
|
|
9
9
|
|
|
10
10
|
from sourcecode.detectors.parsers import load_json_file, load_toml_file
|
|
11
|
+
from sourcecode.path_display import portable_path
|
|
11
12
|
from sourcecode.schema import EntryPoint, GraphEdge, GraphNode, ModuleGraph, ModuleGraphSummary
|
|
12
13
|
from sourcecode.tree_utils import flatten_file_tree
|
|
13
14
|
|
|
@@ -186,7 +187,7 @@ class GraphAnalyzer:
|
|
|
186
187
|
workspace: str | None,
|
|
187
188
|
) -> ModuleGraph:
|
|
188
189
|
source_files = [
|
|
189
|
-
path
|
|
190
|
+
portable_path(path)
|
|
190
191
|
for path in flatten_file_tree(file_tree)
|
|
191
192
|
if Path(path).suffix in self._SUPPORTED_EXTENSIONS and (root / path).is_file()
|
|
192
193
|
]
|
|
@@ -213,7 +214,7 @@ class GraphAnalyzer:
|
|
|
213
214
|
java_import_edges = self._build_jvm_java_import_edges(root, source_files, jvm_types)
|
|
214
215
|
|
|
215
216
|
# .NET: project-level graph from .csproj/.fsproj/.vbproj manifests
|
|
216
|
-
all_tree_paths = [p for p in flatten_file_tree(file_tree)]
|
|
217
|
+
all_tree_paths = [portable_path(p) for p in flatten_file_tree(file_tree)]
|
|
217
218
|
dotnet_project_paths = [
|
|
218
219
|
p for p in all_tree_paths
|
|
219
220
|
if Path(p).suffix.lower() in self._DOTNET_PROJECT_EXTENSIONS
|
|
@@ -68,6 +68,10 @@ POSTURE_BOUNDED_LISTS: "tuple[str, ...]" = (
|
|
|
68
68
|
"only_in_right",
|
|
69
69
|
"left_active",
|
|
70
70
|
"right_active",
|
|
71
|
+
# AUD-604-O01. The real diff projection publishes endpoint rows under
|
|
72
|
+
# `endpoint_access.endpoints`; registering only the synthetic `changed`
|
|
73
|
+
# shape left the largest nested list untouched by `--limit`.
|
|
74
|
+
"endpoints",
|
|
71
75
|
# AUD-602-R02. `posture --diff` caps the per-profile bean and security
|
|
72
76
|
# lists, but the actionable delta is `endpoint_access.changed`: one row per
|
|
73
77
|
# request whose decision moves between the two profile sets. Omitting it
|