codd-dev 3.7.2__tar.gz → 3.7.3__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.
- {codd_dev-3.7.2 → codd_dev-3.7.3}/PKG-INFO +1 -1
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/__init__.py +1 -1
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/builder.py +198 -13
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/extractor.py +21 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/parsing/regex_strategies.py +125 -4
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/parsing/treesitter.py +230 -1
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/synth.py +17 -1
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/templates/extracted/api-contract.md.j2 +2 -2
- {codd_dev-3.7.2 → codd_dev-3.7.3}/pyproject.toml +1 -1
- {codd_dev-3.7.2 → codd_dev-3.7.3}/.gitignore +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/LICENSE +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/README.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/bench_fixture/README.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/__main__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/_git_helper.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/action_outcome.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/ai_invoke.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/ai_patch.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/artifact_contract.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/artifact_ids.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/assembler.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/bridge.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/brownfield/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/capability_completeness.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/claude_cli.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/cli.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/clustering.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/coherence_adapters.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/coherence_engine.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/confidence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/config.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/config_schema.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/contracts.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/contracts_registry/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/contracts_registry/__main__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/contracts_registry/certify.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/contracts_registry/generate_matrix.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/contracts_registry/registry.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/coverage_auditor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/coverage_execution_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/coverage_metrics.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/auto_repair.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/cardinality_coverage.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/extraction_diagnostics.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/negative_space.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/resource_flow_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/semantic_contract_conflict.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/stale_evidence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/extractor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/impact.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/materiality.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/metadata_access.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/result_status.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dag/runner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/defaults.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/defaults.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/dependency_lock_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deploy_targets/base.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployer.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/extractor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/verification/pytest_http.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/deployment/providers/verification/vitest.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/design_md.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/diff/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/diff/apply.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/diff/engine.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/diff/persistence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/discovery.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/drift.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/e2e_extractor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/e2e_generator.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/e2e_harness.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/e2e_runner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/apply.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/engine.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/finding.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/gap_to_ask.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/persistence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/promote.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/routing.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/env_refs.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/extract_ai.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/extract_paths.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/design_updater.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/impact_planner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fix/templates_loader.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fixer.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fixup_drift.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/frontmatter.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/generator.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/git_evidence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/graph.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/greenfield/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/greenfield/pipeline.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/hitl_session.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/hooks/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/hooks/pre-commit +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/iac_nfr.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/implement_oracle.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/implement_oracle_scope.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/implement_oracle_types.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/implementer/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/implementer.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/import_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/inheritance.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/init/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/init/stack_detector.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/adapters/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/adapters/implement_oracle.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/adapters/oracle_go.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/adapters/oracle_python.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/adapters/oracle_typescript.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/adapters/runner_report.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/builtin_adapters.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/compat.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/contract.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/loader.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/oracle_executor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/path_planner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/profile.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/profiles/go.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/profiles/python.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/profiles/typescript.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/registry.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/verify_executor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/languages/verify_plan.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/lexicon.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/approval.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/parser.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/mcp_server.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/measure.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/operational_e2e_audit.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/operations_derive.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/parsing/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/parsing/_shared.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/parsing/api_specs.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/parsing/extractor_registry.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/parsing/iac.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/parsing/python_ast.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/parsing/schemas.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/path_safety.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/planner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/policy.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/preflight/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/project_types.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/propagate.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/propagation_common.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/propagator.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/reference_resolution.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/registry.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/approval_repair.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/engine.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/git_patcher.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/history.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/loop.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/primary_picker.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/repair_result.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/schema.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair/verify_runner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/repair_slice.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/require.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/require_plugins.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/require_propagate.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/requirements_meta.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/restoration_report.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/restore.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/routes_extractor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/scanner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/schema_refs.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/screen_flow_validator.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/skills_cli/manager.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/skills_cli/paths.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/adapters/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/adapters/_base.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/adapters/nextjs.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/adapters/playwright.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/adapters/prisma.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/command_authenticity.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/command_override.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/command_plan.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/compose.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/loader.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/lock.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/obligations.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/profile.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/profiles/addons/playwright.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/profiles/addons/prisma.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/project.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/registry.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/replacement_proof.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/stack/resolve.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/surface_reconciliation.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/test_detection.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/test_import_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/traceability.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/validator.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/vb_marker_authenticity.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/vb_rerun_scope.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/verifiable_behavior_audit.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/watch/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/watch/events.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/watch/propagation_log.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/watch/test_runner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/watch/watcher.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd/wiring.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/docs/requirements/README.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/examples/README.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.3}/tests/integration/standalone_repair_skeleton/README.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codd-dev
|
|
3
|
-
Version: 3.7.
|
|
3
|
+
Version: 3.7.3
|
|
4
4
|
Summary: CoDD: Coherence-Driven Development — cross-artifact change impact analysis
|
|
5
5
|
Project-URL: Homepage, https://github.com/yohey-w/codd-dev
|
|
6
6
|
Project-URL: Repository, https://github.com/yohey-w/codd-dev
|
|
@@ -10,7 +10,7 @@ import warnings
|
|
|
10
10
|
from copy import deepcopy
|
|
11
11
|
from datetime import datetime, timezone
|
|
12
12
|
from pathlib import Path
|
|
13
|
-
from typing import Any
|
|
13
|
+
from typing import Any, Callable
|
|
14
14
|
|
|
15
15
|
import yaml
|
|
16
16
|
|
|
@@ -911,6 +911,19 @@ def _resolve_import_target(
|
|
|
911
911
|
path_to_node: dict[Path, str],
|
|
912
912
|
aliases: dict[str, list[str]],
|
|
913
913
|
) -> str | None:
|
|
914
|
+
# Java FQN specifiers (``com.x.Y`` / ``static com.x.Y.m`` / ``com.x.*`` /
|
|
915
|
+
# ``package com.x``) are dispatched by the IMPORTING file's ``.java`` suffix
|
|
916
|
+
# (DATA, not a ``language ==`` core branch) because their dotted shape
|
|
917
|
+
# otherwise collides with Python's project-rooted dotted resolution. Java
|
|
918
|
+
# types live under a source root (``src/main/java``), not the project root.
|
|
919
|
+
if file_path.suffix == ".java":
|
|
920
|
+
candidates = _java_import_candidates(import_ref, file_path, project_root, path_to_node)
|
|
921
|
+
for candidate in candidates:
|
|
922
|
+
resolved = _resolve_file_candidate(candidate, path_to_node)
|
|
923
|
+
if resolved:
|
|
924
|
+
return resolved
|
|
925
|
+
return None
|
|
926
|
+
|
|
914
927
|
candidates: list[Path] = []
|
|
915
928
|
if _is_js_relative_specifier(import_ref):
|
|
916
929
|
# JS/TS relative: ``./foo`` / ``../foo`` — resolve against the file dir
|
|
@@ -981,6 +994,119 @@ def _python_relative_candidates(import_ref: str, file_path: Path) -> list[Path]:
|
|
|
981
994
|
return [(base / Path(*remainder.split("."))).resolve()]
|
|
982
995
|
|
|
983
996
|
|
|
997
|
+
#: Conventional Java/JVM source-root segment chains (Maven/Gradle). A type whose
|
|
998
|
+
#: FQN is ``com.x.Y`` lives at ``<root>/com/x/Y.java`` under one of these roots.
|
|
999
|
+
_JAVA_SOURCE_ROOT_SEGMENTS = (
|
|
1000
|
+
("src", "main", "java"),
|
|
1001
|
+
("src", "test", "java"),
|
|
1002
|
+
("src", "main", "kotlin"),
|
|
1003
|
+
("src", "test", "kotlin"),
|
|
1004
|
+
)
|
|
1005
|
+
|
|
1006
|
+
|
|
1007
|
+
def _java_source_roots(project_root: Path, path_to_node: dict[Path, str]) -> list[Path]:
|
|
1008
|
+
"""Return candidate Java source roots (deepest-first), derived from DATA.
|
|
1009
|
+
|
|
1010
|
+
Built from the actual node file-set rather than hard-coded paths: every
|
|
1011
|
+
``…/src/main/java`` (etc.) prefix that some node file sits under becomes a
|
|
1012
|
+
root, plus the project root itself as a last resort (flat layouts / default
|
|
1013
|
+
package). Deeper roots are tried first so ``src/main/java`` wins over the
|
|
1014
|
+
project root when both could match.
|
|
1015
|
+
"""
|
|
1016
|
+
roots: dict[str, Path] = {}
|
|
1017
|
+
for file_path in path_to_node:
|
|
1018
|
+
parts = file_path.parts
|
|
1019
|
+
for segments in _JAVA_SOURCE_ROOT_SEGMENTS:
|
|
1020
|
+
idx = _find_segment_chain(parts, segments)
|
|
1021
|
+
if idx is not None:
|
|
1022
|
+
root = Path(*parts[: idx + len(segments)])
|
|
1023
|
+
roots[str(root)] = root
|
|
1024
|
+
ordered = sorted(roots.values(), key=lambda path: len(path.parts), reverse=True)
|
|
1025
|
+
ordered.append(project_root.resolve())
|
|
1026
|
+
return ordered
|
|
1027
|
+
|
|
1028
|
+
|
|
1029
|
+
def _find_segment_chain(parts: tuple[str, ...], chain: tuple[str, ...]) -> int | None:
|
|
1030
|
+
"""Return the start index where ``chain`` appears contiguously in ``parts``."""
|
|
1031
|
+
if not chain:
|
|
1032
|
+
return None
|
|
1033
|
+
for start in range(len(parts) - len(chain) + 1):
|
|
1034
|
+
if parts[start : start + len(chain)] == chain:
|
|
1035
|
+
return start
|
|
1036
|
+
return None
|
|
1037
|
+
|
|
1038
|
+
|
|
1039
|
+
def _java_import_candidates(
|
|
1040
|
+
import_ref: str,
|
|
1041
|
+
file_path: Path,
|
|
1042
|
+
project_root: Path,
|
|
1043
|
+
path_to_node: dict[Path, str],
|
|
1044
|
+
) -> list[Path]:
|
|
1045
|
+
"""Map a Java specifier to filesystem candidates under the source roots.
|
|
1046
|
+
|
|
1047
|
+
Handles the four shapes emitted by the Java specifier extractor:
|
|
1048
|
+
|
|
1049
|
+
* ``package com.x`` → the file's OWN package dir, so same-package implicit
|
|
1050
|
+
references (Java needs no import for siblings) yield edges to the package's
|
|
1051
|
+
other files (the caller skips the self-edge).
|
|
1052
|
+
* ``com.x.*`` (wildcard) → the package directory; the caller links to the
|
|
1053
|
+
in-package files found there (or skips cleanly when none are nodes).
|
|
1054
|
+
* ``static com.x.Y.m`` → the owning class file ``com/x/Y.java`` (member
|
|
1055
|
+
``m`` stripped).
|
|
1056
|
+
* ``com.x.Y`` (normal) → ``com/x/Y.java``.
|
|
1057
|
+
|
|
1058
|
+
``_resolve_file_candidate`` appends the real ``.java`` suffix once a directory
|
|
1059
|
+
candidate is produced, so package/wildcard dirs resolve to a sibling file.
|
|
1060
|
+
"""
|
|
1061
|
+
roots = _java_source_roots(project_root, path_to_node)
|
|
1062
|
+
|
|
1063
|
+
if import_ref.startswith("package "):
|
|
1064
|
+
package = import_ref[len("package "):].strip()
|
|
1065
|
+
return _java_package_dir_candidates(package, roots)
|
|
1066
|
+
|
|
1067
|
+
if import_ref.endswith(".*"):
|
|
1068
|
+
package = import_ref[:-2].strip()
|
|
1069
|
+
return _java_package_dir_candidates(package, roots)
|
|
1070
|
+
|
|
1071
|
+
fqn = import_ref
|
|
1072
|
+
if fqn.startswith("static "):
|
|
1073
|
+
# ``static com.x.Y.member`` → owning class ``com.x.Y`` (drop the member).
|
|
1074
|
+
fqn = fqn[len("static "):].strip()
|
|
1075
|
+
parts = fqn.split(".")
|
|
1076
|
+
if len(parts) >= 2:
|
|
1077
|
+
fqn = ".".join(parts[:-1])
|
|
1078
|
+
|
|
1079
|
+
parts = [part for part in fqn.split(".") if part]
|
|
1080
|
+
if not parts:
|
|
1081
|
+
return []
|
|
1082
|
+
return [(root / Path(*parts)).resolve() for root in roots]
|
|
1083
|
+
|
|
1084
|
+
|
|
1085
|
+
def _java_package_dir_candidates(package: str, roots: list[Path]) -> list[Path]:
|
|
1086
|
+
parts = [part for part in package.split(".") if part]
|
|
1087
|
+
if not parts:
|
|
1088
|
+
return []
|
|
1089
|
+
candidates: list[Path] = []
|
|
1090
|
+
for root in roots:
|
|
1091
|
+
package_dir = (root / Path(*parts)).resolve()
|
|
1092
|
+
# List the package dir's in-tree files as candidates (same-package /
|
|
1093
|
+
# wildcard linkage). ``_resolve_file_candidate`` matches exact node paths,
|
|
1094
|
+
# so we hand it each existing ``.java`` file directly.
|
|
1095
|
+
for node_path in _sorted_java_dir_files(package_dir):
|
|
1096
|
+
candidates.append(node_path)
|
|
1097
|
+
return candidates
|
|
1098
|
+
|
|
1099
|
+
|
|
1100
|
+
def _sorted_java_dir_files(package_dir: Path) -> list[Path]:
|
|
1101
|
+
if not package_dir.is_dir():
|
|
1102
|
+
return []
|
|
1103
|
+
return sorted(
|
|
1104
|
+
child.resolve()
|
|
1105
|
+
for child in package_dir.iterdir()
|
|
1106
|
+
if child.is_file() and child.suffix == ".java"
|
|
1107
|
+
)
|
|
1108
|
+
|
|
1109
|
+
|
|
984
1110
|
def _infer_test_targets(
|
|
985
1111
|
test_path: Path,
|
|
986
1112
|
project_root: Path,
|
|
@@ -1025,30 +1151,89 @@ def _extract_python_import_specifiers(file_path: Path) -> list[str]:
|
|
|
1025
1151
|
return get_extractor("python", "source").extract_import_specifiers(content)
|
|
1026
1152
|
|
|
1027
1153
|
|
|
1154
|
+
# Regex fallback for Java ``import`` / ``package`` specifiers, used only when the
|
|
1155
|
+
# tree-sitter-java binding is unavailable (otherwise the registry backend's AST
|
|
1156
|
+
# extractor is preferred). Mirrors the SHAPES emitted by
|
|
1157
|
+
# ``treesitter._extract_java_import_specifiers`` (``static`` keyword + ``.*``
|
|
1158
|
+
# wildcard + ``package`` line preserved) so the Java resolver branch is agnostic
|
|
1159
|
+
# to which extractor produced the specifier.
|
|
1160
|
+
_JAVA_IMPORT_SPECIFIER_RE = re.compile(
|
|
1161
|
+
r"^\s*import\s+(static\s+)?([\w.]+(?:\.\*)?)\s*;",
|
|
1162
|
+
re.MULTILINE,
|
|
1163
|
+
)
|
|
1164
|
+
_JAVA_PACKAGE_SPECIFIER_RE = re.compile(r"^\s*package\s+([\w.]+)\s*;", re.MULTILINE)
|
|
1165
|
+
|
|
1166
|
+
|
|
1167
|
+
def _extract_java_import_specifiers(file_path: Path) -> list[str]:
|
|
1168
|
+
"""Return raw Java ``import``/``package`` specifiers for DAG edge building.
|
|
1169
|
+
|
|
1170
|
+
Prefers the registry's Java ``source`` backend (tree-sitter-java) so the SAME
|
|
1171
|
+
extraction the scanner uses produces the DAG specifiers; degrades to a regex
|
|
1172
|
+
when the binding is absent. Either way the SHAPES (``static …`` / ``….*`` /
|
|
1173
|
+
``package …``) match, so ``_resolve_import_target``'s Java branch — dispatched
|
|
1174
|
+
by the ``.java`` suffix (DATA), not a ``language ==`` core branch — resolves
|
|
1175
|
+
them identically. Mirrors ``_extract_python_import_specifiers``.
|
|
1176
|
+
"""
|
|
1177
|
+
|
|
1178
|
+
from codd.parsing import get_extractor
|
|
1179
|
+
|
|
1180
|
+
content = file_path.read_text(encoding="utf-8", errors="ignore")
|
|
1181
|
+
specifiers = get_extractor("java", "source").extract_import_specifiers(content)
|
|
1182
|
+
if specifiers:
|
|
1183
|
+
return specifiers
|
|
1184
|
+
# Fallback: tree-sitter-java unavailable → RegexExtractor returned []. Recover
|
|
1185
|
+
# the same specifier shapes from a line regex so Java edges still form.
|
|
1186
|
+
fallback: list[str] = []
|
|
1187
|
+
package_match = _JAVA_PACKAGE_SPECIFIER_RE.search(content)
|
|
1188
|
+
if package_match:
|
|
1189
|
+
fallback.append(f"package {package_match.group(1)}")
|
|
1190
|
+
for static_kw, name in _JAVA_IMPORT_SPECIFIER_RE.findall(content):
|
|
1191
|
+
if name.endswith(".*"):
|
|
1192
|
+
fallback.append(name)
|
|
1193
|
+
elif static_kw:
|
|
1194
|
+
fallback.append(f"static {name}")
|
|
1195
|
+
else:
|
|
1196
|
+
fallback.append(name)
|
|
1197
|
+
return fallback
|
|
1198
|
+
|
|
1199
|
+
|
|
1200
|
+
#: Suffix → raw-specifier extractor (DATA dispatch). A source file whose language
|
|
1201
|
+
#: carries its intra-tree dependency graph in DOTTED specifiers (Python modules,
|
|
1202
|
+
#: Java FQNs) resolves edges from these, instead of the builder's quoted-string
|
|
1203
|
+
#: ``extract_imports`` seam (JS/TS ``from '…'`` / ``require('…')``). Adding a
|
|
1204
|
+
#: language here is pure data — no core ``if language ==`` branch.
|
|
1205
|
+
_SUFFIX_SPECIFIER_EXTRACTORS: dict[str, "Callable[[Path], list[str]]"] = {
|
|
1206
|
+
".py": _extract_python_import_specifiers,
|
|
1207
|
+
".java": _extract_java_import_specifiers,
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1210
|
+
|
|
1028
1211
|
def _extract_impl_imports(file_path: Path) -> list[str]:
|
|
1029
1212
|
"""Return raw import specifiers for an implementation file.
|
|
1030
1213
|
|
|
1031
|
-
Python impl files go through
|
|
1032
|
-
test files use) so impl→impl import edges form for
|
|
1033
|
-
fix. Every other language keeps the existing
|
|
1034
|
-
(``extract_imports``: JS/TS ``from '…'`` /
|
|
1035
|
-
Dispatch is by file suffix (DATA)
|
|
1214
|
+
Python and Java impl files go through their registry-backed specifier
|
|
1215
|
+
extractors (the same path test files use) so impl→impl import edges form for
|
|
1216
|
+
them — the core of the fix. Every other language keeps the existing
|
|
1217
|
+
quoted-specifier extractor (``extract_imports``: JS/TS ``from '…'`` /
|
|
1218
|
+
``require('…')``), unchanged. Dispatch is by file suffix (DATA).
|
|
1036
1219
|
"""
|
|
1037
1220
|
|
|
1038
|
-
|
|
1039
|
-
|
|
1221
|
+
extractor = _SUFFIX_SPECIFIER_EXTRACTORS.get(file_path.suffix)
|
|
1222
|
+
if extractor is not None:
|
|
1223
|
+
return extractor(file_path)
|
|
1040
1224
|
return extract_imports(file_path)
|
|
1041
1225
|
|
|
1042
1226
|
|
|
1043
1227
|
def _extract_test_imports(file_path: Path) -> list[str]:
|
|
1044
1228
|
imports = extract_imports(file_path)
|
|
1045
|
-
|
|
1229
|
+
extractor = _SUFFIX_SPECIFIER_EXTRACTORS.get(file_path.suffix)
|
|
1230
|
+
if extractor is None:
|
|
1046
1231
|
return imports
|
|
1047
1232
|
|
|
1048
|
-
#
|
|
1049
|
-
# quoted-specifier pass above so a polyglot test file
|
|
1050
|
-
#
|
|
1051
|
-
return [*imports, *
|
|
1233
|
+
# Registry-backed dotted specifiers (Python relative imports / Java FQNs)
|
|
1234
|
+
# combined with the quoted-specifier pass above so a polyglot test file keeps
|
|
1235
|
+
# both seams' results.
|
|
1236
|
+
return [*imports, *extractor(file_path)]
|
|
1052
1237
|
|
|
1053
1238
|
|
|
1054
1239
|
def _resolve_python_import_target(import_ref: str, project_root: Path, path_to_node: dict[Path, str]) -> str | None:
|
|
@@ -323,8 +323,23 @@ def _detect_language(project_root: Path, exclude_patterns: list[str]) -> str:
|
|
|
323
323
|
return max(counts, key=counts.get)
|
|
324
324
|
|
|
325
325
|
|
|
326
|
+
# Conventional JVM (Maven/Gradle) source / test layout. Detected by directory
|
|
327
|
+
# PRESENCE (DATA), not a language gate, so a polyglot repo that happens to carry
|
|
328
|
+
# this layout is handled the same way. ``src`` is deliberately NOT used as a
|
|
329
|
+
# source dir when ``src/main/*`` exists, because the bare ``src`` glob would also
|
|
330
|
+
# sweep in ``src/test/*`` (mixing tests into impl).
|
|
331
|
+
_JVM_SOURCE_LAYOUT_DIRS = ("src/main/java", "src/main/kotlin", "src/main/scala")
|
|
332
|
+
_JVM_TEST_LAYOUT_DIRS = ("src/test/java", "src/test/kotlin", "src/test/scala")
|
|
333
|
+
|
|
334
|
+
|
|
326
335
|
def _detect_source_dirs(project_root: Path, language: str) -> list[str]:
|
|
327
336
|
"""Auto-detect source directories."""
|
|
337
|
+
jvm_source = [d for d in _JVM_SOURCE_LAYOUT_DIRS if (project_root / d).is_dir()]
|
|
338
|
+
if jvm_source:
|
|
339
|
+
# Maven/Gradle layout: point at ``src/main/<lang>`` so the impl glob does
|
|
340
|
+
# not also pick up ``src/test/<lang>`` (which _detect_test_dirs claims).
|
|
341
|
+
return jvm_source
|
|
342
|
+
|
|
328
343
|
candidates = ["src", "lib", "app", "pkg", "cmd", "internal"]
|
|
329
344
|
found = []
|
|
330
345
|
|
|
@@ -361,6 +376,12 @@ def _detect_test_dirs(project_root: Path) -> list[str]:
|
|
|
361
376
|
for c in candidates:
|
|
362
377
|
if (project_root / c).is_dir():
|
|
363
378
|
found.append(c)
|
|
379
|
+
# JVM (Maven/Gradle) layout keeps tests under ``src/test/<lang>`` rather than
|
|
380
|
+
# a top-level ``tests/``. Detected by directory presence (DATA), additive so
|
|
381
|
+
# non-JVM projects are unaffected.
|
|
382
|
+
for d in _JVM_TEST_LAYOUT_DIRS:
|
|
383
|
+
if (project_root / d).is_dir():
|
|
384
|
+
found.append(d)
|
|
364
385
|
return found
|
|
365
386
|
|
|
366
387
|
|
|
@@ -126,18 +126,99 @@ def _symbols_ts_js(content: str, rel_path: str) -> "list[Symbol]":
|
|
|
126
126
|
return symbols
|
|
127
127
|
|
|
128
128
|
|
|
129
|
+
#: Java type-declaration keyword → emitted symbol kind. ``record`` and the
|
|
130
|
+
#: annotation type collapse to the nearest existing kind so downstream symbol
|
|
131
|
+
#: consumers (which only know class/interface/enum/function) stay unchanged.
|
|
132
|
+
_JAVA_TYPE_KEYWORD_KINDS = (
|
|
133
|
+
(re.compile(r'^\s*(?:public|protected|private)?\s*(?:static\s+)?(?:abstract\s+|final\s+)?class\s+(\w+)'), "class"),
|
|
134
|
+
(re.compile(r'^\s*(?:public|protected|private)?\s*(?:static\s+)?(?:abstract\s+)?interface\s+(\w+)'), "interface"),
|
|
135
|
+
(re.compile(r'^\s*(?:public|protected|private)?\s*(?:static\s+)?enum\s+(\w+)'), "enum"),
|
|
136
|
+
(re.compile(r'^\s*(?:public|protected|private)?\s*(?:static\s+)?(?:final\s+)?record\s+(\w+)'), "class"),
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
|
|
129
140
|
def _symbols_java(content: str, rel_path: str) -> "list[Symbol]":
|
|
130
141
|
symbols: list = []
|
|
131
142
|
for i, line in enumerate(content.splitlines(), 1):
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
143
|
+
for pattern, kind in _JAVA_TYPE_KEYWORD_KINDS:
|
|
144
|
+
m = pattern.match(line)
|
|
145
|
+
if m:
|
|
146
|
+
symbols.append(_symbol(m.group(1), kind, rel_path, i))
|
|
147
|
+
break
|
|
135
148
|
m = re.match(r'^\s*(?:public|protected)\s+(?:static\s+)?[\w<>\[\],\s]+\s+(\w+)\s*\(([^)]*)\)', line)
|
|
136
149
|
if m and m.group(1)[0].islower():
|
|
137
150
|
symbols.append(_symbol(m.group(1), "function", rel_path, i, m.group(2).strip()))
|
|
138
151
|
return symbols
|
|
139
152
|
|
|
140
153
|
|
|
154
|
+
#: Java stdlib / platform package roots (mirrors treesitter._JAVA_STDLIB_ROOTS).
|
|
155
|
+
_JAVA_STDLIB = frozenset({"java", "javax", "jdk", "sun"})
|
|
156
|
+
|
|
157
|
+
_JAVA_IMPORT_RE = re.compile(r'^\s*import\s+(static\s+)?([\w.]+(?:\.\*)?)\s*;')
|
|
158
|
+
_JAVA_PACKAGE_RE = re.compile(r'^\s*package\s+([\w.]+)\s*;')
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
def _imports_java(content, project_root, src_dir, file_path):
|
|
162
|
+
"""Classify Java imports: first-party ``internal`` vs ``java.*``/third-party.
|
|
163
|
+
|
|
164
|
+
The regex sibling of ``treesitter._extract_java_imports_ast`` (used when
|
|
165
|
+
tree-sitter-java is unavailable). First-party = an import sharing the file's
|
|
166
|
+
own package org+domain prefix (first 2 segments, e.g. ``com.google``);
|
|
167
|
+
``java.*``/``javax.*``/``jdk.*``/``sun.*`` and unrelated third parties are
|
|
168
|
+
external. ``stdlib`` subtraction is applied by ``RegexLanguageStrategy``.
|
|
169
|
+
"""
|
|
170
|
+
internal: dict[str, list[str]] = {}
|
|
171
|
+
external: set[str] = set()
|
|
172
|
+
|
|
173
|
+
package_root = ""
|
|
174
|
+
for line in content.splitlines():
|
|
175
|
+
pm = _JAVA_PACKAGE_RE.match(line)
|
|
176
|
+
if pm:
|
|
177
|
+
package_root = pm.group(1)
|
|
178
|
+
break
|
|
179
|
+
|
|
180
|
+
root_parts = package_root.split(".") if package_root else []
|
|
181
|
+
depth = min(2, len(root_parts))
|
|
182
|
+
|
|
183
|
+
for line in content.splitlines():
|
|
184
|
+
m = _JAVA_IMPORT_RE.match(line)
|
|
185
|
+
if not m:
|
|
186
|
+
continue
|
|
187
|
+
fqn = m.group(2)
|
|
188
|
+
if fqn.endswith(".*"):
|
|
189
|
+
fqn = fqn[:-2]
|
|
190
|
+
parts = fqn.split(".")
|
|
191
|
+
top = parts[0]
|
|
192
|
+
if top in _JAVA_STDLIB:
|
|
193
|
+
external.add(fqn)
|
|
194
|
+
continue
|
|
195
|
+
if root_parts and parts[:depth] == root_parts[:depth]:
|
|
196
|
+
key = _java_internal_key(parts, root_parts)
|
|
197
|
+
internal.setdefault(key, []).append(line.strip())
|
|
198
|
+
else:
|
|
199
|
+
external.add(fqn)
|
|
200
|
+
|
|
201
|
+
return internal, external
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def _java_internal_key(fqn_parts: list[str], root_parts: list[str]) -> str:
|
|
205
|
+
"""The first sub-package segment after the file's package root.
|
|
206
|
+
|
|
207
|
+
For a ``com.acme.app`` file importing ``com.acme.app.util.Helper`` the key is
|
|
208
|
+
``util`` (the meaningful first-party sub-module), not the shared org segment.
|
|
209
|
+
Falls back to the last package segment when the import IS the package root.
|
|
210
|
+
"""
|
|
211
|
+
common = 0
|
|
212
|
+
for left, right in zip(fqn_parts, root_parts):
|
|
213
|
+
if left != right:
|
|
214
|
+
break
|
|
215
|
+
common += 1
|
|
216
|
+
remainder = fqn_parts[common:]
|
|
217
|
+
if remainder:
|
|
218
|
+
return remainder[0]
|
|
219
|
+
return fqn_parts[-2] if len(fqn_parts) >= 2 else fqn_parts[0]
|
|
220
|
+
|
|
221
|
+
|
|
141
222
|
def _symbols_go(content: str, rel_path: str) -> "list[Symbol]":
|
|
142
223
|
symbols: list = []
|
|
143
224
|
for i, line in enumerate(content.splitlines(), 1):
|
|
@@ -395,9 +476,13 @@ _JAVASCRIPT = RegexLanguageStrategy(
|
|
|
395
476
|
_JAVA = RegexLanguageStrategy(
|
|
396
477
|
name="java",
|
|
397
478
|
extensions=frozenset({".java"}),
|
|
479
|
+
# stdlib stays EMPTY: the old ladder had no java stdlib set and
|
|
480
|
+
# ``common_stdlib("java")`` is pinned to ``set()``. ``_imports_java`` classifies
|
|
481
|
+
# ``java.*`` into ``external`` itself (per the Piece-2 contract) rather than
|
|
482
|
+
# relying on strategy-level stdlib subtraction.
|
|
398
483
|
entry_points=("Application.java", "Main.java", "App.java"),
|
|
399
484
|
extract_symbols=_symbols_java,
|
|
400
|
-
extract_imports=
|
|
485
|
+
extract_imports=_imports_java,
|
|
401
486
|
detect_code_patterns=None, # the old ladder had NO java code-pattern branch
|
|
402
487
|
file_to_module=_file_to_module_java,
|
|
403
488
|
guess_test_target=None,
|
|
@@ -503,6 +588,41 @@ def _ceg_targets_python(
|
|
|
503
588
|
return targets
|
|
504
589
|
|
|
505
590
|
|
|
591
|
+
def _ceg_targets_java(
|
|
592
|
+
internal: dict, project_root: Path, file_path: Path
|
|
593
|
+
) -> "list[CegImportTarget]":
|
|
594
|
+
"""Java internal imports → ``module`` CEG nodes keyed by first-party FQN.
|
|
595
|
+
|
|
596
|
+
Mirrors the python resolver's module-node modelling (a stable identifier per
|
|
597
|
+
imported first-party unit) rather than probing the filesystem; the DAG
|
|
598
|
+
builder owns the precise FQN→file resolution for import EDGES. The ``internal``
|
|
599
|
+
map values are the raw import lines (``com.google.gson.internal.Streams`` /
|
|
600
|
+
``static com.google.gson.Foo.bar``); we recover the owning FQN for the node.
|
|
601
|
+
"""
|
|
602
|
+
targets: list[CegImportTarget] = []
|
|
603
|
+
seen: set[str] = set()
|
|
604
|
+
for import_lines in internal.values():
|
|
605
|
+
for line in import_lines:
|
|
606
|
+
fqn = line.strip()
|
|
607
|
+
if fqn.startswith("static "):
|
|
608
|
+
fqn = fqn[len("static "):]
|
|
609
|
+
if fqn.endswith(".*"):
|
|
610
|
+
fqn = fqn[:-2]
|
|
611
|
+
if not fqn or fqn in seen:
|
|
612
|
+
continue
|
|
613
|
+
seen.add(fqn)
|
|
614
|
+
targets.append(
|
|
615
|
+
CegImportTarget(
|
|
616
|
+
target_id=f"module:{fqn}",
|
|
617
|
+
node_type="module",
|
|
618
|
+
node_kwargs={"name": fqn},
|
|
619
|
+
evidence_method="static_import",
|
|
620
|
+
confidence=0.90,
|
|
621
|
+
)
|
|
622
|
+
)
|
|
623
|
+
return targets
|
|
624
|
+
|
|
625
|
+
|
|
506
626
|
#: Per-language scanner CEG-import resolvers (registry DATA). Languages without
|
|
507
627
|
#: an entry contribute NO import edges, byte-identical to the former scanner
|
|
508
628
|
#: block that only handled python and typescript/javascript.
|
|
@@ -512,6 +632,7 @@ _CEG_IMPORT_RESOLVERS: dict[
|
|
|
512
632
|
"typescript": _ceg_targets_ts_js,
|
|
513
633
|
"javascript": _ceg_targets_ts_js,
|
|
514
634
|
"python": _ceg_targets_python,
|
|
635
|
+
"java": _ceg_targets_java,
|
|
515
636
|
}
|
|
516
637
|
|
|
517
638
|
|