sourcecode 5.9.30__tar.gz → 5.9.31__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sourcecode-5.9.30 → sourcecode-5.9.31}/CHANGELOG.md +11 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/PKG-INFO +3 -3
- {sourcecode-5.9.30 → sourcecode-5.9.31}/README.md +2 -2
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/USER_GUIDE.md +1 -1
- sourcecode-5.9.31/docs/investigations/2026-09-11-ask-mcp-telemetry.md +117 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/privacy.md +13 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/pyproject.toml +1 -1
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/cli.py +11 -1
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/release_info.py +1 -1
- {sourcecode-5.9.30 → sourcecode-5.9.31}/supabase/sql/telemetry_events.sql +2 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/.github/workflows/windows-battery.yml +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/.github/workflows/windows-regression.yml +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/.gitignore +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/.ruff.toml +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/CLAUDE.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/CODE_OF_CONDUCT.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/CONTRIBUTING.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/LICENSE +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/NOTICE +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/SECURITY.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-28-EXTERNAL-5.9.10.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.16.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.17.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-08-31-REMEDIATION-5.9.18.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-09-01-ALTERNATIVE-5.9.23.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-09-01-EXTERNAL-5.9.22.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-09-01-EXTERNAL-5.9.23.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-09-02-ALTERNATIVE-5.9.25.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-09-02-ALTERNATIVE-5.9.27.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-09-02-ALTERNATIVE-5.9.28.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-09-02-ALTERNATIVE-5.9.29.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-09-02-EXTERNAL-5.9.25.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-09-02-EXTERNAL-5.9.26.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-2026-09-02-EXTERNAL-5.9.29.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/CACHE.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/DEFECT-LEDGER.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/DEMO-5MIN.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/DEVELOPMENT-ROADMAP.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/EXECUTIVE-ROADMAP.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/MANUAL-USUARIO.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/PRODUCT-ROUTE.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/PRODUCT_TIERS.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/RD-JVM-ASK-TRIAGE-2026-08-31.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/RELEASE-CHECKLIST.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/RELEASE-VERIFICATION.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-assessment-report.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-pack-manifest.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/overview.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/commercial-pipeline-audit.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/contracts.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/licensing-schema.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/migrate-check.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/pack-gate-github-actions.yml +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/pack-gate-gitlab.yml +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/README.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/5.9.22/petclinic__ask__cold.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/5.9.22/petclinic__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/corpus-testing-2026-08-22.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/posture.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/schema.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/hatch_build.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/scripts/context_cost_harness.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/scripts/perf_gate.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/scripts/perf_harness.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/scripts/test_fast.sh +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/scripts/windows_reliability_matrix.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/__main__.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/access_drift.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/analysis_budget.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/answer_bounds.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/audit_clusters.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/audit_recipe.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/audit_report.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/audit_since.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/audit_verify.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/baseline_attestation.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/breaking_changes.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/build_modules.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/build_stamp.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/c4_render.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/cache.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/cache_model.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/cache_observation.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/ci_output.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/classifier.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/click_runtime.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/concurrency.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/context_graph.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/cve_feed.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/cve_reachability.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/defect_classes/__init__.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/defect_classes/registry.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/empty_answer_diagnostics.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/empty_reach.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/endpoint_disposition.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/explain_endpoint.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/field_deprecations.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/findings_baseline.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/functional_routes.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/github_diff.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/inflight.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/intent_router.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/jvm_inventory.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/license.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/manifest_cache.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/migrate_check.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/migration_apply.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/output_bounds.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/output_ceiling.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/output_sink.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/pack_manifest.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/packs.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/parallel.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/parse_cache.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/path_display.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/path_filters.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/phased_run.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/posture.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/pr_risk.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/product_info.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/progress.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/regress.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/regulatory_pack.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/remediation_diff.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/remediation_flow.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/remediation_report.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/repository_ir.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/resource_budget.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/risk.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/risk_model.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/sarif_emit.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/schema_producers.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/schema_registry.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/selection_contract.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/self_audit.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/selftest.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/servlet_surface.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/timeline.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/timeline_cache.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/vex.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/watch_loop.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/wired_surface.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/supabase/functions/README.md +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.9.30 → sourcecode-5.9.31}/supabase/sql/licensing_schema.sql +0 -0
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.9.31] — 2026-09-12
|
|
4
|
+
|
|
5
|
+
*Patch release correcting MCP/CLI telemetry outcomes and the telemetry schema.*
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Successful Click exits no longer appear as failed `execution_completed` events.
|
|
10
|
+
Nonzero exits and unhandled exceptions retain `success=false` and emit only
|
|
11
|
+
the exception class as `error_kind`.
|
|
12
|
+
- The telemetry schema now declares the MCP `tool` column used by the collector.
|
|
13
|
+
|
|
3
14
|
## [5.9.30] — 2026-09-02
|
|
4
15
|
|
|
5
16
|
*A full pass over the open queue from the two 5.9.29 field audits. Nine rows
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 5.9.
|
|
3
|
+
Version: 5.9.31
|
|
4
4
|
Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/HarounDominique/sourcecode
|
|
6
6
|
Project-URL: Repository, https://github.com/HarounDominique/sourcecode
|
|
@@ -59,7 +59,7 @@ Description-Content-Type: text/markdown
|
|
|
59
59
|
> question. All analysis is local and deterministic; see [Privacy](#configuration--privacy)
|
|
60
60
|
> before inspecting a repository whose telemetry policy you need to control.
|
|
61
61
|
|
|
62
|
-

|
|
63
63
|

|
|
64
64
|
|
|
65
65
|
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
|
|
@@ -290,7 +290,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
290
290
|
# pip / pipx
|
|
291
291
|
pipx install sourcecode # or: pip install sourcecode
|
|
292
292
|
|
|
293
|
-
ask version # ask 5.9.
|
|
293
|
+
ask version # ask 5.9.31 — and, on a build that has aged,
|
|
294
294
|
# how many releases have probably shipped since
|
|
295
295
|
```
|
|
296
296
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
> question. All analysis is local and deterministic; see [Privacy](#configuration--privacy)
|
|
11
11
|
> before inspecting a repository whose telemetry policy you need to control.
|
|
12
12
|
|
|
13
|
-

|
|
14
14
|

|
|
15
15
|
|
|
16
16
|
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
|
|
@@ -241,7 +241,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
241
241
|
# pip / pipx
|
|
242
242
|
pipx install sourcecode # or: pip install sourcecode
|
|
243
243
|
|
|
244
|
-
ask version # ask 5.9.
|
|
244
|
+
ask version # ask 5.9.31 — and, on a build that has aged,
|
|
245
245
|
# how many releases have probably shipped since
|
|
246
246
|
```
|
|
247
247
|
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Investigación: resultados ASK por MCP del 11 de septiembre de 2026
|
|
2
|
+
|
|
3
|
+
Investigado el 12 de septiembre de 2026. Código histórico: release 5.8.20,
|
|
4
|
+
commit `0370f9c`. Contraste: checkout 5.9.30. Datos del incidente: las ocho filas
|
|
5
|
+
aportadas por el usuario; no se ha accedido al despliegue ni a la base de datos.
|
|
6
|
+
|
|
7
|
+
## Conclusión
|
|
8
|
+
|
|
9
|
+
**Los cuatro `execution_completed success=false` no demuestran cuatro fallos.**
|
|
10
|
+
La instrumentación confunde la salida normal de Click con una excepción de error.
|
|
11
|
+
El defecto existe tanto en 5.8.20 como en el checkout 5.9.30 anterior a esta corrección.
|
|
12
|
+
|
|
13
|
+
La lectura más compatible con el código es actividad MCP con tres resultados de
|
|
14
|
+
herramienta marcados como correctos y uno como error, junto con cuatro ejecuciones
|
|
15
|
+
CLI internas cuya medición de éxito está dañada. La atribución de las filas
|
|
16
|
+
`command_executed / mcp` a herramientas requiere confirmar qué colector estaba
|
|
17
|
+
desplegado: el colector antiguo transforma exactamente así los eventos MCP.
|
|
18
|
+
No es posible emparejar inequívocamente cada fila interna con una herramienta.
|
|
19
|
+
|
|
20
|
+
El final de la tabla no prueba abandono, desinstalación ni un cierre del servidor.
|
|
21
|
+
Una instalación anónima tampoco identifica por sí sola a una persona.
|
|
22
|
+
|
|
23
|
+
## Evidencia confirmada
|
|
24
|
+
|
|
25
|
+
1. En `src/sourcecode/cli.py`, `_get_command_with_preprocessing()._cmd_main()`
|
|
26
|
+
captura `BaseException`, pone `success=False` y vuelve a lanzar la excepción.
|
|
27
|
+
Click termina las invocaciones correctas en modo standalone con `SystemExit(0)`.
|
|
28
|
+
`CliRunner` recoge esa salida como código 0, pero el evento ya se emitió como fallo.
|
|
29
|
+
Esto también ocurre dentro de `src/sourcecode/mcp/runner.py`.
|
|
30
|
+
2. `cmd=analyze` es una familia amplia. El wrapper también usa ese valor para
|
|
31
|
+
`prepare-context`, `version` y otros comandos. El campo `command` aporta la
|
|
32
|
+
distinción si el colector lo conserva; no estaba incluido en la tabla recibida.
|
|
33
|
+
3. En 5.8.20, `get_delta` invoca `prepare-context delta … --since REF`, mientras que
|
|
34
|
+
`get_compact_context(git_context=True)` invoca `… --compact --git-context`.
|
|
35
|
+
Por tanto, los flags encajan con llamadas MCP documentadas, sin indicar por sí
|
|
36
|
+
solos que el agente inventase argumentos o usase mal la CLI.
|
|
37
|
+
4. El hook de MCP emite `mcp_tool_invoked`, con `cmd=mcp` y el resultado de la
|
|
38
|
+
herramienta. El cliente 5.8.20 permite ese evento. El colector antiguo
|
|
39
|
+
(`41c3e1a`) no lo permite y aplica `event: pick(p.event, EVENTS, "command_executed")`.
|
|
40
|
+
Conserva `cmd` y `success`, pero pierde `tool` y `command`.
|
|
41
|
+
El colector del repositorio actualizado (`44834aa`) sí permite ese evento.
|
|
42
|
+
**Colector desplegado desactualizado: inferencia fuerte, no comprobación remota.**
|
|
43
|
+
5. El wrapper CLI no enviaba `error_kind` ni el número de archivos.
|
|
44
|
+
Así se explican `error_kind=null` y `repo_size=unknown` incluso con un análisis
|
|
45
|
+
correcto; no son evidencias de que el repositorio no llegase a abrirse.
|
|
46
|
+
6. Los eventos se envían en hilos independientes, con timeout y sin reintentos.
|
|
47
|
+
`received_at` es recepción, no inicio de ejecución. Puede haber pérdidas y
|
|
48
|
+
cambios de orden; no permite reconstruir con certeza la secuencia de llamadas.
|
|
49
|
+
|
|
50
|
+
## Reproducción
|
|
51
|
+
|
|
52
|
+
Sobre el código histórico, un repositorio temporal con dos commits y el recorrido
|
|
53
|
+
real `FastMCP Tool.run → herramienta → CliRunner` reproduce:
|
|
54
|
+
|
|
55
|
+
| Llamada | Resultado visible al agente | Evento CLI | Evento MCP |
|
|
56
|
+
|---|---|---|---|
|
|
57
|
+
| `get_delta(since="HEAD~1")` | Correcto, `success=true` | `success=false`, flags `--since` | `success=true` |
|
|
58
|
+
| `get_compact_context(git_context=True)` | Correcto, `success=true` | `success=false`, flags `--compact --git-context` | `success=true` |
|
|
59
|
+
| `get_delta(since="MISSING_REF")` | Error, `isError=true`, `EXECUTION_FAILED` | `success=false`, flags `--since` | `success=false` |
|
|
60
|
+
|
|
61
|
+
La reproducción local usa macOS y Python 3.14; el incidente es Linux/Python 3.12.
|
|
62
|
+
Confirma el defecto de instrumentación compartido, pero no reproduce el entorno,
|
|
63
|
+
repositorio ni argumentos exactos de aquella instalación.
|
|
64
|
+
|
|
65
|
+
## Qué pudo causar el fallo real
|
|
66
|
+
|
|
67
|
+
Una referencia Git no disponible reproduce un error real con los mismos flags.
|
|
68
|
+
También es relevante la selección automática de `get_delta`: prueba `origin/main`,
|
|
69
|
+
después `origin/master`, y finalmente usa `HEAD~1`. Ese último ref no existe en un
|
|
70
|
+
repositorio con un solo commit o un clon superficial sin padre disponible. Una
|
|
71
|
+
ruta errónea, permisos o una excepción interna son otras posibilidades.
|
|
72
|
+
|
|
73
|
+
No se conserva el valor de `--since`, el repositorio ni stderr por diseño. No hay
|
|
74
|
+
base para elegir una de esas causas como explicación del caso concreto. Tampoco
|
|
75
|
+
hay evidencia específica de incompatibilidad con Python 3.12 o Linux.
|
|
76
|
+
|
|
77
|
+
## Correcciones locales y comprobación operativa pendiente
|
|
78
|
+
|
|
79
|
+
- El wrapper distingue `SystemExit(0/None)` de salidas fallidas y conserva intacto
|
|
80
|
+
el comportamiento de Click. Para fallos emite solo la clase de excepción.
|
|
81
|
+
`SystemExit` no permite conocer por sí solo el motivo de un error CLI manejado.
|
|
82
|
+
- Cinco pruebas de regresión cubren salida correcta, ayuda, opción inválida,
|
|
83
|
+
excepción sin datos privados y resultado correcto por el runner MCP. Las cinco
|
|
84
|
+
fallaban antes de la corrección.
|
|
85
|
+
- El SQL declara y migra de forma idempotente `tool`: el colector ya intentaba
|
|
86
|
+
insertarlo, pero el esquema versionado no lo declaraba. Sin esa columna, desplegar
|
|
87
|
+
ese colector puede impedir inserciones. No se conoce el esquema remoto real.
|
|
88
|
+
- Estos cambios son locales: no se ha publicado una versión ni desplegado SQL o
|
|
89
|
+
función. Las instalaciones 5.8.20 seguirán enviando el indicador defectuoso.
|
|
90
|
+
|
|
91
|
+
Antes de usar métricas de éxito, comprobar la revisión de la función desplegada y
|
|
92
|
+
las columnas existentes; migrar el esquema antes de desplegar el colector actualizado.
|
|
93
|
+
No reinterpretar masivamente los falsos negativos históricos como éxitos: contienen
|
|
94
|
+
tanto ejecuciones correctas como errores reales. No sumar eventos CLI y MCP como
|
|
95
|
+
acciones independientes.
|
|
96
|
+
|
|
97
|
+
Consulta de solo lectura para ampliar las filas sin exigir que las columnas
|
|
98
|
+
`command` y `tool` ya existan:
|
|
99
|
+
|
|
100
|
+
```sql
|
|
101
|
+
select received_at, client_ts, event, cmd,
|
|
102
|
+
to_jsonb(t)->>'command' as command,
|
|
103
|
+
to_jsonb(t)->>'tool' as tool,
|
|
104
|
+
flags, success, error_kind, duration, v
|
|
105
|
+
from public.telemetry_events as t
|
|
106
|
+
where received_at >= timestamptz '2026-09-11 00:00:00+00'
|
|
107
|
+
and received_at < timestamptz '2026-09-12 00:00:00+00'
|
|
108
|
+
and session = '03ff2232'
|
|
109
|
+
and install_id = '62d2d283-7369-476f-8828-3cd9f57169b3'
|
|
110
|
+
order by received_at;
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Para versiones publicadas con la corrección, contar éxito mediante
|
|
114
|
+
`event='execution_completed' AND success IS TRUE` para invocaciones CLI, o
|
|
115
|
+
`event='mcp_tool_invoked' AND success IS TRUE` para herramientas MCP, manteniendo
|
|
116
|
+
separados ambos indicadores. Hasta confirmar la versión desplegada del colector,
|
|
117
|
+
`command_executed / mcp` debe tratarse como señal heredada, no como arranques del servidor.
|
|
@@ -65,6 +65,19 @@ When telemetry is enabled, these fields are sent per command invocation:
|
|
|
65
65
|
| `tool` | `get_compact_context` | MCP tool name only, on `mcp_tool_invoked` events (see below) |
|
|
66
66
|
| `session` | `a3f2c1b0` | 8-char random hex, ephemeral, never persisted |
|
|
67
67
|
|
|
68
|
+
### Interpreting execution outcomes
|
|
69
|
+
|
|
70
|
+
`execution_completed` means the CLI invocation ended. It is not itself a success
|
|
71
|
+
event. Successful process exits (`SystemExit(0)` or `SystemExit(None)`) must record
|
|
72
|
+
`success=true`; nonzero exits and unhandled exceptions record `success=false` and
|
|
73
|
+
only the exception class in `error_kind`, never its message.
|
|
74
|
+
|
|
75
|
+
Historical warning: ASK 5.8.20, and the unpatched 5.9.30 source, recorded successful
|
|
76
|
+
Click exits as failures. Those `execution_completed.success=false` rows cannot be
|
|
77
|
+
used to calculate a failure rate or retrospectively relabelled as successes.
|
|
78
|
+
MCP tool outcomes are a separate event stream; do not count both streams as
|
|
79
|
+
independent user actions. See [the September 11 investigation](investigations/2026-09-11-ask-mcp-telemetry.md).
|
|
80
|
+
|
|
68
81
|
### MCP tool invocations
|
|
69
82
|
|
|
70
83
|
When ASK Engine runs as an MCP server (`ask mcp serve`), each tool call records one
|
|
@@ -4897,10 +4897,19 @@ def _get_command_with_preprocessing(typer_instance: Any) -> Any:
|
|
|
4897
4897
|
started = time.monotonic()
|
|
4898
4898
|
command = _telemetry_command(args)
|
|
4899
4899
|
success = True
|
|
4900
|
+
error_kind = None
|
|
4900
4901
|
try:
|
|
4901
4902
|
return _orig_cmd_main(args=args, **kwargs)
|
|
4902
|
-
except
|
|
4903
|
+
except SystemExit as exc:
|
|
4904
|
+
# Click uses SystemExit(0) even after successful CLI/MCP calls.
|
|
4905
|
+
# Preserve its exit while recording the outcome, not the exception.
|
|
4906
|
+
success = exc.code is None or exc.code == 0
|
|
4907
|
+
if not success:
|
|
4908
|
+
error_kind = type(exc).__name__
|
|
4909
|
+
raise
|
|
4910
|
+
except BaseException as exc:
|
|
4903
4911
|
success = False
|
|
4912
|
+
error_kind = type(exc).__name__
|
|
4904
4913
|
raise
|
|
4905
4914
|
finally:
|
|
4906
4915
|
try:
|
|
@@ -4912,6 +4921,7 @@ def _get_command_with_preprocessing(typer_instance: Any) -> Any:
|
|
|
4912
4921
|
flags=_telemetry_flags(args),
|
|
4913
4922
|
duration_s=time.monotonic() - started,
|
|
4914
4923
|
success=success,
|
|
4924
|
+
error_kind=error_kind,
|
|
4915
4925
|
)
|
|
4916
4926
|
except Exception:
|
|
4917
4927
|
pass
|
|
@@ -27,7 +27,7 @@ from typing import Any, Optional
|
|
|
27
27
|
#: The date `__version__` was released, from that version's CHANGELOG entry.
|
|
28
28
|
#: `tests/test_release_info.py` fails the build if the two disagree, so this is
|
|
29
29
|
#: a copy of a fact rather than a second authority for it.
|
|
30
|
-
RELEASE_DATE = "2026-09-
|
|
30
|
+
RELEASE_DATE = "2026-09-12"
|
|
31
31
|
|
|
32
32
|
#: Releases per day, measured over the latest 30 CHANGELOG releases (the same
|
|
33
33
|
#: computation the test re-runs). The nine-day interval before 5.9.0 lowers
|
|
@@ -18,6 +18,7 @@ create table if not exists public.telemetry_events (
|
|
|
18
18
|
duration text, -- <1s | <5s | <15s | <60s | 60s+ | unknown
|
|
19
19
|
success boolean,
|
|
20
20
|
error_kind text, -- exception class name only
|
|
21
|
+
tool text, -- MCP tool identifier only; never arguments
|
|
21
22
|
feature text, -- gated feature / task name (closed set)
|
|
22
23
|
install_id uuid, -- stable anonymous install id (random, no PII)
|
|
23
24
|
session text -- ephemeral 8-char hex, NOT a stable user id
|
|
@@ -26,6 +27,7 @@ create table if not exists public.telemetry_events (
|
|
|
26
27
|
-- If the table already exists from an earlier deploy, add the column:
|
|
27
28
|
alter table public.telemetry_events add column if not exists install_id uuid;
|
|
28
29
|
alter table public.telemetry_events add column if not exists command text;
|
|
30
|
+
alter table public.telemetry_events add column if not exists tool text;
|
|
29
31
|
|
|
30
32
|
-- Common query axes: funnel by event, adoption by version, time series,
|
|
31
33
|
-- and unique-install / conversion / retention by install_id.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-assessment-deployment-evidence.md
RENAMED
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-build-closure-provenance.md
RENAMED
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-knowledge-provider-integration.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-p6-semantic-impact-engine.md
RENAMED
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-p6-semantic-integration-engine.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/DESIGN-robustness-security-inference.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md
RENAMED
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/REPORT-p8-flow-analyzer-migration.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/adr/0002-source-evidence-boundary.md
RENAMED
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/adr/0003-architectural-characterization.md
RENAMED
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/architecture/adr/0005-evidence-reconciliation.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md
RENAMED
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json
RENAMED
|
File without changes
|
{sourcecode-5.9.30 → sourcecode-5.9.31}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|