sourcecode 5.5.5__tar.gz → 5.6.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sourcecode-5.5.5 → sourcecode-5.6.1}/CHANGELOG.md +26 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/CONTRIBUTING.md +13 -2
- sourcecode-5.6.1/LICENSE +47 -0
- sourcecode-5.6.1/NOTICE +8 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/PKG-INFO +13 -4
- {sourcecode-5.5.5 → sourcecode-5.6.1}/README.md +6 -2
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/DEMO-5MIN.md +1 -1
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/DEVELOPMENT-ROADMAP.md +14 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/MANUAL-USUARIO.md +4 -2
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/PRODUCT_TIERS.md +1 -1
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/RELEASE-CHECKLIST.md +3 -3
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/USER_GUIDE.md +5 -2
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/commercial-pipeline-audit.md +1 -1
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/privacy.md +2 -1
- {sourcecode-5.5.5 → sourcecode-5.6.1}/pyproject.toml +12 -4
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/__init__.py +1 -1
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/cli.py +51 -34
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/parse_cache.py +5 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/path_filters.py +2 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/phased_run.py +2 -1
- sourcecode-5.6.1/src/sourcecode/product_info.py +22 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/repository_ir.py +40 -2
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/servlet_surface.py +40 -27
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/timeline.py +6 -1
- sourcecode-5.5.5/LICENSE +0 -186
- {sourcecode-5.5.5 → sourcecode-5.6.1}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/.github/workflows/perf-gate.yml +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/.gitignore +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/.ruff.toml +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/CLAUDE.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/SECURITY.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/CACHE.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/COMMERCIAL-OFFER.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/CUSTOMER-VALIDATION.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/DEFECT-LEDGER.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/EXECUTION-PLAN-12MO.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/EXECUTIVE-ROADMAP.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/MODERNIZATION.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/PRODUCT_AUDIT.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/PRODUCT_IDENTITY.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/RC1-CHECKLIST.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/EPV-p6-class-typeref.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/adr/0001-semantic-ir.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/adr/0006-performance-harness.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/adr/0007-composition-semantics.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/adr/0008-answer-coherence.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/consumer-disposition-inventory.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/overview.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/product-architecture-review.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/product-strategy-layering.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/architecture/semantic-ir-roadmap.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/baseline-ci.yml +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/contracts-ci.yml +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/contracts.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/licensing-schema.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/migrate-check.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/README.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/REGRESSION-GATE.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/gate-latest/README.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/perf/baselines/reference-best/README.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/posture.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/pro-experience-audit.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/schema.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/spec/envelope-v1.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/docs/spring-audit-ci.yml +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/raw +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/scripts/compare_integration_engines.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/scripts/customer_smoke_test.sh +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/scripts/generate_jdk_exports.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/scripts/perf_gate.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/scripts/perf_harness.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/scripts/sync_gate_anchors.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/archetype.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/architectural_baseline.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/architectural_delta.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/audit_report.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/baseline_autocapture.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/bundled_docs.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/cache.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/cache_model.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/call_surface.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/caller_metrics.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/caller_reach.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/canonical_ir.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/chain_rules.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/change_plan.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/cir_graphs.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/classifier.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/client_calls.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/compare.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/constraint_diff.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/consumer_join.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/container_wiring.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/context_cache.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/context_graph.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/contract_diff.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/contract_init.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/data_exposure.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/data_labels.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/declarations.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/defect_identity.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/degradation.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/deployment_prefix.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detach.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/dynamic_argument_surface.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/endpoint_literals.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/endpoint_metrics.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/envelope.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/environment_resolution.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/error_schema.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/evidence_provider.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/execution_plan.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/explain.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/facts/__init__.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/facts/registry.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/file_chunker.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/filter_surface.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/format_contract.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/fqn_utils.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/gate_anchors.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/git_checkout.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/graph_evidence.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/hibernate_strat.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/identity_fallback.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/integration_coordinates.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/jdk_exports.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/license.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/manifest_cache.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/mcp/__init__.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/mcp/dependency_import.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/mcp/onboarding/applier.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/mcp/onboarding/backup.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/mcp/onboarding/detector.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/mcp/onboarding/planner.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/mcp/orchestrator.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/mcp/registry.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/mcp/runner.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/mcp/server.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/mcp_nudge.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/migrate_check.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/migration_blast.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/non_coverage.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/openapi_surface.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/openrewrite_recipe.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/output_budget.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/output_encoding.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/parallel.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/partial_contract.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/path_admission.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/perf.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/pipe_contract.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/posture.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/pr_comment_renderer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/pr_impact.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/prepare_context.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/progress.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/provenance.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/readiness_timeline.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/readonly.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/reconciliation.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/redactor.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/reference_facts.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/release_info.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/remedies.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/rename_refactor.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/__init__.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/context.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/errors.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/executor.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/planner.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/query.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/request.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/resolution.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/result.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/retriever.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/runtime.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/steps.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/steps_graph.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/steps_impact.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/steps_intf.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/steps_struct.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/retrieval/steps_txsec.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/ris.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/risk.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/rule_catalog.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/rule_pass.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/runs.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/sarif.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/scanner.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/schema.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/security_chain.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/security_config.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/security_config_scan.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/security_posture.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/semantic_impact_engine.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/semantic_integration_engine.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/semantic_services.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/serializer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/source_text.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/spring_event_topology.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/spring_findings.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/spring_impact.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/spring_model.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/spring_profiles.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/spring_properties.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/spring_security_audit.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/spring_semantic.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/spring_tx_analyzer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/sql_taint.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/target_admission.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/test_gap_ranking.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/test_sources.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/text_input.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/token_estimate.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/type_usage_surface.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/validation_inference.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/validation_surface.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/verify_edit.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/verify_repo.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/verify_rules.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/version_check.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/waivers.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/src/sourcecode/workspace.py +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/supabase/functions/README.md +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/supabase/functions/get-license/index.ts +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/supabase/functions/telemetry/index.ts +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/supabase/sql/license_event_ordering.sql +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/supabase/sql/licensing_schema.sql +0 -0
- {sourcecode-5.5.5 → sourcecode-5.6.1}/supabase/sql/telemetry_events.sql +0 -0
|
@@ -2,6 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [5.6.0] — 2026-08-13
|
|
6
|
+
|
|
7
|
+
### Legal And Provenance
|
|
8
|
+
- Began a prospective proprietary licensing model for ASK Engine. Releases up
|
|
9
|
+
to and including 5.5.6 remain Apache-2.0; this change does not revoke prior
|
|
10
|
+
grants.
|
|
11
|
+
- Added `NOTICE`, package authorship and proprietary license metadata, bundled
|
|
12
|
+
license notices, and explicit contribution IP terms.
|
|
13
|
+
- `ask version` now publishes product attribution, license identity and build
|
|
14
|
+
provenance fields. Release signing and legal review remain required before
|
|
15
|
+
third-party distribution.
|
|
16
|
+
|
|
17
|
+
## [5.5.6] — 2026-08-13
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
- `impact` now projects from the canonical IR, restoring typed static-method
|
|
21
|
+
callers without merging unrelated service-locator accessors.
|
|
22
|
+
- Legacy servlet descriptors account for mappings whose servlet declaration is
|
|
23
|
+
unavailable, and timeline Git metadata is decoded as UTF-8.
|
|
24
|
+
- Class FQNs remain class FQNs when used as impact seeds.
|
|
25
|
+
|
|
26
|
+
### Documentation
|
|
27
|
+
- Recorded the 5.5.5 re-audit balance, cache-measurement retractions, fixes,
|
|
28
|
+
and remaining output-budget, schema, timeline-cost, Git-basis and release
|
|
29
|
+
ledger work.
|
|
30
|
+
|
|
5
31
|
## [5.5.5] — 2026-08-13
|
|
6
32
|
|
|
7
33
|
**MSAS performance-audit corrections and read-only hygiene verification.**
|
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
Thank you for your interest in contributing. This document covers how to set up a development environment, run tests, and submit changes.
|
|
4
4
|
|
|
5
|
+
## Intellectual Property
|
|
6
|
+
|
|
7
|
+
ASK Engine 5.6.0 and later are proprietary. Do not submit code, documentation,
|
|
8
|
+
or other materials unless a written contribution, assignment, or services
|
|
9
|
+
agreement with Dominique Haroun states the applicable intellectual-property
|
|
10
|
+
terms. A pull request, issue, or discussion alone does not assign rights or
|
|
11
|
+
create a license.
|
|
12
|
+
|
|
5
13
|
---
|
|
6
14
|
|
|
7
15
|
## Code of Conduct
|
|
@@ -20,7 +28,7 @@ This project follows the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.
|
|
|
20
28
|
### Local setup
|
|
21
29
|
|
|
22
30
|
```bash
|
|
23
|
-
git clone https://github.com/
|
|
31
|
+
git clone https://github.com/HarounDominique/sourcecode
|
|
24
32
|
cd sourcecode
|
|
25
33
|
pip install -e ".[dev]"
|
|
26
34
|
```
|
|
@@ -237,4 +245,7 @@ Features that add flags without clear agent-oriented use cases will be declined.
|
|
|
237
245
|
|
|
238
246
|
## License
|
|
239
247
|
|
|
240
|
-
|
|
248
|
+
ASK Engine 5.6.0 and later are proprietary. Review the [LICENSE](LICENSE),
|
|
249
|
+
[NOTICE](NOTICE), and the Intellectual Property section above before proposing
|
|
250
|
+
work. Contributions require a separate written agreement; a pull request does
|
|
251
|
+
not itself assign rights or grant a license.
|
sourcecode-5.6.1/LICENSE
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
ASK Engine Proprietary License
|
|
2
|
+
Version 1.0, effective 2026-08-13
|
|
3
|
+
|
|
4
|
+
Copyright (c) 2026 Dominique Haroun. All rights reserved.
|
|
5
|
+
|
|
6
|
+
1. Scope
|
|
7
|
+
|
|
8
|
+
This license applies to ASK Engine version 5.6.1 and later, including its source
|
|
9
|
+
code, documentation, and distributed artifacts (the "Software"). It does not
|
|
10
|
+
alter the license of versions 5.5.6 and earlier, which were distributed under
|
|
11
|
+
the Apache License, Version 2.0. Grants made for those earlier versions remain
|
|
12
|
+
governed by their published license terms.
|
|
13
|
+
|
|
14
|
+
2. No Implied Grant
|
|
15
|
+
|
|
16
|
+
Except under a separate written agreement signed by Dominique Haroun, no right
|
|
17
|
+
or license is granted to use, copy, modify, distribute, sublicense, sell,
|
|
18
|
+
reverse engineer, or create derivative works of the Software. Possession of a
|
|
19
|
+
copy, access to a repository, or access to a distributed artifact does not
|
|
20
|
+
create an implied license.
|
|
21
|
+
|
|
22
|
+
3. Third-Party Materials
|
|
23
|
+
|
|
24
|
+
Third-party dependencies and materials included with the Software remain subject
|
|
25
|
+
to their own license terms. This license does not supersede those terms.
|
|
26
|
+
|
|
27
|
+
4. Trademarks
|
|
28
|
+
|
|
29
|
+
"ASK Engine", "ASK", and associated marks are identifiers of the Software.
|
|
30
|
+
No trademark license is granted except as required to identify an unmodified,
|
|
31
|
+
lawfully obtained copy of the Software.
|
|
32
|
+
|
|
33
|
+
5. No Warranty
|
|
34
|
+
|
|
35
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
36
|
+
IMPLIED, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE,
|
|
37
|
+
AND NON-INFRINGEMENT. TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE COPYRIGHT
|
|
38
|
+
HOLDER SHALL NOT BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY ARISING
|
|
39
|
+
FROM OR IN CONNECTION WITH THE SOFTWARE.
|
|
40
|
+
|
|
41
|
+
6. Contact
|
|
42
|
+
|
|
43
|
+
Commercial, evaluation, redistribution, and contribution terms require a
|
|
44
|
+
written agreement with Dominique Haroun.
|
|
45
|
+
|
|
46
|
+
This license text is an operational policy draft and must be reviewed by
|
|
47
|
+
qualified counsel before distribution to third parties.
|
sourcecode-5.6.1/NOTICE
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
ASK Engine
|
|
2
|
+
Copyright (c) 2026 Dominique Haroun. All rights reserved.
|
|
3
|
+
|
|
4
|
+
ASK Engine and its source code were originally created and developed by
|
|
5
|
+
Dominique Haroun.
|
|
6
|
+
|
|
7
|
+
This NOTICE applies to ASK Engine 5.6.1 and later. Earlier releases may carry
|
|
8
|
+
different license terms; see the license distributed with the applicable release.
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.6.1
|
|
4
4
|
Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
|
|
5
|
+
Project-URL: Homepage, https://github.com/HarounDominique/sourcecode
|
|
6
|
+
Project-URL: Repository, https://github.com/HarounDominique/sourcecode
|
|
7
|
+
Author: Dominique Haroun
|
|
8
|
+
License: Proprietary; see LICENSE
|
|
5
9
|
License-File: LICENSE
|
|
10
|
+
License-File: NOTICE
|
|
6
11
|
Keywords: agents,ai,codebase,context,developer-tools,llm
|
|
7
12
|
Classifier: Development Status :: 4 - Beta
|
|
8
13
|
Classifier: Environment :: Console
|
|
9
14
|
Classifier: Intended Audience :: Developers
|
|
10
|
-
Classifier: License ::
|
|
15
|
+
Classifier: License :: Other/Proprietary License
|
|
11
16
|
Classifier: Operating System :: OS Independent
|
|
12
17
|
Classifier: Programming Language :: Python :: 3
|
|
13
18
|
Classifier: Programming Language :: Python :: 3.9
|
|
@@ -42,9 +47,13 @@ Description-Content-Type: text/markdown
|
|
|
42
47
|
|
|
43
48
|
**Context · Impact · Migration · Architecture · Review — everything from one structural model.**
|
|
44
49
|
|
|
45
|
-

|
|
46
51
|

|
|
47
52
|
|
|
53
|
+
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.6.1 and
|
|
54
|
+
later are proprietary; see [LICENSE](LICENSE) and [NOTICE](NOTICE). Releases up
|
|
55
|
+
to and including 5.5.6 remain governed by their published Apache-2.0 terms.
|
|
56
|
+
|
|
48
57
|
> **ASK Engine** is the product. The CLI command is **`ask`**. The legacy **`sourcecode`**
|
|
49
58
|
> command still works as a deprecated alias (it prints a one-line notice and forwards to
|
|
50
59
|
> `ask`) and remains the Python/PyPI package name for now. The authoritative version is
|
|
@@ -126,7 +135,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
126
135
|
# pip / pipx
|
|
127
136
|
pipx install sourcecode # or: pip install sourcecode
|
|
128
137
|
|
|
129
|
-
ask version # ask 5.
|
|
138
|
+
ask version # ask 5.6.1 — and, on a build that has aged,
|
|
130
139
|
# how many releases have probably shipped since
|
|
131
140
|
```
|
|
132
141
|
|
|
@@ -4,9 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
**Context · Impact · Migration · Architecture · Review — everything from one structural model.**
|
|
6
6
|
|
|
7
|
-

|
|
8
8
|

|
|
9
9
|
|
|
10
|
+
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.6.1 and
|
|
11
|
+
later are proprietary; see [LICENSE](LICENSE) and [NOTICE](NOTICE). Releases up
|
|
12
|
+
to and including 5.5.6 remain governed by their published Apache-2.0 terms.
|
|
13
|
+
|
|
10
14
|
> **ASK Engine** is the product. The CLI command is **`ask`**. The legacy **`sourcecode`**
|
|
11
15
|
> command still works as a deprecated alias (it prints a one-line notice and forwards to
|
|
12
16
|
> `ask`) and remains the Python/PyPI package name for now. The authoritative version is
|
|
@@ -88,7 +92,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
88
92
|
# pip / pipx
|
|
89
93
|
pipx install sourcecode # or: pip install sourcecode
|
|
90
94
|
|
|
91
|
-
ask version # ask 5.
|
|
95
|
+
ask version # ask 5.6.1 — and, on a build that has aged,
|
|
92
96
|
# how many releases have probably shipped since
|
|
93
97
|
```
|
|
94
98
|
|
|
@@ -12,7 +12,7 @@ the same commits; exact counts drift as the upstream repos evolve.
|
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
pip install sourcecode # or: brew install sourcecode
|
|
15
|
-
ask version #
|
|
15
|
+
ask version # confirm the installed ASK Engine build
|
|
16
16
|
|
|
17
17
|
# Two public enterprise Java repos
|
|
18
18
|
git clone https://github.com/BroadleafCommerce/BroadleafCommerce
|
|
@@ -3,6 +3,20 @@
|
|
|
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
|
+
> **PHASE UPDATE 2026-08-14 (audit ASK Engine 5.5.6 corpus, published same day).
|
|
7
|
+
>** The latest field audit landed a tighter bug battery on the CLI surface and the
|
|
8
|
+
> endpoint census. The open items that matter for this round are now explicit in the
|
|
9
|
+
> work queue: **ASK-01** dynamic `OUTPUT_TOO_LARGE` hints that stop repeating flags
|
|
10
|
+
> already present, **ASK-02** endpoint coverage/gap reporting for functional WebFlux
|
|
11
|
+
> routes, **ASK-03** a single predictable output-budget policy, **ASK-05** parse-cache
|
|
12
|
+
> budget accounting that tells the truth about current overage, and **ASK-06**
|
|
13
|
+
> stderr-only provenance lines that break scripted captures. The UX-only items
|
|
14
|
+
> (**ASK-04**, **ASK-07**) stay tracked as follow-up work, not as this fix battery.
|
|
15
|
+
>
|
|
16
|
+
> **Fix order for this battery:** ASK-01 → ASK-02 → ASK-05 → ASK-06 → version bump.
|
|
17
|
+
> One commit per fix, no feature detours, and every change verified against a
|
|
18
|
+
> regression test before moving to the next row.
|
|
19
|
+
|
|
6
20
|
> **PHASE UPDATE 2026-08-12 (audit #29 — the re-audit of 5.4.0, published the
|
|
7
21
|
> same day, `age_days: 0`).** Same subject (`saint-server @ 3dde037`, branch
|
|
8
22
|
> `banyan-v2`, 3 342 Java / 3 574 endpoints), same protocol (`ASK_READONLY=1` +
|
|
@@ -916,7 +916,8 @@ ask mcp remove # quita la integración de todos los clientes configurados
|
|
|
916
916
|
ask activate SC-XXXX-XXXX-XXXX
|
|
917
917
|
```
|
|
918
918
|
|
|
919
|
-
Valida la clave contra el servidor de licencias y la guarda en `~/.
|
|
919
|
+
Valida la clave contra el servidor de licencias y la guarda en `~/.ask/license.json`.
|
|
920
|
+
Las instalaciones previas siguen pudiendo leerse desde `~/.sourcecode/license.json`.
|
|
920
921
|
- `LICENSE_KEY` (obligatorio): tu clave Pro.
|
|
921
922
|
|
|
922
923
|
### `auth` — autenticación
|
|
@@ -946,7 +947,8 @@ respuesta produce esa ausencia (`answered: false`).
|
|
|
946
947
|
```bash
|
|
947
948
|
ask version
|
|
948
949
|
```
|
|
949
|
-
Muestra la versión y
|
|
950
|
+
Muestra la versión, atribución, licencia y procedencia del build. `ask --version`
|
|
951
|
+
mantiene el alias breve de versión para compatibilidad.
|
|
950
952
|
|
|
951
953
|
### `telemetry` — telemetría anónima
|
|
952
954
|
|
|
@@ -64,7 +64,7 @@ Prerequisites: Supabase project + CLI (`supabase`), a Lemon Squeezy store, and t
|
|
|
64
64
|
- [ ] `users.status` → `inactive`.
|
|
65
65
|
- [ ] After the revalidation TTL (30 min; or point `SOURCECODE_SUPABASE_URL` at the live
|
|
66
66
|
project to force a fresh check), run smoke **Section C**: the Pro command on the large
|
|
67
|
-
repo exits **2** (access removed). `~/.
|
|
67
|
+
repo exits **2** (access removed). `~/.ask/license.json` is cleared.
|
|
68
68
|
|
|
69
69
|
## 10. Turn the paywall ON (last step)
|
|
70
70
|
- [ ] Only after 1–9 pass: set the default so Pro is enforced —
|
|
@@ -86,8 +86,8 @@ Decide **before** step 10:
|
|
|
86
86
|
set the real `SOURCECODE_PURCHASE_URL` above.
|
|
87
87
|
- [ ] **P1** — should `migrate-check` (the modernization buy-trigger) gate on large repos,
|
|
88
88
|
or stay free lead-gen? *(open product decision)*
|
|
89
|
-
- [x] **D1** — public brand unified to **ASK Engine** (CLI: `sourcecode`
|
|
90
|
-
- [x] **D2** — version
|
|
89
|
+
- [x] **D1** — public brand unified to **ASK Engine** (CLI: `ask`; `sourcecode` is a deprecated alias).
|
|
90
|
+
- [x] **D2** — version claims are verified against the build by `tests/test_published_version_claims.py`.
|
|
91
91
|
|
|
92
92
|
## Rollback
|
|
93
93
|
- [ ] Set `SOURCECODE_PRO_UNLOCK=1` (or revert the default) → everyone is Pro again;
|
|
@@ -136,7 +136,7 @@ pipx install sourcecode # isolated install, no venv needed
|
|
|
136
136
|
|
|
137
137
|
# Verify
|
|
138
138
|
ask version
|
|
139
|
-
# ask 5.
|
|
139
|
+
# ask 5.6.1
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
Requires Python 3.9+.
|
|
@@ -157,7 +157,10 @@ On success:
|
|
|
157
157
|
{"status": "activated", "plan": "pro", "features": ["impact", "review-pr", "fix-bug", "modernize", "generate-tests"]}
|
|
158
158
|
```
|
|
159
159
|
|
|
160
|
-
License is cached in `~/.
|
|
160
|
+
License is cached in `~/.ask/license.json` and re-validated every 24 hours.
|
|
161
|
+
The legacy `~/.sourcecode/license.json` location remains readable for existing
|
|
162
|
+
installations. Works offline after first activation — network errors keep the
|
|
163
|
+
cached state.
|
|
161
164
|
|
|
162
165
|
---
|
|
163
166
|
|
|
@@ -22,7 +22,7 @@ Estados: **[V]** implementado y validado · **[I]** implementado, no validado ·
|
|
|
22
22
|
│ │
|
|
23
23
|
▼ │
|
|
24
24
|
ask activate <key> ──POST /get-license──► supabase/functions/get-license ────┘
|
|
25
|
-
│ escribe ~/.
|
|
25
|
+
│ escribe ~/.ask/license.json (0600; ~/.sourcecode sigue siendo legado de lectura)
|
|
26
26
|
▼
|
|
27
27
|
Comandos Pro ──gates──► require_repo_or_pro / require_feature / check_delta_free_tier
|
|
28
28
|
│ revalidación cada 30 min (24 h en CI); offline-first
|
|
@@ -29,7 +29,8 @@ Precedence, highest first:
|
|
|
29
29
|
|
|
30
30
|
## Why telemetry exists
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
ASK Engine is a local analysis tool with no usage visibility by default.
|
|
33
|
+
Anonymous telemetry helps answer questions like:
|
|
33
34
|
|
|
34
35
|
- Which commands do developers actually use?
|
|
35
36
|
- What flag combinations are common?
|
|
@@ -4,18 +4,19 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "sourcecode"
|
|
7
|
-
version = "5.
|
|
7
|
+
version = "5.6.1"
|
|
8
8
|
description = "Persistent structural context and ultra-fast repeated analysis for AI coding agents"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
11
|
-
license
|
|
12
|
-
license-files = ["LICENSE"]
|
|
11
|
+
license = { text = "Proprietary; see LICENSE" }
|
|
12
|
+
license-files = ["LICENSE", "NOTICE"]
|
|
13
|
+
authors = [{ name = "Dominique Haroun" }]
|
|
13
14
|
keywords = ["ai", "llm", "agents", "context", "codebase", "developer-tools"]
|
|
14
15
|
classifiers = [
|
|
15
16
|
"Development Status :: 4 - Beta",
|
|
16
17
|
"Environment :: Console",
|
|
17
18
|
"Intended Audience :: Developers",
|
|
18
|
-
"License ::
|
|
19
|
+
"License :: Other/Proprietary License",
|
|
19
20
|
"Operating System :: OS Independent",
|
|
20
21
|
"Programming Language :: Python :: 3",
|
|
21
22
|
"Programming Language :: Python :: 3.9",
|
|
@@ -25,6 +26,7 @@ classifiers = [
|
|
|
25
26
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
26
27
|
"Topic :: Utilities",
|
|
27
28
|
]
|
|
29
|
+
|
|
28
30
|
dependencies = [
|
|
29
31
|
"typer>=0.24",
|
|
30
32
|
"pathspec>=1.0",
|
|
@@ -34,6 +36,10 @@ dependencies = [
|
|
|
34
36
|
"defusedxml>=0.7",
|
|
35
37
|
]
|
|
36
38
|
|
|
39
|
+
[project.urls]
|
|
40
|
+
Homepage = "https://github.com/HarounDominique/sourcecode"
|
|
41
|
+
Repository = "https://github.com/HarounDominique/sourcecode"
|
|
42
|
+
|
|
37
43
|
[project.scripts]
|
|
38
44
|
ask = "sourcecode.cli:main_entry"
|
|
39
45
|
sourcecode = "sourcecode.cli:main_entry" # deprecated compat alias — removed in a future major
|
|
@@ -78,6 +84,8 @@ packages = ["src/sourcecode"]
|
|
|
78
84
|
[tool.hatch.build.targets.wheel.force-include]
|
|
79
85
|
"docs/USER_GUIDE.md" = "sourcecode/_docs/USER_GUIDE.md"
|
|
80
86
|
"docs/DEFECT-LEDGER.md" = "sourcecode/_docs/DEFECT-LEDGER.md"
|
|
87
|
+
"LICENSE" = "sourcecode/_docs/LICENSE"
|
|
88
|
+
"NOTICE" = "sourcecode/_docs/NOTICE"
|
|
81
89
|
|
|
82
90
|
[tool.pytest.ini_options]
|
|
83
91
|
testpaths = ["tests"]
|
|
@@ -1392,6 +1392,23 @@ def _analysis_budget(command: str) -> dict[str, Any]:
|
|
|
1392
1392
|
}
|
|
1393
1393
|
|
|
1394
1394
|
|
|
1395
|
+
def _migrate_check_output_hint(*, compact: bool, min_severity: str) -> str:
|
|
1396
|
+
"""Build the output-size hint from the flags the caller already used."""
|
|
1397
|
+
ways_out: list[str] = []
|
|
1398
|
+
if not compact:
|
|
1399
|
+
ways_out.append("--compact (bounded decision summary, same report)")
|
|
1400
|
+
if min_severity != "high":
|
|
1401
|
+
ways_out.append("--min-severity high to drop low-severity findings")
|
|
1402
|
+
ways_out.append("--output FILE to save to disk")
|
|
1403
|
+
ways_out.append("--force to bypass this guard")
|
|
1404
|
+
prefix = (
|
|
1405
|
+
"No smaller inline variant is available with the current flags; "
|
|
1406
|
+
if compact and min_severity == "high"
|
|
1407
|
+
else "Use "
|
|
1408
|
+
)
|
|
1409
|
+
return prefix + ", ".join(ways_out) + "."
|
|
1410
|
+
|
|
1411
|
+
|
|
1395
1412
|
def _budget_evidence(command: str, path: "Optional[Path]") -> "tuple[Optional[str], Optional[str]]":
|
|
1396
1413
|
"""(measured anchors for this command, size of this repository) — or Nones.
|
|
1397
1414
|
|
|
@@ -1439,6 +1456,8 @@ def _enforce_analysis_budget(
|
|
|
1439
1456
|
return
|
|
1440
1457
|
source = budget.get("configured_source")
|
|
1441
1458
|
from sourcecode.phased_run import budget_provenance, budget_warning
|
|
1459
|
+
if not getattr(sys.stderr, "isatty", lambda: False)():
|
|
1460
|
+
return
|
|
1442
1461
|
|
|
1443
1462
|
if float(configured) >= recommended:
|
|
1444
1463
|
# C3-83: over the floor there is no advice to give, and there is still a
|
|
@@ -6311,9 +6330,8 @@ def impact_cmd(
|
|
|
6311
6330
|
|
|
6312
6331
|
_enforce_format("impact", format)
|
|
6313
6332
|
|
|
6314
|
-
from sourcecode.repository_ir import
|
|
6315
|
-
|
|
6316
|
-
)
|
|
6333
|
+
from sourcecode.repository_ir import find_java_files, compute_blast_radius
|
|
6334
|
+
from sourcecode.context_graph import ContextGraph
|
|
6317
6335
|
from sourcecode.output_budget import BUDGET_IMPACT
|
|
6318
6336
|
|
|
6319
6337
|
# Legacy-compat: old syntax was `impact <path> <target>`.
|
|
@@ -6366,9 +6384,16 @@ def impact_cmd(
|
|
|
6366
6384
|
return
|
|
6367
6385
|
|
|
6368
6386
|
_prog = Progress()
|
|
6369
|
-
_prog.start(f"building
|
|
6387
|
+
_prog.start(f"building CIR ({len(file_list)} files) for impact analysis")
|
|
6370
6388
|
try:
|
|
6371
|
-
|
|
6389
|
+
# `impact-chain` resolves callers from the canonical IR, whose typed body
|
|
6390
|
+
# facts contribute method-level call edges. Reading the legacy parse-only
|
|
6391
|
+
# IR here made `impact` miss static calls (including locator accessors).
|
|
6392
|
+
from sourcecode import context_cache as _ctxcache
|
|
6393
|
+
try:
|
|
6394
|
+
cir = _ctxcache.shared_cir(root, file_list, progress=_work_sink(_prog))
|
|
6395
|
+
except Exception:
|
|
6396
|
+
cir = ContextGraph.build(file_list, root, progress=_work_sink(_prog)).cir
|
|
6372
6397
|
finally:
|
|
6373
6398
|
_prog.finish()
|
|
6374
6399
|
|
|
@@ -6379,7 +6404,7 @@ def impact_cmd(
|
|
|
6379
6404
|
# skipped the budget when writing to a file (C2-2).
|
|
6380
6405
|
_to_file = output_path is not None
|
|
6381
6406
|
result = compute_blast_radius(
|
|
6382
|
-
|
|
6407
|
+
cir._raw_ir, target, max_depth=depth, list_limit=0 if _to_file else None, root=root
|
|
6383
6408
|
)
|
|
6384
6409
|
result = _apply_budget(result, BUDGET_IMPACT, label="impact", output_path=output_path)
|
|
6385
6410
|
if _misread and result.get("resolution") == "not_found":
|
|
@@ -9244,6 +9269,7 @@ def spring_audit_cmd(
|
|
|
9244
9269
|
_ris_sa(target, data)
|
|
9245
9270
|
except Exception:
|
|
9246
9271
|
pass
|
|
9272
|
+
output = _serialize_dict(data, format)
|
|
9247
9273
|
finally:
|
|
9248
9274
|
# C3-54: `done` must not claim the answer exists before it does. The
|
|
9249
9275
|
# field log showed `[ask] done (6.8m)` printed, then the process torn
|
|
@@ -9259,21 +9285,6 @@ def spring_audit_cmd(
|
|
|
9259
9285
|
)
|
|
9260
9286
|
elif format == "github-comment":
|
|
9261
9287
|
output = _render_spring_audit_github_comment(combined, min_severity)
|
|
9262
|
-
else:
|
|
9263
|
-
_full_data = combined.to_dict()
|
|
9264
|
-
_bounded_default = (
|
|
9265
|
-
not compact and output_path is None and format == "json" and not table
|
|
9266
|
-
and len(_json.dumps(_full_data, ensure_ascii=False).encode("utf-8")) > 50_000
|
|
9267
|
-
)
|
|
9268
|
-
data = combined.to_compact_dict() if compact or _bounded_default else _full_data
|
|
9269
|
-
if _bounded_default:
|
|
9270
|
-
data.pop("mode", None)
|
|
9271
|
-
data["default_output"] = "bounded"
|
|
9272
|
-
data.pop("compact_note", None)
|
|
9273
|
-
data["stdout_budget_note"] = (
|
|
9274
|
-
"Capped by the stdout payload budget; use --output <file> for the complete report."
|
|
9275
|
-
)
|
|
9276
|
-
output = _serialize_dict(data, format)
|
|
9277
9288
|
|
|
9278
9289
|
# F-AV: our own readers ask for the count under either spelling — the break
|
|
9279
9290
|
# is meant for a consumer that never asked whether the run finished.
|
|
@@ -11191,11 +11202,7 @@ def migrate_check_cmd(
|
|
|
11191
11202
|
"OUTPUT_TOO_LARGE",
|
|
11192
11203
|
f"Estimated output is ~{_mig_tokens_est // 1000}K tokens — too large for "
|
|
11193
11204
|
"most LLM context windows.",
|
|
11194
|
-
hint=(
|
|
11195
|
-
"Use --compact (bounded decision summary, same report), "
|
|
11196
|
-
"--min-severity high to drop low-severity findings, "
|
|
11197
|
-
"--output FILE to save to disk, or --force to bypass this guard."
|
|
11198
|
-
),
|
|
11205
|
+
hint=_migrate_check_output_hint(compact=compact, min_severity=min_severity),
|
|
11199
11206
|
expected="Output under 50K estimated tokens.",
|
|
11200
11207
|
)
|
|
11201
11208
|
raise typer.Exit(1)
|
|
@@ -12695,17 +12702,18 @@ def version_cmd(
|
|
|
12695
12702
|
copy: bool = _copy_option(),
|
|
12696
12703
|
output_path: Optional[Path] = _output_option(),
|
|
12697
12704
|
) -> None:
|
|
12698
|
-
"""Show version and
|
|
12705
|
+
"""Show version, attribution, license and build provenance.
|
|
12699
12706
|
|
|
12700
12707
|
Outputs human-readable text on interactive terminals.
|
|
12701
12708
|
Outputs structured JSON on non-TTY (MCP, pipes, scripts):
|
|
12702
12709
|
{"cli_version": "1.33.11", "mcp_schema_version": "1.33.11",
|
|
12703
|
-
"compatibility_schema_version": "1.0"}
|
|
12710
|
+
"compatibility_schema_version": "1.0", "provenance": {...}}
|
|
12704
12711
|
"""
|
|
12705
12712
|
from sourcecode.release_info import advisory_line, build_status
|
|
12713
|
+
from sourcecode.product_info import COPYRIGHT, PRODUCT, TAGLINE, build_provenance
|
|
12706
12714
|
|
|
12707
12715
|
if getattr(sys.stdout, "isatty", lambda: False)():
|
|
12708
|
-
_lines = [f"
|
|
12716
|
+
_lines = [f"{PRODUCT} {__version__}", TAGLINE, COPYRIGHT]
|
|
12709
12717
|
# C4-12: the field audits builds that are days old and many releases
|
|
12710
12718
|
# behind, and nothing said so. Printed only when it applies — an advisory
|
|
12711
12719
|
# on every run is one nobody reads.
|
|
@@ -12732,6 +12740,7 @@ def version_cmd(
|
|
|
12732
12740
|
# Same list `ask schema` prints, so the two surfaces cannot disagree
|
|
12733
12741
|
# about what this release publishes.
|
|
12734
12742
|
"registries": ["facts-v1"],
|
|
12743
|
+
"provenance": build_provenance(),
|
|
12735
12744
|
}, ensure_ascii=_json_ensure_ascii()), copy, output_path)
|
|
12736
12745
|
|
|
12737
12746
|
|
|
@@ -14234,12 +14243,20 @@ def cache_status_cmd(
|
|
|
14234
14243
|
if "budget_bytes" in _store:
|
|
14235
14244
|
_budget_mb = _store.get("budget_mb")
|
|
14236
14245
|
_env = _store.get("budget_env")
|
|
14246
|
+
_over_by = _store.get("over_budget_by_mb")
|
|
14247
|
+
_current_mb = _store.get("current_mb")
|
|
14237
14248
|
if _store.get("budget_bytes"):
|
|
14238
|
-
|
|
14239
|
-
|
|
14240
|
-
|
|
14241
|
-
|
|
14242
|
-
|
|
14249
|
+
if _store.get("over_budget"):
|
|
14250
|
+
_answer.say(
|
|
14251
|
+
f"{'':<13}budget {_budget_mb} MB, {_store.get('policy')} "
|
|
14252
|
+
f"(${_env}); current {_current_mb} MB, over by {_over_by} MB "
|
|
14253
|
+
"— the next write evicts"
|
|
14254
|
+
)
|
|
14255
|
+
else:
|
|
14256
|
+
_answer.say(
|
|
14257
|
+
f"{'':<13}budget {_budget_mb} MB, {_store.get('policy')} "
|
|
14258
|
+
f"(${_env})"
|
|
14259
|
+
)
|
|
14243
14260
|
else:
|
|
14244
14261
|
_answer.say(f"{'':<13}{_store.get('policy')} (${_env})")
|
|
14245
14262
|
# RIS section
|
|
@@ -440,6 +440,11 @@ def store_stats() -> "dict[str, object]":
|
|
|
440
440
|
**_budget,
|
|
441
441
|
"over_budget": bool(_limit) and total > _limit,
|
|
442
442
|
}
|
|
443
|
+
if _limit:
|
|
444
|
+
out["over_budget_by_mb"] = round(
|
|
445
|
+
max(0, total - _limit) / (1024 * 1024), 2
|
|
446
|
+
)
|
|
447
|
+
out["current_mb"] = round(total / (1024 * 1024), 2)
|
|
443
448
|
_stale = [g for g in generations if not g["current"]]
|
|
444
449
|
if _stale:
|
|
445
450
|
out["stale_entries"] = sum(int(g["entries"]) for g in _stale)
|
|
@@ -183,6 +183,8 @@ def is_test_fixture_module_path(path: str) -> bool:
|
|
|
183
183
|
bare = part.rstrip("/")
|
|
184
184
|
if bare in _TEST_MODULE_SEGMENTS:
|
|
185
185
|
return True
|
|
186
|
+
if bare.endswith(("-test", "-tests", "-it", "-itest", "-itests")):
|
|
187
|
+
return True
|
|
186
188
|
if bare.endswith(_TEST_INFRA_SUFFIXES):
|
|
187
189
|
return True
|
|
188
190
|
toks = bare.replace("_", "-").split("-")
|
|
@@ -41,6 +41,7 @@ from __future__ import annotations
|
|
|
41
41
|
import hashlib
|
|
42
42
|
import json
|
|
43
43
|
import os
|
|
44
|
+
import tempfile
|
|
44
45
|
import time
|
|
45
46
|
from dataclasses import dataclass, field
|
|
46
47
|
from pathlib import Path
|
|
@@ -71,7 +72,7 @@ def partials_dir(root: Path) -> Path:
|
|
|
71
72
|
except Exception:
|
|
72
73
|
key_source = str(Path(root).absolute())
|
|
73
74
|
key = hashlib.sha256(key_source.encode("utf-8", errors="replace")).hexdigest()[:16]
|
|
74
|
-
return Path.
|
|
75
|
+
return Path(tempfile.gettempdir()) / "sourcecode" / "partials" / key
|
|
75
76
|
|
|
76
77
|
|
|
77
78
|
@dataclass
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""Product identity and build provenance for official ASK Engine artifacts."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
|
|
7
|
+
PRODUCT = "ASK Engine"
|
|
8
|
+
TAGLINE = "Actionable Software Knowledge Engine"
|
|
9
|
+
COPYRIGHT = "Copyright (c) 2026 Dominique Haroun. All rights reserved."
|
|
10
|
+
PUBLISHER = "Dominique Haroun"
|
|
11
|
+
LICENSE_ID = "LicenseRef-ASK-Proprietary"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def build_provenance() -> dict[str, str]:
|
|
15
|
+
"""Return build facts without discovering state from the user's repository."""
|
|
16
|
+
return {
|
|
17
|
+
"product": PRODUCT,
|
|
18
|
+
"publisher": PUBLISHER,
|
|
19
|
+
"license": LICENSE_ID,
|
|
20
|
+
"distribution": os.environ.get("ASK_DISTRIBUTION", "official"),
|
|
21
|
+
"build_commit": os.environ.get("ASK_BUILD_COMMIT", "unrecorded"),
|
|
22
|
+
}
|