codd-dev 3.7.3__tar.gz → 3.7.5__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.3 → codd_dev-3.7.5}/PKG-INFO +1 -1
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/__init__.py +1 -1
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/builder.py +402 -11
- codd_dev-3.7.5/codd/dag/defaults/cpp_embedded.yaml +2 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/extractor.py +11 -1
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/parsing/regex_strategies.py +305 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/pyproject.toml +1 -1
- codd_dev-3.7.3/codd/dag/defaults/cpp_embedded.yaml +0 -2
- {codd_dev-3.7.3 → codd_dev-3.7.5}/.gitignore +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/LICENSE +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/README.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/bench_fixture/README.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/__main__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/_git_helper.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/action_outcome.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/ai_invoke.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/ai_patch.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/artifact_contract.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/artifact_ids.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/assembler.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/bridge.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/brownfield/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/capability_completeness.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/claude_cli.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/cli.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/clustering.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/coherence_adapters.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/coherence_engine.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/confidence.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/config.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/config_schema.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/contracts.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/contracts_registry/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/contracts_registry/__main__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/contracts_registry/certify.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/contracts_registry/generate_matrix.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/contracts_registry/registry.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/coverage_auditor.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/coverage_execution_coherence.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/coverage_metrics.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/auto_repair.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/cardinality_coverage.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/extraction_diagnostics.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/negative_space.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/resource_flow_coherence.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/semantic_contract_conflict.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/stale_evidence.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/extractor.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/impact.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/materiality.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/metadata_access.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/result_status.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dag/runner.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/defaults.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/defaults.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/dependency_lock_coherence.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deploy_targets/base.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployer.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/extractor.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/verification/pytest_http.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/deployment/providers/verification/vitest.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/design_md.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/diff/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/diff/apply.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/diff/engine.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/diff/persistence.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/discovery.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/drift.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/e2e_extractor.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/e2e_generator.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/e2e_harness.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/e2e_runner.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/apply.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/engine.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/finding.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/gap_to_ask.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/persistence.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/promote.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/routing.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/env_refs.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/extract_ai.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/extract_paths.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/design_updater.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/impact_planner.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fix/templates_loader.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fixer.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fixup_drift.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/frontmatter.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/generator.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/git_evidence.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/graph.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/greenfield/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/greenfield/pipeline.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/hitl_session.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/hooks/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/hooks/pre-commit +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/iac_nfr.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/implement_oracle.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/implement_oracle_scope.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/implement_oracle_types.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/implementer/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/implementer.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/import_coherence.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/inheritance.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/init/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/init/stack_detector.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/adapters/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/adapters/implement_oracle.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/adapters/oracle_go.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/adapters/oracle_python.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/adapters/oracle_typescript.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/adapters/runner_report.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/builtin_adapters.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/compat.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/contract.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/loader.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/oracle_executor.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/path_planner.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/profile.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/profiles/go.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/profiles/python.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/profiles/typescript.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/registry.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/verify_executor.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/languages/verify_plan.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/lexicon.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/approval.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/parser.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/mcp_server.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/measure.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/operational_e2e_audit.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/operations_derive.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/parsing/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/parsing/_shared.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/parsing/api_specs.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/parsing/extractor_registry.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/parsing/iac.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/parsing/python_ast.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/parsing/schemas.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/parsing/treesitter.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/path_safety.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/planner.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/policy.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/preflight/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/project_types.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/propagate.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/propagation_common.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/propagator.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/reference_resolution.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/registry.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/approval_repair.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/engine.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/git_patcher.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/history.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/loop.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/primary_picker.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/repair_result.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/schema.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair/verify_runner.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/repair_slice.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/require.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/require_plugins.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/require_propagate.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/requirements_meta.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/restoration_report.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/restore.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/routes_extractor.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/scanner.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/schema_refs.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/screen_flow_validator.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/skills_cli/manager.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/skills_cli/paths.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/adapters/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/adapters/_base.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/adapters/nextjs.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/adapters/playwright.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/adapters/prisma.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/command_authenticity.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/command_override.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/command_plan.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/compose.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/loader.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/lock.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/obligations.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/profile.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/profiles/addons/playwright.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/profiles/addons/prisma.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/project.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/registry.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/replacement_proof.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/stack/resolve.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/surface_reconciliation.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/synth.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/test_detection.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/test_import_coherence.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/traceability.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/validator.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/vb_marker_authenticity.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/vb_rerun_scope.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/verifiable_behavior_audit.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/watch/__init__.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/watch/events.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/watch/propagation_log.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/watch/test_runner.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/watch/watcher.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd/wiring.py +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/docs/requirements/README.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/examples/README.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-3.7.3 → codd_dev-3.7.5}/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.5
|
|
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
|
|
@@ -372,9 +372,11 @@ def _add_import_edges(
|
|
|
372
372
|
for node_id, file_path in impl_nodes.items():
|
|
373
373
|
imports = dag.nodes[node_id].attributes.get("imports", [])
|
|
374
374
|
for import_ref in imports:
|
|
375
|
-
target_id
|
|
376
|
-
|
|
377
|
-
|
|
375
|
+
for target_id in _resolve_import_targets(
|
|
376
|
+
import_ref, file_path, project_root, path_to_node, aliases
|
|
377
|
+
):
|
|
378
|
+
if target_id and target_id != node_id:
|
|
379
|
+
dag.add_edge(Edge(from_id=node_id, to_id=target_id, kind="imports"))
|
|
378
380
|
|
|
379
381
|
|
|
380
382
|
def _add_tested_by_edges(
|
|
@@ -904,6 +906,29 @@ def _resolve_design_dependency(
|
|
|
904
906
|
return None
|
|
905
907
|
|
|
906
908
|
|
|
909
|
+
def _resolve_import_targets(
|
|
910
|
+
import_ref: str,
|
|
911
|
+
file_path: Path,
|
|
912
|
+
project_root: Path,
|
|
913
|
+
path_to_node: dict[Path, str],
|
|
914
|
+
aliases: dict[str, list[str]],
|
|
915
|
+
) -> list[str]:
|
|
916
|
+
"""Resolve one import specifier to ALL its in-tree target node ids.
|
|
917
|
+
|
|
918
|
+
Most languages have a single resolved target per specifier (Python module,
|
|
919
|
+
Java FQN, C++ ``#include`` path), so this delegates to the singular
|
|
920
|
+
``_resolve_import_target`` and wraps its result. C# is the one intrinsically
|
|
921
|
+
MULTI-target language: a ``using`` names a namespace that many files declare,
|
|
922
|
+
so its ``.cs``-suffix branch resolves via the namespace reverse-index and may
|
|
923
|
+
return several node ids. Dispatch is by the importing file's suffix (DATA),
|
|
924
|
+
not a ``language ==`` core gate — adding a multi-target language is data.
|
|
925
|
+
"""
|
|
926
|
+
if file_path.suffix == ".cs":
|
|
927
|
+
return _resolve_csharp_import_targets(import_ref, file_path, path_to_node)
|
|
928
|
+
single = _resolve_import_target(import_ref, file_path, project_root, path_to_node, aliases)
|
|
929
|
+
return [single] if single else []
|
|
930
|
+
|
|
931
|
+
|
|
907
932
|
def _resolve_import_target(
|
|
908
933
|
import_ref: str,
|
|
909
934
|
file_path: Path,
|
|
@@ -924,6 +949,19 @@ def _resolve_import_target(
|
|
|
924
949
|
return resolved
|
|
925
950
|
return None
|
|
926
951
|
|
|
952
|
+
# C++ ``#include`` specifiers are dispatched by the IMPORTING file's C/C++
|
|
953
|
+
# suffix (DATA, not a ``language ==`` core branch). Resolution is PATH-based
|
|
954
|
+
# (the specifier already carries its extension, e.g. ``fmt/core.h``), the key
|
|
955
|
+
# divergence from Java's FQN→path synthesis: a quote-form include resolves
|
|
956
|
+
# relative-to-file first, then via include roots; an angle-form include is
|
|
957
|
+
# system/STL and produces no edge.
|
|
958
|
+
if file_path.suffix in _CPP_SOURCE_SUFFIXES:
|
|
959
|
+
for candidate in _cpp_include_candidates(import_ref, file_path, path_to_node):
|
|
960
|
+
resolved = _resolve_file_candidate(candidate, path_to_node)
|
|
961
|
+
if resolved:
|
|
962
|
+
return resolved
|
|
963
|
+
return None
|
|
964
|
+
|
|
927
965
|
candidates: list[Path] = []
|
|
928
966
|
if _is_js_relative_specifier(import_ref):
|
|
929
967
|
# JS/TS relative: ``./foo`` / ``../foo`` — resolve against the file dir
|
|
@@ -1107,6 +1145,228 @@ def _sorted_java_dir_files(package_dir: Path) -> list[Path]:
|
|
|
1107
1145
|
)
|
|
1108
1146
|
|
|
1109
1147
|
|
|
1148
|
+
#: C/C++ source/header suffixes whose ``#include`` directives carry the intra-tree
|
|
1149
|
+
#: dependency graph. Used to suffix-dispatch the PATH-based resolver branch (DATA,
|
|
1150
|
+
#: not a ``language ==`` core gate). Kept in sync with the ``.h``/``.cc``/… keys of
|
|
1151
|
+
#: ``_SUFFIX_SPECIFIER_EXTRACTORS``.
|
|
1152
|
+
_CPP_SOURCE_SUFFIXES = frozenset({".h", ".hpp", ".hh", ".cc", ".cpp", ".cxx"})
|
|
1153
|
+
|
|
1154
|
+
#: Conventional C/C++ include-root directory names. A quote-form include such as
|
|
1155
|
+
#: ``"fmt/core.h"`` that is not relative to the including file is probed under
|
|
1156
|
+
#: these roots (``include`` covers fmt's ``include/fmt/*.h`` layout). Harvested
|
|
1157
|
+
#: header-node parent dirs are added at resolution time so unconventional roots
|
|
1158
|
+
#: still resolve from DATA.
|
|
1159
|
+
_CPP_INCLUDE_ROOTS = ("include", "src", "inc")
|
|
1160
|
+
|
|
1161
|
+
|
|
1162
|
+
def _cpp_include_candidates(
|
|
1163
|
+
import_ref: str,
|
|
1164
|
+
file_path: Path,
|
|
1165
|
+
path_to_node: dict[Path, str],
|
|
1166
|
+
) -> list[Path]:
|
|
1167
|
+
"""Map a C++ ``#include`` specifier to filesystem candidates (PATH-based).
|
|
1168
|
+
|
|
1169
|
+
The specifier is marker-prefixed by ``_extract_cpp_include_specifiers``:
|
|
1170
|
+
|
|
1171
|
+
* ``angle:vector`` (``#include <vector>``) → system/STL: NO candidates, so no
|
|
1172
|
+
edge forms (mirrors Java ``java.*`` producing no edge).
|
|
1173
|
+
* ``quote:fmt/core.h`` (``#include "fmt/core.h"``) → local header. The path
|
|
1174
|
+
ALREADY has its extension, so there is NO suffix synthesis (the divergence
|
|
1175
|
+
from Java's FQN→path mapping). Resolution order:
|
|
1176
|
+
1. relative to the including file's directory (``file.parent / spec``);
|
|
1177
|
+
2. each conventional include root (``include``/``src``/``inc``) under the
|
|
1178
|
+
project tree, located by walking up from the including file;
|
|
1179
|
+
3. the parent directory of every header node already in the file-set
|
|
1180
|
+
(harvested from DATA), so unconventional include roots still resolve.
|
|
1181
|
+
|
|
1182
|
+
``_resolve_file_candidate`` matches exact node paths first, so a fully-pathed
|
|
1183
|
+
candidate (``…/include/fmt/core.h``) resolves directly to its node.
|
|
1184
|
+
"""
|
|
1185
|
+
if import_ref.startswith(_CPP_ANGLE_SPECIFIER):
|
|
1186
|
+
return []
|
|
1187
|
+
if import_ref.startswith(_CPP_QUOTE_SPECIFIER):
|
|
1188
|
+
spec = import_ref[len(_CPP_QUOTE_SPECIFIER):]
|
|
1189
|
+
else:
|
|
1190
|
+
# Defensive: an unmarked specifier (e.g. a future extractor) is treated
|
|
1191
|
+
# as a quote-form local include.
|
|
1192
|
+
spec = import_ref
|
|
1193
|
+
spec = spec.strip()
|
|
1194
|
+
if not spec:
|
|
1195
|
+
return []
|
|
1196
|
+
|
|
1197
|
+
rel = Path(spec)
|
|
1198
|
+
candidates: list[Path] = []
|
|
1199
|
+
# 1. Relative to the including file's own directory (quote-form's primary
|
|
1200
|
+
# rule — ``#include "lib/b.h"`` next to ``a.cc``).
|
|
1201
|
+
candidates.append((file_path.parent / rel).resolve())
|
|
1202
|
+
|
|
1203
|
+
# 2. Conventional include roots discovered by walking up the including file's
|
|
1204
|
+
# ancestors (so ``include/fmt/core.h`` resolves from ``src/format.cc``).
|
|
1205
|
+
seen: set[Path] = set()
|
|
1206
|
+
for ancestor in [file_path.parent, *file_path.parents]:
|
|
1207
|
+
for root_name in _CPP_INCLUDE_ROOTS:
|
|
1208
|
+
root = ancestor / root_name
|
|
1209
|
+
key = root.resolve()
|
|
1210
|
+
if key in seen:
|
|
1211
|
+
continue
|
|
1212
|
+
seen.add(key)
|
|
1213
|
+
candidates.append((root / rel).resolve())
|
|
1214
|
+
|
|
1215
|
+
# 3. Harvest header-node parent directories from the file-set (DATA), so an
|
|
1216
|
+
# unconventional include root still resolves the trailing path segment(s).
|
|
1217
|
+
for header_dir in _cpp_header_root_dirs(path_to_node):
|
|
1218
|
+
candidates.append((header_dir / rel).resolve())
|
|
1219
|
+
|
|
1220
|
+
return candidates
|
|
1221
|
+
|
|
1222
|
+
|
|
1223
|
+
def _cpp_header_root_dirs(path_to_node: dict[Path, str]) -> list[Path]:
|
|
1224
|
+
"""Candidate include roots harvested from header nodes in the file-set.
|
|
1225
|
+
|
|
1226
|
+
For a header node ``…/include/fmt/core.h`` whose include path is ``fmt/core.h``
|
|
1227
|
+
the include ROOT is ``…/include``. We cannot know the split a priori, so we
|
|
1228
|
+
offer each header's parent AND grandparent dirs as roots; the joined
|
|
1229
|
+
candidate only resolves when it matches a real node path, so over-offering is
|
|
1230
|
+
harmless (no false edges).
|
|
1231
|
+
"""
|
|
1232
|
+
roots: dict[str, Path] = {}
|
|
1233
|
+
for node_path in path_to_node:
|
|
1234
|
+
if node_path.suffix not in _CPP_HEADER_SUFFIXES:
|
|
1235
|
+
continue
|
|
1236
|
+
for ancestor in (node_path.parent, node_path.parent.parent):
|
|
1237
|
+
resolved = ancestor.resolve()
|
|
1238
|
+
roots[str(resolved)] = resolved
|
|
1239
|
+
return sorted(roots.values(), key=lambda path: len(path.parts), reverse=True)
|
|
1240
|
+
|
|
1241
|
+
|
|
1242
|
+
#: C/C++ header suffixes (subset of ``_CPP_SOURCE_SUFFIXES``) used to harvest
|
|
1243
|
+
#: include-root directories from the node file-set.
|
|
1244
|
+
_CPP_HEADER_SUFFIXES = frozenset({".h", ".hpp", ".hh"})
|
|
1245
|
+
|
|
1246
|
+
|
|
1247
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
1248
|
+
# C# NAMESPACE reverse-index resolution (the novel mechanism for this language).
|
|
1249
|
+
#
|
|
1250
|
+
# C# is the third structural model after Java (FQN→path synthesis) and C++
|
|
1251
|
+
# (PATH-based include). The divergence: a C# ``using`` names a NAMESPACE, and a
|
|
1252
|
+
# namespace is NOT directory-tied — ``namespace Dapper;`` is declared by many
|
|
1253
|
+
# files spread across different directories (Dapper/, Dapper.SqlBuilder/, …).
|
|
1254
|
+
# There is no path to synthesize. So resolution is two-phase:
|
|
1255
|
+
# (1) a first pass over the file-set builds a namespace→declaring-files reverse
|
|
1256
|
+
# index (each .cs file's declared ``namespace`` lines → that file);
|
|
1257
|
+
# (2) a ``using Dapper.X`` resolves to the files declaring ``namespace
|
|
1258
|
+
# Dapper.X`` (EXACT namespace match), which is a SET of files, not one.
|
|
1259
|
+
# Because one ``using`` legitimately depends on every file of the target
|
|
1260
|
+
# namespace, this is the one language whose resolution is intrinsically
|
|
1261
|
+
# multi-target (handled by ``_resolve_import_targets`` plural).
|
|
1262
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
1263
|
+
|
|
1264
|
+
#: C# namespace declaration — both file-scoped (``namespace X.Y;``) and block
|
|
1265
|
+
#: (``namespace X.Y {`` / ``namespace X.Y`` then ``{`` on the next line) forms.
|
|
1266
|
+
#: Mirrors ``regex_strategies._CSHARP_NAMESPACE_RE``.
|
|
1267
|
+
_CSHARP_NAMESPACE_DECL_RE = re.compile(
|
|
1268
|
+
r'^\s*namespace\s+([\w.]+)\s*[;{]?\s*$',
|
|
1269
|
+
re.MULTILINE,
|
|
1270
|
+
)
|
|
1271
|
+
|
|
1272
|
+
#: Cap on how many files a SINGLE ``using`` may resolve to, so a using of a very
|
|
1273
|
+
#: large namespace cannot explode the edge count pathologically. When a namespace
|
|
1274
|
+
#: is declared by more files than this, we keep the edges deterministic (sorted)
|
|
1275
|
+
#: and truncate; the WARN-level reachability layer still sees a connected node.
|
|
1276
|
+
#: Generous enough that real same-namespace fan-out (Dapper declares its core
|
|
1277
|
+
#: namespace across ~dozens of files) is preserved.
|
|
1278
|
+
_CSHARP_NAMESPACE_FANOUT_CAP = 64
|
|
1279
|
+
|
|
1280
|
+
#: Process-lifetime cache of the namespace reverse-index, keyed by the IDENTITY +
|
|
1281
|
+
#: size of the ``path_to_node`` map. ``_add_import_edges`` / ``_add_tested_by_edges``
|
|
1282
|
+
#: each build a fresh ``path_to_node`` and reuse it across every import in their
|
|
1283
|
+
#: loop, so caching by ``id()`` (guarded by ``len()`` against id-reuse after GC)
|
|
1284
|
+
#: builds the index ONCE per DAG-build phase instead of per-using.
|
|
1285
|
+
_CSHARP_NS_INDEX_CACHE: dict[tuple[int, int], dict[str, list[str]]] = {}
|
|
1286
|
+
|
|
1287
|
+
|
|
1288
|
+
def _csharp_namespace_index(path_to_node: dict[Path, str]) -> dict[str, list[str]]:
|
|
1289
|
+
"""Return the namespace→declaring-node-ids reverse-index (built once, cached).
|
|
1290
|
+
|
|
1291
|
+
First pass over the .cs file-set: every ``namespace X.Y`` declared in a file
|
|
1292
|
+
(file-scoped OR block form) maps that namespace to the file's node id. A file
|
|
1293
|
+
may declare multiple namespaces; a namespace may be declared by many files
|
|
1294
|
+
(the whole point — namespaces are not directory-tied). Node-id lists are kept
|
|
1295
|
+
sorted for deterministic edge output.
|
|
1296
|
+
"""
|
|
1297
|
+
key = (id(path_to_node), len(path_to_node))
|
|
1298
|
+
cached = _CSHARP_NS_INDEX_CACHE.get(key)
|
|
1299
|
+
if cached is not None:
|
|
1300
|
+
return cached
|
|
1301
|
+
|
|
1302
|
+
index: dict[str, set[str]] = {}
|
|
1303
|
+
for file_path, node_id in path_to_node.items():
|
|
1304
|
+
if file_path.suffix != ".cs":
|
|
1305
|
+
continue
|
|
1306
|
+
try:
|
|
1307
|
+
content = file_path.read_text(encoding="utf-8", errors="ignore")
|
|
1308
|
+
except OSError:
|
|
1309
|
+
continue
|
|
1310
|
+
for namespace in _CSHARP_NAMESPACE_DECL_RE.findall(content):
|
|
1311
|
+
index.setdefault(namespace, set()).add(node_id)
|
|
1312
|
+
|
|
1313
|
+
materialized = {ns: sorted(ids) for ns, ids in index.items()}
|
|
1314
|
+
_CSHARP_NS_INDEX_CACHE[key] = materialized
|
|
1315
|
+
return materialized
|
|
1316
|
+
|
|
1317
|
+
|
|
1318
|
+
def _csharp_using_namespaces(import_ref: str) -> list[str]:
|
|
1319
|
+
"""Candidate namespaces to look up for one ``using`` specifier (most-specific first).
|
|
1320
|
+
|
|
1321
|
+
* plain / global / alias ``using Dapper.X`` → ``["Dapper.X"]`` (exact).
|
|
1322
|
+
* ``static Dapper.SqlMapper`` → ``["Dapper.SqlMapper", "Dapper"]``: a
|
|
1323
|
+
``using static`` targets a TYPE (``Dapper.SqlMapper``), whose declaring file
|
|
1324
|
+
lives in the type's OWNING namespace (``Dapper``). We try the full path as a
|
|
1325
|
+
namespace first (harmless if it is not one — just no match), then the parent
|
|
1326
|
+
namespace (drop the type segment), which is the real resolution.
|
|
1327
|
+
"""
|
|
1328
|
+
spec = import_ref
|
|
1329
|
+
is_static = spec.startswith(_CSHARP_STATIC_SPECIFIER)
|
|
1330
|
+
if is_static:
|
|
1331
|
+
spec = spec[len(_CSHARP_STATIC_SPECIFIER):].strip()
|
|
1332
|
+
if not spec:
|
|
1333
|
+
return []
|
|
1334
|
+
candidates = [spec]
|
|
1335
|
+
if is_static:
|
|
1336
|
+
parent = spec.rsplit(".", 1)[0] if "." in spec else ""
|
|
1337
|
+
if parent and parent != spec:
|
|
1338
|
+
candidates.append(parent)
|
|
1339
|
+
return candidates
|
|
1340
|
+
|
|
1341
|
+
|
|
1342
|
+
def _resolve_csharp_import_targets(
|
|
1343
|
+
import_ref: str,
|
|
1344
|
+
file_path: Path,
|
|
1345
|
+
path_to_node: dict[Path, str],
|
|
1346
|
+
) -> list[str]:
|
|
1347
|
+
"""Resolve one C# ``using`` to the node ids declaring its namespace (EXACT).
|
|
1348
|
+
|
|
1349
|
+
Sub-namespace handling: resolution is by EXACT namespace match only. A
|
|
1350
|
+
``using Dapper`` resolves to files declaring exactly ``namespace Dapper`` — it
|
|
1351
|
+
does NOT transitively pull in ``Dapper.Tests`` / ``Dapper.SqlBuilder`` files.
|
|
1352
|
+
This is both correct (a parent-namespace using does not import child
|
|
1353
|
+
namespaces in C#; each child needs its own ``using``) and the primary
|
|
1354
|
+
explosion guard (no namespace-prefix fan-out). For a ``using static`` the
|
|
1355
|
+
type's owning namespace is the fallback candidate (see
|
|
1356
|
+
``_csharp_using_namespaces``); the first candidate that matches the index
|
|
1357
|
+
wins, so a static import does not double-count.
|
|
1358
|
+
|
|
1359
|
+
Secondary explosion guard: a single using that matches a very large namespace
|
|
1360
|
+
is truncated at ``_CSHARP_NAMESPACE_FANOUT_CAP`` (deterministic, sorted).
|
|
1361
|
+
"""
|
|
1362
|
+
index = _csharp_namespace_index(path_to_node)
|
|
1363
|
+
for namespace in _csharp_using_namespaces(import_ref):
|
|
1364
|
+
node_ids = index.get(namespace)
|
|
1365
|
+
if node_ids:
|
|
1366
|
+
return node_ids[:_CSHARP_NAMESPACE_FANOUT_CAP]
|
|
1367
|
+
return []
|
|
1368
|
+
|
|
1369
|
+
|
|
1110
1370
|
def _infer_test_targets(
|
|
1111
1371
|
test_path: Path,
|
|
1112
1372
|
project_root: Path,
|
|
@@ -1116,11 +1376,15 @@ def _infer_test_targets(
|
|
|
1116
1376
|
targets: set[str] = set()
|
|
1117
1377
|
|
|
1118
1378
|
for import_ref in _extract_test_imports(test_path):
|
|
1119
|
-
|
|
1120
|
-
if not
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1379
|
+
resolved = _resolve_import_targets(import_ref, test_path, project_root, path_to_node, aliases)
|
|
1380
|
+
if not resolved and "." in import_ref and not import_ref.startswith("."):
|
|
1381
|
+
# Python absolute-dotted fallback (non-C#: the plural resolver returns
|
|
1382
|
+
# at most one for those). C# usings already resolve via the namespace
|
|
1383
|
+
# index inside ``_resolve_import_targets``, so this never double-fires.
|
|
1384
|
+
python_target = _resolve_python_import_target(import_ref, project_root, path_to_node)
|
|
1385
|
+
if python_target:
|
|
1386
|
+
resolved = [python_target]
|
|
1387
|
+
targets.update(resolved)
|
|
1124
1388
|
|
|
1125
1389
|
convention_key = _test_convention_key(test_path, project_root)
|
|
1126
1390
|
if convention_key:
|
|
@@ -1197,14 +1461,102 @@ def _extract_java_import_specifiers(file_path: Path) -> list[str]:
|
|
|
1197
1461
|
return fallback
|
|
1198
1462
|
|
|
1199
1463
|
|
|
1464
|
+
# C++ ``#include`` directives. The DAG resolver needs to know quote-form
|
|
1465
|
+
# (``"…"`` — local, relative-first) vs angle-form (``<…>`` — system/STL, no
|
|
1466
|
+
# edge), so the extractor preserves that distinction by prefixing a marker:
|
|
1467
|
+
# ``"fmt/core.h"`` → ``quote:fmt/core.h``
|
|
1468
|
+
# ``<vector>`` → ``angle:vector``
|
|
1469
|
+
# Built-in regex (NOT routed through the registry): tree-sitter-cpp is not
|
|
1470
|
+
# installed, and ``RegexExtractor.extract_import_specifiers`` returns ``[]`` for
|
|
1471
|
+
# C++, so a self-contained regex is the source of these specifiers. The marker
|
|
1472
|
+
# is stripped by the resolver's ``.suffix``-dispatched C++ branch.
|
|
1473
|
+
_CPP_QUOTE_SPECIFIER = "quote:"
|
|
1474
|
+
_CPP_ANGLE_SPECIFIER = "angle:"
|
|
1475
|
+
_CPP_INCLUDE_RE = re.compile(
|
|
1476
|
+
r'^\s*#\s*include\s*(?:"([^"]+)"|<([^>]+)>)',
|
|
1477
|
+
re.MULTILINE,
|
|
1478
|
+
)
|
|
1479
|
+
|
|
1480
|
+
|
|
1481
|
+
def _extract_cpp_include_specifiers(file_path: Path) -> list[str]:
|
|
1482
|
+
"""Return raw C++ ``#include`` specifiers (quote/angle-marked) for the DAG.
|
|
1483
|
+
|
|
1484
|
+
Mirrors ``_extract_java_import_specifiers`` in role (suffix-dispatched raw
|
|
1485
|
+
specifier extraction) but uses a built-in regex because tree-sitter-cpp is
|
|
1486
|
+
absent. The quote/angle form is carried as a marker prefix so the
|
|
1487
|
+
PATH-based resolver can apply the right rule: quote-form resolves
|
|
1488
|
+
relative-to-file then via include roots; angle-form is system/STL and forms
|
|
1489
|
+
no edge (analogous to Java ``java.*`` producing no edge).
|
|
1490
|
+
"""
|
|
1491
|
+
|
|
1492
|
+
content = file_path.read_text(encoding="utf-8", errors="ignore")
|
|
1493
|
+
specifiers: list[str] = []
|
|
1494
|
+
for quote_target, angle_target in _CPP_INCLUDE_RE.findall(content):
|
|
1495
|
+
if quote_target:
|
|
1496
|
+
specifiers.append(f"{_CPP_QUOTE_SPECIFIER}{quote_target}")
|
|
1497
|
+
elif angle_target:
|
|
1498
|
+
specifiers.append(f"{_CPP_ANGLE_SPECIFIER}{angle_target}")
|
|
1499
|
+
return specifiers
|
|
1500
|
+
|
|
1501
|
+
|
|
1502
|
+
# C# ``using`` directives. Unlike C++ ``#include`` (path) or Java FQN→path, a C#
|
|
1503
|
+
# ``using`` names a NAMESPACE, which is NOT directory-tied — ``namespace Dapper;``
|
|
1504
|
+
# is declared across files in different dirs. So the resolver needs a
|
|
1505
|
+
# namespace→declaring-files reverse-index (built once over the file-set), not a
|
|
1506
|
+
# path probe. The extractor's job is just to surface the raw using forms:
|
|
1507
|
+
# ``using X.Y;`` → ``X.Y``
|
|
1508
|
+
# ``using static X.Y.Member;``→ ``static X.Y.Member`` (resolver drops Member)
|
|
1509
|
+
# ``using Alias = X.Y;`` → ``X.Y`` (alias name is irrelevant to edges)
|
|
1510
|
+
# ``global using X.Y;`` → ``X.Y``
|
|
1511
|
+
# Built-in regex (NOT routed through the registry): tree-sitter-c-sharp is NOT
|
|
1512
|
+
# installed, and ``RegexExtractor.extract_import_specifiers`` returns ``[]`` for
|
|
1513
|
+
# C#, so a self-contained regex is the source of these specifiers (mirrors the
|
|
1514
|
+
# C++ precedent of deferring tree-sitter wiring). The ``static`` marker is the
|
|
1515
|
+
# only shape distinction the resolver needs.
|
|
1516
|
+
_CSHARP_STATIC_SPECIFIER = "static "
|
|
1517
|
+
_CSHARP_USING_RE = re.compile(
|
|
1518
|
+
r'^\s*(?:global\s+)?using\s+(static\s+)?(?:[\w.]+\s*=\s*)?([\w.]+)\s*;',
|
|
1519
|
+
re.MULTILINE,
|
|
1520
|
+
)
|
|
1521
|
+
|
|
1522
|
+
|
|
1523
|
+
def _extract_csharp_import_specifiers(file_path: Path) -> list[str]:
|
|
1524
|
+
"""Return raw C# ``using`` specifiers (static-marked) for the DAG.
|
|
1525
|
+
|
|
1526
|
+
Mirrors ``_extract_cpp_include_specifiers`` / ``_extract_java_import_specifiers``
|
|
1527
|
+
in role (suffix-dispatched raw specifier extraction) but uses a built-in
|
|
1528
|
+
regex because tree-sitter-c-sharp is absent. ``using static X.Y.Member`` is
|
|
1529
|
+
surfaced with a ``static `` prefix so the NAMESPACE-index resolver knows to
|
|
1530
|
+
also try the parent namespace (the member's owning type's namespace); plain /
|
|
1531
|
+
global / alias usings are surfaced as the bare imported namespace.
|
|
1532
|
+
"""
|
|
1533
|
+
|
|
1534
|
+
content = file_path.read_text(encoding="utf-8", errors="ignore")
|
|
1535
|
+
specifiers: list[str] = []
|
|
1536
|
+
for static_kw, namespace in _CSHARP_USING_RE.findall(content):
|
|
1537
|
+
if static_kw:
|
|
1538
|
+
specifiers.append(f"{_CSHARP_STATIC_SPECIFIER}{namespace}")
|
|
1539
|
+
else:
|
|
1540
|
+
specifiers.append(namespace)
|
|
1541
|
+
return specifiers
|
|
1542
|
+
|
|
1543
|
+
|
|
1200
1544
|
#: Suffix → raw-specifier extractor (DATA dispatch). A source file whose language
|
|
1201
1545
|
#: carries its intra-tree dependency graph in DOTTED specifiers (Python modules,
|
|
1202
|
-
#: Java FQNs
|
|
1203
|
-
#:
|
|
1204
|
-
#: language here is pure data —
|
|
1546
|
+
#: Java FQNs, C# namespaces) or ``#include`` directives (C/C++) resolves edges
|
|
1547
|
+
#: from these, instead of the builder's quoted-string ``extract_imports`` seam
|
|
1548
|
+
#: (JS/TS ``from '…'`` / ``require('…')``). Adding a language here is pure data —
|
|
1549
|
+
#: no core ``if language ==`` branch.
|
|
1205
1550
|
_SUFFIX_SPECIFIER_EXTRACTORS: dict[str, "Callable[[Path], list[str]]"] = {
|
|
1206
1551
|
".py": _extract_python_import_specifiers,
|
|
1207
1552
|
".java": _extract_java_import_specifiers,
|
|
1553
|
+
".h": _extract_cpp_include_specifiers,
|
|
1554
|
+
".hpp": _extract_cpp_include_specifiers,
|
|
1555
|
+
".hh": _extract_cpp_include_specifiers,
|
|
1556
|
+
".cc": _extract_cpp_include_specifiers,
|
|
1557
|
+
".cpp": _extract_cpp_include_specifiers,
|
|
1558
|
+
".cxx": _extract_cpp_include_specifiers,
|
|
1559
|
+
".cs": _extract_csharp_import_specifiers,
|
|
1208
1560
|
}
|
|
1209
1561
|
|
|
1210
1562
|
|
|
@@ -1246,6 +1598,22 @@ def _resolve_python_import_target(import_ref: str, project_root: Path, path_to_n
|
|
|
1246
1598
|
return path_to_node.get(init_path)
|
|
1247
1599
|
|
|
1248
1600
|
|
|
1601
|
+
#: ESM/TS extension-swap map (DATA, not a ``language ==`` branch). Under
|
|
1602
|
+
#: ``moduleResolution: NodeNext``/``Bundler`` a TypeScript import specifier MUST
|
|
1603
|
+
#: carry the EMITTED ``.js`` extension that resolves to the ``.ts`` SOURCE file
|
|
1604
|
+
#: (``import { x } from "./types.js"`` → ``types.ts``). Each emitted suffix maps
|
|
1605
|
+
#: to the source suffixes it can stand in for. Resolution tries these ONLY as a
|
|
1606
|
+
#: last-resort fallback (after exact-match and bare suffix-append both fail), so
|
|
1607
|
+
#: a real ``./foo.js`` target still wins by exact match — JS projects with real
|
|
1608
|
+
#: ``.js`` files are unaffected.
|
|
1609
|
+
_ESM_EXTENSION_SWAP: dict[str, tuple[str, ...]] = {
|
|
1610
|
+
".js": (".ts", ".tsx"),
|
|
1611
|
+
".jsx": (".tsx", ".ts"),
|
|
1612
|
+
".mjs": (".mts", ".ts"),
|
|
1613
|
+
".cjs": (".cts", ".ts"),
|
|
1614
|
+
}
|
|
1615
|
+
|
|
1616
|
+
|
|
1249
1617
|
def _resolve_file_candidate(candidate: Path, path_to_node: dict[Path, str]) -> str | None:
|
|
1250
1618
|
if candidate in path_to_node:
|
|
1251
1619
|
return path_to_node[candidate]
|
|
@@ -1263,6 +1631,26 @@ def _resolve_file_candidate(candidate: Path, path_to_node: dict[Path, str]) -> s
|
|
|
1263
1631
|
init_file = candidate / "__init__.py"
|
|
1264
1632
|
if init_file in path_to_node:
|
|
1265
1633
|
return path_to_node[init_file]
|
|
1634
|
+
|
|
1635
|
+
# FALLBACK (only after exact-match + suffix-append + index/__init__ all
|
|
1636
|
+
# failed): the specifier carries an emitted ESM extension (``.js``/…) that
|
|
1637
|
+
# should resolve to a ``.ts`` SOURCE file. Swap the emitted suffix for each
|
|
1638
|
+
# candidate source suffix and retry both the file form (``./types.js`` →
|
|
1639
|
+
# ``types.ts``) and the directory-index form (``./foo.js`` → ``foo/index.ts``).
|
|
1640
|
+
source_suffixes = _ESM_EXTENSION_SWAP.get(candidate.suffix)
|
|
1641
|
+
if source_suffixes:
|
|
1642
|
+
# Strip ONLY the trailing emitted suffix as a string so inner dots are
|
|
1643
|
+
# preserved (``types.test.js`` → base ``types.test``, not ``types``).
|
|
1644
|
+
stem = candidate.name[: -len(candidate.suffix)]
|
|
1645
|
+
swapped_base = candidate.parent / stem
|
|
1646
|
+
for source_suffix in source_suffixes:
|
|
1647
|
+
swapped = candidate.parent / f"{stem}{source_suffix}"
|
|
1648
|
+
if swapped in path_to_node:
|
|
1649
|
+
return path_to_node[swapped]
|
|
1650
|
+
for source_suffix in source_suffixes:
|
|
1651
|
+
indexed = swapped_base / f"index{source_suffix}"
|
|
1652
|
+
if indexed in path_to_node:
|
|
1653
|
+
return path_to_node[indexed]
|
|
1266
1654
|
return None
|
|
1267
1655
|
|
|
1268
1656
|
|
|
@@ -1949,8 +2337,11 @@ def _language_for_path(path: Path) -> str:
|
|
|
1949
2337
|
".cs": "csharp",
|
|
1950
2338
|
".c": "c",
|
|
1951
2339
|
".cpp": "cpp",
|
|
2340
|
+
".cc": "cpp",
|
|
2341
|
+
".cxx": "cpp",
|
|
1952
2342
|
".h": "cpp",
|
|
1953
2343
|
".hpp": "cpp",
|
|
2344
|
+
".hh": "cpp",
|
|
1954
2345
|
".kt": "kotlin",
|
|
1955
2346
|
".kts": "kotlin",
|
|
1956
2347
|
".swift": "swift",
|
|
@@ -305,6 +305,16 @@ 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",
|
|
313
|
+
# C# (.cs). Listed as DATA so a C# project like Dapper (157 .cs files,
|
|
314
|
+
# no .py at all) is detected as ``csharp`` instead of vacuously falling
|
|
315
|
+
# back to ``python`` — the single change that fixes the false-green where
|
|
316
|
+
# ``codd check`` PASSes on a 0-edge graph because the .cs files were inert.
|
|
317
|
+
".cs": "csharp",
|
|
308
318
|
}
|
|
309
319
|
|
|
310
320
|
for root, dirs, files in os.walk(project_root):
|
|
@@ -340,7 +350,7 @@ def _detect_source_dirs(project_root: Path, language: str) -> list[str]:
|
|
|
340
350
|
# not also pick up ``src/test/<lang>`` (which _detect_test_dirs claims).
|
|
341
351
|
return jvm_source
|
|
342
352
|
|
|
343
|
-
candidates = ["src", "lib", "app", "pkg", "cmd", "internal"]
|
|
353
|
+
candidates = ["src", "lib", "app", "pkg", "cmd", "internal", "include"]
|
|
344
354
|
found = []
|
|
345
355
|
|
|
346
356
|
for c in candidates:
|