codd-dev 3.7.2__tar.gz → 3.7.4__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.4}/PKG-INFO +1 -1
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/__init__.py +1 -1
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/builder.py +358 -13
- codd_dev-3.7.4/codd/dag/defaults/cpp_embedded.yaml +2 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/extractor.py +27 -1
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/parsing/regex_strategies.py +294 -4
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/parsing/treesitter.py +230 -1
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/synth.py +17 -1
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/templates/extracted/api-contract.md.j2 +2 -2
- {codd_dev-3.7.2 → codd_dev-3.7.4}/pyproject.toml +1 -1
- codd_dev-3.7.2/codd/dag/defaults/cpp_embedded.yaml +0 -2
- {codd_dev-3.7.2 → codd_dev-3.7.4}/.gitignore +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/LICENSE +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/README.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/bench_fixture/README.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/__main__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/_git_helper.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/action_outcome.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/ai_invoke.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/ai_patch.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/artifact_contract.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/artifact_ids.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/assembler.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/bridge.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/brownfield/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/capability_completeness.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/claude_cli.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/cli.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/clustering.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/coherence_adapters.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/coherence_engine.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/confidence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/config.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/config_schema.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/contracts.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/contracts_registry/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/contracts_registry/__main__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/contracts_registry/certify.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/contracts_registry/generate_matrix.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/contracts_registry/registry.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/coverage_auditor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/coverage_execution_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/coverage_metrics.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/auto_repair.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/cardinality_coverage.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/extraction_diagnostics.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/negative_space.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/resource_flow_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/semantic_contract_conflict.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/stale_evidence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/extractor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/impact.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/materiality.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/metadata_access.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/result_status.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dag/runner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/defaults.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/defaults.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/dependency_lock_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deploy_targets/base.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployer.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/extractor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/verification/pytest_http.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/deployment/providers/verification/vitest.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/design_md.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/diff/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/diff/apply.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/diff/engine.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/diff/persistence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/discovery.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/drift.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/e2e_extractor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/e2e_generator.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/e2e_harness.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/e2e_runner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/apply.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/engine.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/finding.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/gap_to_ask.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/persistence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/promote.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/routing.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/env_refs.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/extract_ai.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/extract_paths.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/design_updater.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/impact_planner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fix/templates_loader.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fixer.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fixup_drift.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/frontmatter.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/generator.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/git_evidence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/graph.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/greenfield/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/greenfield/pipeline.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/hitl_session.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/hooks/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/hooks/pre-commit +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/iac_nfr.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/implement_oracle.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/implement_oracle_scope.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/implement_oracle_types.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/implementer/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/implementer.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/import_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/inheritance.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/init/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/init/stack_detector.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/adapters/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/adapters/implement_oracle.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/adapters/oracle_go.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/adapters/oracle_python.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/adapters/oracle_typescript.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/adapters/runner_report.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/builtin_adapters.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/compat.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/contract.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/loader.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/oracle_executor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/path_planner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/profile.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/profiles/go.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/profiles/python.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/profiles/typescript.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/registry.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/verify_executor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/languages/verify_plan.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/lexicon.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/approval.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/parser.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/mcp_server.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/measure.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/operational_e2e_audit.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/operations_derive.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/parsing/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/parsing/_shared.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/parsing/api_specs.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/parsing/extractor_registry.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/parsing/iac.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/parsing/python_ast.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/parsing/schemas.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/path_safety.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/planner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/policy.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/preflight/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/project_types.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/propagate.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/propagation_common.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/propagator.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/reference_resolution.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/registry.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/approval_repair.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/engine.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/git_patcher.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/history.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/loop.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/primary_picker.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/repair_result.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/schema.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair/verify_runner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/repair_slice.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/require.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/require_plugins.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/require_propagate.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/requirements_meta.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/restoration_report.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/restore.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/routes_extractor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/scanner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/schema_refs.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/screen_flow_validator.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/skills_cli/manager.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/skills_cli/paths.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/adapters/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/adapters/_base.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/adapters/nextjs.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/adapters/playwright.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/adapters/prisma.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/command_authenticity.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/command_override.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/command_plan.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/compose.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/loader.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/lock.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/obligations.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/profile.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/profiles/addons/playwright.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/profiles/addons/prisma.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/project.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/registry.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/replacement_proof.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/stack/resolve.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/surface_reconciliation.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/test_detection.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/test_import_coherence.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/traceability.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/validator.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/vb_marker_authenticity.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/vb_rerun_scope.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/verifiable_behavior_audit.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/watch/__init__.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/watch/events.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/watch/propagation_log.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/watch/test_runner.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/watch/watcher.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd/wiring.py +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/docs/requirements/README.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/examples/README.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-3.7.2 → codd_dev-3.7.4}/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.4
|
|
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,32 @@ 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
|
+
|
|
927
|
+
# C++ ``#include`` specifiers are dispatched by the IMPORTING file's C/C++
|
|
928
|
+
# suffix (DATA, not a ``language ==`` core branch). Resolution is PATH-based
|
|
929
|
+
# (the specifier already carries its extension, e.g. ``fmt/core.h``), the key
|
|
930
|
+
# divergence from Java's FQN→path synthesis: a quote-form include resolves
|
|
931
|
+
# relative-to-file first, then via include roots; an angle-form include is
|
|
932
|
+
# system/STL and produces no edge.
|
|
933
|
+
if file_path.suffix in _CPP_SOURCE_SUFFIXES:
|
|
934
|
+
for candidate in _cpp_include_candidates(import_ref, file_path, path_to_node):
|
|
935
|
+
resolved = _resolve_file_candidate(candidate, path_to_node)
|
|
936
|
+
if resolved:
|
|
937
|
+
return resolved
|
|
938
|
+
return None
|
|
939
|
+
|
|
914
940
|
candidates: list[Path] = []
|
|
915
941
|
if _is_js_relative_specifier(import_ref):
|
|
916
942
|
# JS/TS relative: ``./foo`` / ``../foo`` — resolve against the file dir
|
|
@@ -981,6 +1007,218 @@ def _python_relative_candidates(import_ref: str, file_path: Path) -> list[Path]:
|
|
|
981
1007
|
return [(base / Path(*remainder.split("."))).resolve()]
|
|
982
1008
|
|
|
983
1009
|
|
|
1010
|
+
#: Conventional Java/JVM source-root segment chains (Maven/Gradle). A type whose
|
|
1011
|
+
#: FQN is ``com.x.Y`` lives at ``<root>/com/x/Y.java`` under one of these roots.
|
|
1012
|
+
_JAVA_SOURCE_ROOT_SEGMENTS = (
|
|
1013
|
+
("src", "main", "java"),
|
|
1014
|
+
("src", "test", "java"),
|
|
1015
|
+
("src", "main", "kotlin"),
|
|
1016
|
+
("src", "test", "kotlin"),
|
|
1017
|
+
)
|
|
1018
|
+
|
|
1019
|
+
|
|
1020
|
+
def _java_source_roots(project_root: Path, path_to_node: dict[Path, str]) -> list[Path]:
|
|
1021
|
+
"""Return candidate Java source roots (deepest-first), derived from DATA.
|
|
1022
|
+
|
|
1023
|
+
Built from the actual node file-set rather than hard-coded paths: every
|
|
1024
|
+
``…/src/main/java`` (etc.) prefix that some node file sits under becomes a
|
|
1025
|
+
root, plus the project root itself as a last resort (flat layouts / default
|
|
1026
|
+
package). Deeper roots are tried first so ``src/main/java`` wins over the
|
|
1027
|
+
project root when both could match.
|
|
1028
|
+
"""
|
|
1029
|
+
roots: dict[str, Path] = {}
|
|
1030
|
+
for file_path in path_to_node:
|
|
1031
|
+
parts = file_path.parts
|
|
1032
|
+
for segments in _JAVA_SOURCE_ROOT_SEGMENTS:
|
|
1033
|
+
idx = _find_segment_chain(parts, segments)
|
|
1034
|
+
if idx is not None:
|
|
1035
|
+
root = Path(*parts[: idx + len(segments)])
|
|
1036
|
+
roots[str(root)] = root
|
|
1037
|
+
ordered = sorted(roots.values(), key=lambda path: len(path.parts), reverse=True)
|
|
1038
|
+
ordered.append(project_root.resolve())
|
|
1039
|
+
return ordered
|
|
1040
|
+
|
|
1041
|
+
|
|
1042
|
+
def _find_segment_chain(parts: tuple[str, ...], chain: tuple[str, ...]) -> int | None:
|
|
1043
|
+
"""Return the start index where ``chain`` appears contiguously in ``parts``."""
|
|
1044
|
+
if not chain:
|
|
1045
|
+
return None
|
|
1046
|
+
for start in range(len(parts) - len(chain) + 1):
|
|
1047
|
+
if parts[start : start + len(chain)] == chain:
|
|
1048
|
+
return start
|
|
1049
|
+
return None
|
|
1050
|
+
|
|
1051
|
+
|
|
1052
|
+
def _java_import_candidates(
|
|
1053
|
+
import_ref: str,
|
|
1054
|
+
file_path: Path,
|
|
1055
|
+
project_root: Path,
|
|
1056
|
+
path_to_node: dict[Path, str],
|
|
1057
|
+
) -> list[Path]:
|
|
1058
|
+
"""Map a Java specifier to filesystem candidates under the source roots.
|
|
1059
|
+
|
|
1060
|
+
Handles the four shapes emitted by the Java specifier extractor:
|
|
1061
|
+
|
|
1062
|
+
* ``package com.x`` → the file's OWN package dir, so same-package implicit
|
|
1063
|
+
references (Java needs no import for siblings) yield edges to the package's
|
|
1064
|
+
other files (the caller skips the self-edge).
|
|
1065
|
+
* ``com.x.*`` (wildcard) → the package directory; the caller links to the
|
|
1066
|
+
in-package files found there (or skips cleanly when none are nodes).
|
|
1067
|
+
* ``static com.x.Y.m`` → the owning class file ``com/x/Y.java`` (member
|
|
1068
|
+
``m`` stripped).
|
|
1069
|
+
* ``com.x.Y`` (normal) → ``com/x/Y.java``.
|
|
1070
|
+
|
|
1071
|
+
``_resolve_file_candidate`` appends the real ``.java`` suffix once a directory
|
|
1072
|
+
candidate is produced, so package/wildcard dirs resolve to a sibling file.
|
|
1073
|
+
"""
|
|
1074
|
+
roots = _java_source_roots(project_root, path_to_node)
|
|
1075
|
+
|
|
1076
|
+
if import_ref.startswith("package "):
|
|
1077
|
+
package = import_ref[len("package "):].strip()
|
|
1078
|
+
return _java_package_dir_candidates(package, roots)
|
|
1079
|
+
|
|
1080
|
+
if import_ref.endswith(".*"):
|
|
1081
|
+
package = import_ref[:-2].strip()
|
|
1082
|
+
return _java_package_dir_candidates(package, roots)
|
|
1083
|
+
|
|
1084
|
+
fqn = import_ref
|
|
1085
|
+
if fqn.startswith("static "):
|
|
1086
|
+
# ``static com.x.Y.member`` → owning class ``com.x.Y`` (drop the member).
|
|
1087
|
+
fqn = fqn[len("static "):].strip()
|
|
1088
|
+
parts = fqn.split(".")
|
|
1089
|
+
if len(parts) >= 2:
|
|
1090
|
+
fqn = ".".join(parts[:-1])
|
|
1091
|
+
|
|
1092
|
+
parts = [part for part in fqn.split(".") if part]
|
|
1093
|
+
if not parts:
|
|
1094
|
+
return []
|
|
1095
|
+
return [(root / Path(*parts)).resolve() for root in roots]
|
|
1096
|
+
|
|
1097
|
+
|
|
1098
|
+
def _java_package_dir_candidates(package: str, roots: list[Path]) -> list[Path]:
|
|
1099
|
+
parts = [part for part in package.split(".") if part]
|
|
1100
|
+
if not parts:
|
|
1101
|
+
return []
|
|
1102
|
+
candidates: list[Path] = []
|
|
1103
|
+
for root in roots:
|
|
1104
|
+
package_dir = (root / Path(*parts)).resolve()
|
|
1105
|
+
# List the package dir's in-tree files as candidates (same-package /
|
|
1106
|
+
# wildcard linkage). ``_resolve_file_candidate`` matches exact node paths,
|
|
1107
|
+
# so we hand it each existing ``.java`` file directly.
|
|
1108
|
+
for node_path in _sorted_java_dir_files(package_dir):
|
|
1109
|
+
candidates.append(node_path)
|
|
1110
|
+
return candidates
|
|
1111
|
+
|
|
1112
|
+
|
|
1113
|
+
def _sorted_java_dir_files(package_dir: Path) -> list[Path]:
|
|
1114
|
+
if not package_dir.is_dir():
|
|
1115
|
+
return []
|
|
1116
|
+
return sorted(
|
|
1117
|
+
child.resolve()
|
|
1118
|
+
for child in package_dir.iterdir()
|
|
1119
|
+
if child.is_file() and child.suffix == ".java"
|
|
1120
|
+
)
|
|
1121
|
+
|
|
1122
|
+
|
|
1123
|
+
#: C/C++ source/header suffixes whose ``#include`` directives carry the intra-tree
|
|
1124
|
+
#: dependency graph. Used to suffix-dispatch the PATH-based resolver branch (DATA,
|
|
1125
|
+
#: not a ``language ==`` core gate). Kept in sync with the ``.h``/``.cc``/… keys of
|
|
1126
|
+
#: ``_SUFFIX_SPECIFIER_EXTRACTORS``.
|
|
1127
|
+
_CPP_SOURCE_SUFFIXES = frozenset({".h", ".hpp", ".hh", ".cc", ".cpp", ".cxx"})
|
|
1128
|
+
|
|
1129
|
+
#: Conventional C/C++ include-root directory names. A quote-form include such as
|
|
1130
|
+
#: ``"fmt/core.h"`` that is not relative to the including file is probed under
|
|
1131
|
+
#: these roots (``include`` covers fmt's ``include/fmt/*.h`` layout). Harvested
|
|
1132
|
+
#: header-node parent dirs are added at resolution time so unconventional roots
|
|
1133
|
+
#: still resolve from DATA.
|
|
1134
|
+
_CPP_INCLUDE_ROOTS = ("include", "src", "inc")
|
|
1135
|
+
|
|
1136
|
+
|
|
1137
|
+
def _cpp_include_candidates(
|
|
1138
|
+
import_ref: str,
|
|
1139
|
+
file_path: Path,
|
|
1140
|
+
path_to_node: dict[Path, str],
|
|
1141
|
+
) -> list[Path]:
|
|
1142
|
+
"""Map a C++ ``#include`` specifier to filesystem candidates (PATH-based).
|
|
1143
|
+
|
|
1144
|
+
The specifier is marker-prefixed by ``_extract_cpp_include_specifiers``:
|
|
1145
|
+
|
|
1146
|
+
* ``angle:vector`` (``#include <vector>``) → system/STL: NO candidates, so no
|
|
1147
|
+
edge forms (mirrors Java ``java.*`` producing no edge).
|
|
1148
|
+
* ``quote:fmt/core.h`` (``#include "fmt/core.h"``) → local header. The path
|
|
1149
|
+
ALREADY has its extension, so there is NO suffix synthesis (the divergence
|
|
1150
|
+
from Java's FQN→path mapping). Resolution order:
|
|
1151
|
+
1. relative to the including file's directory (``file.parent / spec``);
|
|
1152
|
+
2. each conventional include root (``include``/``src``/``inc``) under the
|
|
1153
|
+
project tree, located by walking up from the including file;
|
|
1154
|
+
3. the parent directory of every header node already in the file-set
|
|
1155
|
+
(harvested from DATA), so unconventional include roots still resolve.
|
|
1156
|
+
|
|
1157
|
+
``_resolve_file_candidate`` matches exact node paths first, so a fully-pathed
|
|
1158
|
+
candidate (``…/include/fmt/core.h``) resolves directly to its node.
|
|
1159
|
+
"""
|
|
1160
|
+
if import_ref.startswith(_CPP_ANGLE_SPECIFIER):
|
|
1161
|
+
return []
|
|
1162
|
+
if import_ref.startswith(_CPP_QUOTE_SPECIFIER):
|
|
1163
|
+
spec = import_ref[len(_CPP_QUOTE_SPECIFIER):]
|
|
1164
|
+
else:
|
|
1165
|
+
# Defensive: an unmarked specifier (e.g. a future extractor) is treated
|
|
1166
|
+
# as a quote-form local include.
|
|
1167
|
+
spec = import_ref
|
|
1168
|
+
spec = spec.strip()
|
|
1169
|
+
if not spec:
|
|
1170
|
+
return []
|
|
1171
|
+
|
|
1172
|
+
rel = Path(spec)
|
|
1173
|
+
candidates: list[Path] = []
|
|
1174
|
+
# 1. Relative to the including file's own directory (quote-form's primary
|
|
1175
|
+
# rule — ``#include "lib/b.h"`` next to ``a.cc``).
|
|
1176
|
+
candidates.append((file_path.parent / rel).resolve())
|
|
1177
|
+
|
|
1178
|
+
# 2. Conventional include roots discovered by walking up the including file's
|
|
1179
|
+
# ancestors (so ``include/fmt/core.h`` resolves from ``src/format.cc``).
|
|
1180
|
+
seen: set[Path] = set()
|
|
1181
|
+
for ancestor in [file_path.parent, *file_path.parents]:
|
|
1182
|
+
for root_name in _CPP_INCLUDE_ROOTS:
|
|
1183
|
+
root = ancestor / root_name
|
|
1184
|
+
key = root.resolve()
|
|
1185
|
+
if key in seen:
|
|
1186
|
+
continue
|
|
1187
|
+
seen.add(key)
|
|
1188
|
+
candidates.append((root / rel).resolve())
|
|
1189
|
+
|
|
1190
|
+
# 3. Harvest header-node parent directories from the file-set (DATA), so an
|
|
1191
|
+
# unconventional include root still resolves the trailing path segment(s).
|
|
1192
|
+
for header_dir in _cpp_header_root_dirs(path_to_node):
|
|
1193
|
+
candidates.append((header_dir / rel).resolve())
|
|
1194
|
+
|
|
1195
|
+
return candidates
|
|
1196
|
+
|
|
1197
|
+
|
|
1198
|
+
def _cpp_header_root_dirs(path_to_node: dict[Path, str]) -> list[Path]:
|
|
1199
|
+
"""Candidate include roots harvested from header nodes in the file-set.
|
|
1200
|
+
|
|
1201
|
+
For a header node ``…/include/fmt/core.h`` whose include path is ``fmt/core.h``
|
|
1202
|
+
the include ROOT is ``…/include``. We cannot know the split a priori, so we
|
|
1203
|
+
offer each header's parent AND grandparent dirs as roots; the joined
|
|
1204
|
+
candidate only resolves when it matches a real node path, so over-offering is
|
|
1205
|
+
harmless (no false edges).
|
|
1206
|
+
"""
|
|
1207
|
+
roots: dict[str, Path] = {}
|
|
1208
|
+
for node_path in path_to_node:
|
|
1209
|
+
if node_path.suffix not in _CPP_HEADER_SUFFIXES:
|
|
1210
|
+
continue
|
|
1211
|
+
for ancestor in (node_path.parent, node_path.parent.parent):
|
|
1212
|
+
resolved = ancestor.resolve()
|
|
1213
|
+
roots[str(resolved)] = resolved
|
|
1214
|
+
return sorted(roots.values(), key=lambda path: len(path.parts), reverse=True)
|
|
1215
|
+
|
|
1216
|
+
|
|
1217
|
+
#: C/C++ header suffixes (subset of ``_CPP_SOURCE_SUFFIXES``) used to harvest
|
|
1218
|
+
#: include-root directories from the node file-set.
|
|
1219
|
+
_CPP_HEADER_SUFFIXES = frozenset({".h", ".hpp", ".hh"})
|
|
1220
|
+
|
|
1221
|
+
|
|
984
1222
|
def _infer_test_targets(
|
|
985
1223
|
test_path: Path,
|
|
986
1224
|
project_root: Path,
|
|
@@ -1025,30 +1263,134 @@ def _extract_python_import_specifiers(file_path: Path) -> list[str]:
|
|
|
1025
1263
|
return get_extractor("python", "source").extract_import_specifiers(content)
|
|
1026
1264
|
|
|
1027
1265
|
|
|
1266
|
+
# Regex fallback for Java ``import`` / ``package`` specifiers, used only when the
|
|
1267
|
+
# tree-sitter-java binding is unavailable (otherwise the registry backend's AST
|
|
1268
|
+
# extractor is preferred). Mirrors the SHAPES emitted by
|
|
1269
|
+
# ``treesitter._extract_java_import_specifiers`` (``static`` keyword + ``.*``
|
|
1270
|
+
# wildcard + ``package`` line preserved) so the Java resolver branch is agnostic
|
|
1271
|
+
# to which extractor produced the specifier.
|
|
1272
|
+
_JAVA_IMPORT_SPECIFIER_RE = re.compile(
|
|
1273
|
+
r"^\s*import\s+(static\s+)?([\w.]+(?:\.\*)?)\s*;",
|
|
1274
|
+
re.MULTILINE,
|
|
1275
|
+
)
|
|
1276
|
+
_JAVA_PACKAGE_SPECIFIER_RE = re.compile(r"^\s*package\s+([\w.]+)\s*;", re.MULTILINE)
|
|
1277
|
+
|
|
1278
|
+
|
|
1279
|
+
def _extract_java_import_specifiers(file_path: Path) -> list[str]:
|
|
1280
|
+
"""Return raw Java ``import``/``package`` specifiers for DAG edge building.
|
|
1281
|
+
|
|
1282
|
+
Prefers the registry's Java ``source`` backend (tree-sitter-java) so the SAME
|
|
1283
|
+
extraction the scanner uses produces the DAG specifiers; degrades to a regex
|
|
1284
|
+
when the binding is absent. Either way the SHAPES (``static …`` / ``….*`` /
|
|
1285
|
+
``package …``) match, so ``_resolve_import_target``'s Java branch — dispatched
|
|
1286
|
+
by the ``.java`` suffix (DATA), not a ``language ==`` core branch — resolves
|
|
1287
|
+
them identically. Mirrors ``_extract_python_import_specifiers``.
|
|
1288
|
+
"""
|
|
1289
|
+
|
|
1290
|
+
from codd.parsing import get_extractor
|
|
1291
|
+
|
|
1292
|
+
content = file_path.read_text(encoding="utf-8", errors="ignore")
|
|
1293
|
+
specifiers = get_extractor("java", "source").extract_import_specifiers(content)
|
|
1294
|
+
if specifiers:
|
|
1295
|
+
return specifiers
|
|
1296
|
+
# Fallback: tree-sitter-java unavailable → RegexExtractor returned []. Recover
|
|
1297
|
+
# the same specifier shapes from a line regex so Java edges still form.
|
|
1298
|
+
fallback: list[str] = []
|
|
1299
|
+
package_match = _JAVA_PACKAGE_SPECIFIER_RE.search(content)
|
|
1300
|
+
if package_match:
|
|
1301
|
+
fallback.append(f"package {package_match.group(1)}")
|
|
1302
|
+
for static_kw, name in _JAVA_IMPORT_SPECIFIER_RE.findall(content):
|
|
1303
|
+
if name.endswith(".*"):
|
|
1304
|
+
fallback.append(name)
|
|
1305
|
+
elif static_kw:
|
|
1306
|
+
fallback.append(f"static {name}")
|
|
1307
|
+
else:
|
|
1308
|
+
fallback.append(name)
|
|
1309
|
+
return fallback
|
|
1310
|
+
|
|
1311
|
+
|
|
1312
|
+
# C++ ``#include`` directives. The DAG resolver needs to know quote-form
|
|
1313
|
+
# (``"…"`` — local, relative-first) vs angle-form (``<…>`` — system/STL, no
|
|
1314
|
+
# edge), so the extractor preserves that distinction by prefixing a marker:
|
|
1315
|
+
# ``"fmt/core.h"`` → ``quote:fmt/core.h``
|
|
1316
|
+
# ``<vector>`` → ``angle:vector``
|
|
1317
|
+
# Built-in regex (NOT routed through the registry): tree-sitter-cpp is not
|
|
1318
|
+
# installed, and ``RegexExtractor.extract_import_specifiers`` returns ``[]`` for
|
|
1319
|
+
# C++, so a self-contained regex is the source of these specifiers. The marker
|
|
1320
|
+
# is stripped by the resolver's ``.suffix``-dispatched C++ branch.
|
|
1321
|
+
_CPP_QUOTE_SPECIFIER = "quote:"
|
|
1322
|
+
_CPP_ANGLE_SPECIFIER = "angle:"
|
|
1323
|
+
_CPP_INCLUDE_RE = re.compile(
|
|
1324
|
+
r'^\s*#\s*include\s*(?:"([^"]+)"|<([^>]+)>)',
|
|
1325
|
+
re.MULTILINE,
|
|
1326
|
+
)
|
|
1327
|
+
|
|
1328
|
+
|
|
1329
|
+
def _extract_cpp_include_specifiers(file_path: Path) -> list[str]:
|
|
1330
|
+
"""Return raw C++ ``#include`` specifiers (quote/angle-marked) for the DAG.
|
|
1331
|
+
|
|
1332
|
+
Mirrors ``_extract_java_import_specifiers`` in role (suffix-dispatched raw
|
|
1333
|
+
specifier extraction) but uses a built-in regex because tree-sitter-cpp is
|
|
1334
|
+
absent. The quote/angle form is carried as a marker prefix so the
|
|
1335
|
+
PATH-based resolver can apply the right rule: quote-form resolves
|
|
1336
|
+
relative-to-file then via include roots; angle-form is system/STL and forms
|
|
1337
|
+
no edge (analogous to Java ``java.*`` producing no edge).
|
|
1338
|
+
"""
|
|
1339
|
+
|
|
1340
|
+
content = file_path.read_text(encoding="utf-8", errors="ignore")
|
|
1341
|
+
specifiers: list[str] = []
|
|
1342
|
+
for quote_target, angle_target in _CPP_INCLUDE_RE.findall(content):
|
|
1343
|
+
if quote_target:
|
|
1344
|
+
specifiers.append(f"{_CPP_QUOTE_SPECIFIER}{quote_target}")
|
|
1345
|
+
elif angle_target:
|
|
1346
|
+
specifiers.append(f"{_CPP_ANGLE_SPECIFIER}{angle_target}")
|
|
1347
|
+
return specifiers
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
#: Suffix → raw-specifier extractor (DATA dispatch). A source file whose language
|
|
1351
|
+
#: carries its intra-tree dependency graph in DOTTED specifiers (Python modules,
|
|
1352
|
+
#: Java FQNs) or ``#include`` directives (C/C++) resolves edges from these,
|
|
1353
|
+
#: instead of the builder's quoted-string ``extract_imports`` seam (JS/TS
|
|
1354
|
+
#: ``from '…'`` / ``require('…')``). Adding a language here is pure data — no
|
|
1355
|
+
#: core ``if language ==`` branch.
|
|
1356
|
+
_SUFFIX_SPECIFIER_EXTRACTORS: dict[str, "Callable[[Path], list[str]]"] = {
|
|
1357
|
+
".py": _extract_python_import_specifiers,
|
|
1358
|
+
".java": _extract_java_import_specifiers,
|
|
1359
|
+
".h": _extract_cpp_include_specifiers,
|
|
1360
|
+
".hpp": _extract_cpp_include_specifiers,
|
|
1361
|
+
".hh": _extract_cpp_include_specifiers,
|
|
1362
|
+
".cc": _extract_cpp_include_specifiers,
|
|
1363
|
+
".cpp": _extract_cpp_include_specifiers,
|
|
1364
|
+
".cxx": _extract_cpp_include_specifiers,
|
|
1365
|
+
}
|
|
1366
|
+
|
|
1367
|
+
|
|
1028
1368
|
def _extract_impl_imports(file_path: Path) -> list[str]:
|
|
1029
1369
|
"""Return raw import specifiers for an implementation file.
|
|
1030
1370
|
|
|
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)
|
|
1371
|
+
Python and Java impl files go through their registry-backed specifier
|
|
1372
|
+
extractors (the same path test files use) so impl→impl import edges form for
|
|
1373
|
+
them — the core of the fix. Every other language keeps the existing
|
|
1374
|
+
quoted-specifier extractor (``extract_imports``: JS/TS ``from '…'`` /
|
|
1375
|
+
``require('…')``), unchanged. Dispatch is by file suffix (DATA).
|
|
1036
1376
|
"""
|
|
1037
1377
|
|
|
1038
|
-
|
|
1039
|
-
|
|
1378
|
+
extractor = _SUFFIX_SPECIFIER_EXTRACTORS.get(file_path.suffix)
|
|
1379
|
+
if extractor is not None:
|
|
1380
|
+
return extractor(file_path)
|
|
1040
1381
|
return extract_imports(file_path)
|
|
1041
1382
|
|
|
1042
1383
|
|
|
1043
1384
|
def _extract_test_imports(file_path: Path) -> list[str]:
|
|
1044
1385
|
imports = extract_imports(file_path)
|
|
1045
|
-
|
|
1386
|
+
extractor = _SUFFIX_SPECIFIER_EXTRACTORS.get(file_path.suffix)
|
|
1387
|
+
if extractor is None:
|
|
1046
1388
|
return imports
|
|
1047
1389
|
|
|
1048
|
-
#
|
|
1049
|
-
# quoted-specifier pass above so a polyglot test file
|
|
1050
|
-
#
|
|
1051
|
-
return [*imports, *
|
|
1390
|
+
# Registry-backed dotted specifiers (Python relative imports / Java FQNs)
|
|
1391
|
+
# combined with the quoted-specifier pass above so a polyglot test file keeps
|
|
1392
|
+
# both seams' results.
|
|
1393
|
+
return [*imports, *extractor(file_path)]
|
|
1052
1394
|
|
|
1053
1395
|
|
|
1054
1396
|
def _resolve_python_import_target(import_ref: str, project_root: Path, path_to_node: dict[Path, str]) -> str | None:
|
|
@@ -1764,8 +2106,11 @@ def _language_for_path(path: Path) -> str:
|
|
|
1764
2106
|
".cs": "csharp",
|
|
1765
2107
|
".c": "c",
|
|
1766
2108
|
".cpp": "cpp",
|
|
2109
|
+
".cc": "cpp",
|
|
2110
|
+
".cxx": "cpp",
|
|
1767
2111
|
".h": "cpp",
|
|
1768
2112
|
".hpp": "cpp",
|
|
2113
|
+
".hh": "cpp",
|
|
1769
2114
|
".kt": "kotlin",
|
|
1770
2115
|
".kts": "kotlin",
|
|
1771
2116
|
".swift": "swift",
|
|
@@ -305,6 +305,11 @@ def _detect_language(project_root: Path, exclude_patterns: list[str]) -> str:
|
|
|
305
305
|
".py": "python", ".ts": "typescript", ".tsx": "typescript",
|
|
306
306
|
".js": "javascript", ".jsx": "javascript",
|
|
307
307
|
".java": "java", ".go": "go",
|
|
308
|
+
# C++ (incl. the common .cc/.cxx/.hh/.hpp variants). Listed as DATA so a
|
|
309
|
+
# header-heavy project like fmt (15 headers + .cc sources) is detected as
|
|
310
|
+
# ``cpp`` instead of vacuously falling back to ``python``.
|
|
311
|
+
".cc": "cpp", ".cpp": "cpp", ".cxx": "cpp",
|
|
312
|
+
".h": "cpp", ".hpp": "cpp", ".hh": "cpp",
|
|
308
313
|
}
|
|
309
314
|
|
|
310
315
|
for root, dirs, files in os.walk(project_root):
|
|
@@ -323,9 +328,24 @@ def _detect_language(project_root: Path, exclude_patterns: list[str]) -> str:
|
|
|
323
328
|
return max(counts, key=counts.get)
|
|
324
329
|
|
|
325
330
|
|
|
331
|
+
# Conventional JVM (Maven/Gradle) source / test layout. Detected by directory
|
|
332
|
+
# PRESENCE (DATA), not a language gate, so a polyglot repo that happens to carry
|
|
333
|
+
# this layout is handled the same way. ``src`` is deliberately NOT used as a
|
|
334
|
+
# source dir when ``src/main/*`` exists, because the bare ``src`` glob would also
|
|
335
|
+
# sweep in ``src/test/*`` (mixing tests into impl).
|
|
336
|
+
_JVM_SOURCE_LAYOUT_DIRS = ("src/main/java", "src/main/kotlin", "src/main/scala")
|
|
337
|
+
_JVM_TEST_LAYOUT_DIRS = ("src/test/java", "src/test/kotlin", "src/test/scala")
|
|
338
|
+
|
|
339
|
+
|
|
326
340
|
def _detect_source_dirs(project_root: Path, language: str) -> list[str]:
|
|
327
341
|
"""Auto-detect source directories."""
|
|
328
|
-
|
|
342
|
+
jvm_source = [d for d in _JVM_SOURCE_LAYOUT_DIRS if (project_root / d).is_dir()]
|
|
343
|
+
if jvm_source:
|
|
344
|
+
# Maven/Gradle layout: point at ``src/main/<lang>`` so the impl glob does
|
|
345
|
+
# not also pick up ``src/test/<lang>`` (which _detect_test_dirs claims).
|
|
346
|
+
return jvm_source
|
|
347
|
+
|
|
348
|
+
candidates = ["src", "lib", "app", "pkg", "cmd", "internal", "include"]
|
|
329
349
|
found = []
|
|
330
350
|
|
|
331
351
|
for c in candidates:
|
|
@@ -361,6 +381,12 @@ def _detect_test_dirs(project_root: Path) -> list[str]:
|
|
|
361
381
|
for c in candidates:
|
|
362
382
|
if (project_root / c).is_dir():
|
|
363
383
|
found.append(c)
|
|
384
|
+
# JVM (Maven/Gradle) layout keeps tests under ``src/test/<lang>`` rather than
|
|
385
|
+
# a top-level ``tests/``. Detected by directory presence (DATA), additive so
|
|
386
|
+
# non-JVM projects are unaffected.
|
|
387
|
+
for d in _JVM_TEST_LAYOUT_DIRS:
|
|
388
|
+
if (project_root / d).is_dir():
|
|
389
|
+
found.append(d)
|
|
364
390
|
return found
|
|
365
391
|
|
|
366
392
|
|