codd-dev 3.7.4__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.4 → codd_dev-3.7.5}/PKG-INFO +1 -1
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/__init__.py +1 -1
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/builder.py +243 -12
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/extractor.py +5 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/parsing/regex_strategies.py +136 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/pyproject.toml +1 -1
- {codd_dev-3.7.4 → codd_dev-3.7.5}/.gitignore +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/LICENSE +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/README.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/bench_fixture/README.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/__main__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/_git_helper.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/action_outcome.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/ai_invoke.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/ai_patch.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/artifact_contract.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/artifact_ids.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/assembler.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/bridge.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/brownfield/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/capability_completeness.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/claude_cli.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/cli.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/clustering.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/coherence_adapters.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/coherence_engine.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/confidence.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/config.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/config_schema.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/contracts.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/contracts_registry/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/contracts_registry/__main__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/contracts_registry/certify.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/contracts_registry/generate_matrix.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/contracts_registry/registry.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/coverage_auditor.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/coverage_execution_coherence.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/coverage_metrics.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/auto_repair.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/cardinality_coverage.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/extraction_diagnostics.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/negative_space.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/resource_flow_coherence.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/semantic_contract_conflict.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/stale_evidence.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/extractor.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/impact.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/materiality.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/metadata_access.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/result_status.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dag/runner.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/defaults.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/defaults.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/dependency_lock_coherence.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deploy_targets/base.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployer.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/extractor.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/verification/pytest_http.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/deployment/providers/verification/vitest.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/design_md.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/diff/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/diff/apply.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/diff/engine.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/diff/persistence.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/discovery.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/drift.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/e2e_extractor.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/e2e_generator.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/e2e_harness.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/e2e_runner.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/apply.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/engine.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/finding.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/gap_to_ask.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/persistence.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/promote.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/routing.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/env_refs.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/extract_ai.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/extract_paths.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/design_updater.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/impact_planner.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fix/templates_loader.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fixer.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fixup_drift.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/frontmatter.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/generator.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/git_evidence.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/graph.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/greenfield/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/greenfield/pipeline.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/hitl_session.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/hooks/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/hooks/pre-commit +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/iac_nfr.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/implement_oracle.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/implement_oracle_scope.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/implement_oracle_types.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/implementer/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/implementer.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/import_coherence.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/inheritance.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/init/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/init/stack_detector.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/adapters/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/adapters/implement_oracle.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/adapters/oracle_go.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/adapters/oracle_python.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/adapters/oracle_typescript.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/adapters/runner_report.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/builtin_adapters.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/compat.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/contract.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/loader.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/oracle_executor.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/path_planner.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/profile.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/profiles/go.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/profiles/python.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/profiles/typescript.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/registry.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/verify_executor.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/languages/verify_plan.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/lexicon.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/approval.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/parser.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/mcp_server.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/measure.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/operational_e2e_audit.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/operations_derive.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/parsing/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/parsing/_shared.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/parsing/api_specs.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/parsing/extractor_registry.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/parsing/iac.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/parsing/python_ast.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/parsing/schemas.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/parsing/treesitter.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/path_safety.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/planner.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/policy.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/preflight/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/project_types.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/propagate.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/propagation_common.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/propagator.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/reference_resolution.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/registry.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/approval_repair.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/engine.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/git_patcher.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/history.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/loop.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/primary_picker.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/repair_result.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/schema.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair/verify_runner.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/repair_slice.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/require.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/require_plugins.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/require_propagate.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/requirements_meta.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/restoration_report.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/restore.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/routes_extractor.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/scanner.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/schema_refs.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/screen_flow_validator.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/skills_cli/manager.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/skills_cli/paths.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/adapters/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/adapters/_base.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/adapters/nextjs.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/adapters/playwright.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/adapters/prisma.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/command_authenticity.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/command_override.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/command_plan.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/compose.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/loader.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/lock.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/obligations.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/profile.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/profiles/addons/playwright.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/profiles/addons/prisma.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/project.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/registry.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/replacement_proof.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/stack/resolve.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/surface_reconciliation.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/synth.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/test_detection.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/test_import_coherence.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/traceability.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/validator.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/vb_marker_authenticity.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/vb_rerun_scope.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/verifiable_behavior_audit.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/watch/__init__.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/watch/events.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/watch/propagation_log.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/watch/test_runner.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/watch/watcher.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd/wiring.py +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/docs/requirements/README.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/examples/README.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-3.7.4 → codd_dev-3.7.5}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-3.7.4 → 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,
|
|
@@ -1219,6 +1244,129 @@ def _cpp_header_root_dirs(path_to_node: dict[Path, str]) -> list[Path]:
|
|
|
1219
1244
|
_CPP_HEADER_SUFFIXES = frozenset({".h", ".hpp", ".hh"})
|
|
1220
1245
|
|
|
1221
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
|
+
|
|
1222
1370
|
def _infer_test_targets(
|
|
1223
1371
|
test_path: Path,
|
|
1224
1372
|
project_root: Path,
|
|
@@ -1228,11 +1376,15 @@ def _infer_test_targets(
|
|
|
1228
1376
|
targets: set[str] = set()
|
|
1229
1377
|
|
|
1230
1378
|
for import_ref in _extract_test_imports(test_path):
|
|
1231
|
-
|
|
1232
|
-
if not
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
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)
|
|
1236
1388
|
|
|
1237
1389
|
convention_key = _test_convention_key(test_path, project_root)
|
|
1238
1390
|
if convention_key:
|
|
@@ -1347,12 +1499,54 @@ def _extract_cpp_include_specifiers(file_path: Path) -> list[str]:
|
|
|
1347
1499
|
return specifiers
|
|
1348
1500
|
|
|
1349
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
|
+
|
|
1350
1544
|
#: Suffix → raw-specifier extractor (DATA dispatch). A source file whose language
|
|
1351
1545
|
#: carries its intra-tree dependency graph in DOTTED specifiers (Python modules,
|
|
1352
|
-
#: Java FQNs) or ``#include`` directives (C/C++) resolves edges
|
|
1353
|
-
#: instead of the builder's quoted-string ``extract_imports`` seam
|
|
1354
|
-
#: ``from '…'`` / ``require('…')``). Adding a language here is pure data —
|
|
1355
|
-
#: core ``if language ==`` branch.
|
|
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.
|
|
1356
1550
|
_SUFFIX_SPECIFIER_EXTRACTORS: dict[str, "Callable[[Path], list[str]]"] = {
|
|
1357
1551
|
".py": _extract_python_import_specifiers,
|
|
1358
1552
|
".java": _extract_java_import_specifiers,
|
|
@@ -1362,6 +1556,7 @@ _SUFFIX_SPECIFIER_EXTRACTORS: dict[str, "Callable[[Path], list[str]]"] = {
|
|
|
1362
1556
|
".cc": _extract_cpp_include_specifiers,
|
|
1363
1557
|
".cpp": _extract_cpp_include_specifiers,
|
|
1364
1558
|
".cxx": _extract_cpp_include_specifiers,
|
|
1559
|
+
".cs": _extract_csharp_import_specifiers,
|
|
1365
1560
|
}
|
|
1366
1561
|
|
|
1367
1562
|
|
|
@@ -1403,6 +1598,22 @@ def _resolve_python_import_target(import_ref: str, project_root: Path, path_to_n
|
|
|
1403
1598
|
return path_to_node.get(init_path)
|
|
1404
1599
|
|
|
1405
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
|
+
|
|
1406
1617
|
def _resolve_file_candidate(candidate: Path, path_to_node: dict[Path, str]) -> str | None:
|
|
1407
1618
|
if candidate in path_to_node:
|
|
1408
1619
|
return path_to_node[candidate]
|
|
@@ -1420,6 +1631,26 @@ def _resolve_file_candidate(candidate: Path, path_to_node: dict[Path, str]) -> s
|
|
|
1420
1631
|
init_file = candidate / "__init__.py"
|
|
1421
1632
|
if init_file in path_to_node:
|
|
1422
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]
|
|
1423
1654
|
return None
|
|
1424
1655
|
|
|
1425
1656
|
|
|
@@ -310,6 +310,11 @@ def _detect_language(project_root: Path, exclude_patterns: list[str]) -> str:
|
|
|
310
310
|
# ``cpp`` instead of vacuously falling back to ``python``.
|
|
311
311
|
".cc": "cpp", ".cpp": "cpp", ".cxx": "cpp",
|
|
312
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",
|
|
313
318
|
}
|
|
314
319
|
|
|
315
320
|
for root, dirs, files in os.walk(project_root):
|
|
@@ -219,6 +219,82 @@ def _java_internal_key(fqn_parts: list[str], root_parts: list[str]) -> str:
|
|
|
219
219
|
return fqn_parts[-2] if len(fqn_parts) >= 2 else fqn_parts[0]
|
|
220
220
|
|
|
221
221
|
|
|
222
|
+
#: C# type-declaration keyword → emitted symbol kind. ``record`` collapses to the
|
|
223
|
+
#: nearest existing kind (``class``) so downstream symbol consumers (which only
|
|
224
|
+
#: know class/interface/enum/struct/function) stay unchanged; ``record struct`` is
|
|
225
|
+
#: covered by the ``struct`` pattern. Access/`partial`/`sealed`/`abstract`/etc.
|
|
226
|
+
#: modifiers are tolerated before the keyword.
|
|
227
|
+
_CSHARP_MODIFIERS = r'(?:public|internal|protected|private|static|sealed|abstract|partial|readonly|ref|unsafe|new|file)'
|
|
228
|
+
_CSHARP_TYPE_KEYWORD_KINDS = (
|
|
229
|
+
(re.compile(rf'^\s*(?:{_CSHARP_MODIFIERS}\s+)*class\s+(\w+)'), "class"),
|
|
230
|
+
(re.compile(rf'^\s*(?:{_CSHARP_MODIFIERS}\s+)*interface\s+(\w+)'), "interface"),
|
|
231
|
+
(re.compile(rf'^\s*(?:{_CSHARP_MODIFIERS}\s+)*enum\s+(\w+)'), "enum"),
|
|
232
|
+
(re.compile(rf'^\s*(?:{_CSHARP_MODIFIERS}\s+)*(?:record\s+)?struct\s+(\w+)'), "struct"),
|
|
233
|
+
(re.compile(rf'^\s*(?:{_CSHARP_MODIFIERS}\s+)*record\s+(?:class\s+)?(\w+)'), "class"),
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
def _symbols_csharp(content: str, rel_path: str) -> "list[Symbol]":
|
|
238
|
+
symbols: list = []
|
|
239
|
+
for i, line in enumerate(content.splitlines(), 1):
|
|
240
|
+
for pattern, kind in _CSHARP_TYPE_KEYWORD_KINDS:
|
|
241
|
+
m = pattern.match(line)
|
|
242
|
+
if m:
|
|
243
|
+
symbols.append(_symbol(m.group(1), kind, rel_path, i))
|
|
244
|
+
break
|
|
245
|
+
return symbols
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
#: C# ``using`` directives + ``namespace`` declarations. Mirrors
|
|
249
|
+
#: ``builder._CSHARP_USING_RE`` / ``builder._CSHARP_NAMESPACE_RE`` so the scan-path
|
|
250
|
+
#: parser and the DAG builder agree on a C# project's using graph. ``using``
|
|
251
|
+
#: covers plain / ``static`` / ``global`` / alias (``using Alias = X.Y;``) forms;
|
|
252
|
+
#: the namespace regex covers BOTH file-scoped (``namespace X.Y;``) and block
|
|
253
|
+
#: (``namespace X.Y {``) declarations (Dapper uses both).
|
|
254
|
+
_CSHARP_USING_RE = re.compile(
|
|
255
|
+
r'^\s*(?:global\s+)?using\s+(?:static\s+)?'
|
|
256
|
+
r'(?:[\w.]+\s*=\s*)?' # optional ``Alias =`` (we capture the RHS namespace)
|
|
257
|
+
r'([\w.]+)\s*;'
|
|
258
|
+
)
|
|
259
|
+
_CSHARP_NAMESPACE_RE = re.compile(r'^\s*namespace\s+([\w.]+)\s*[;{]?\s*$')
|
|
260
|
+
|
|
261
|
+
#: C# framework / BCL namespace roots. A ``using`` rooted here is external (the
|
|
262
|
+
#: analogue of Java ``java.*`` / C++ angle-form ``<…>``). Everything else is a
|
|
263
|
+
#: candidate first-party namespace; the DAG builder owns the precise
|
|
264
|
+
#: namespace→file resolution for edges via the reverse-index.
|
|
265
|
+
_CSHARP_FRAMEWORK_ROOTS = frozenset({"System", "Microsoft", "Windows", "Mono"})
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
def _imports_csharp(content, project_root, src_dir, file_path):
|
|
269
|
+
"""Classify C# usings: first-party ``internal`` vs ``System.*``/framework.
|
|
270
|
+
|
|
271
|
+
The regex sibling of the DAG builder's using extraction (there is no
|
|
272
|
+
tree-sitter-c-sharp binding). A ``using Dapper.X;`` rooted outside the
|
|
273
|
+
framework roots is first-party (``internal``, bucketed by the namespace's
|
|
274
|
+
first segment); ``using System.Text;`` / ``using Microsoft.*`` is framework
|
|
275
|
+
(``external``, keyed by the full namespace). Returns the
|
|
276
|
+
``(internal, external)`` shape every ``extract_imports`` strategy yields.
|
|
277
|
+
"""
|
|
278
|
+
internal: dict[str, list[str]] = {}
|
|
279
|
+
external: set[str] = set()
|
|
280
|
+
|
|
281
|
+
for line in content.splitlines():
|
|
282
|
+
m = _CSHARP_USING_RE.match(line)
|
|
283
|
+
if not m:
|
|
284
|
+
continue
|
|
285
|
+
namespace = m.group(1)
|
|
286
|
+
top = namespace.split(".", 1)[0]
|
|
287
|
+
if top in _CSHARP_FRAMEWORK_ROOTS:
|
|
288
|
+
external.add(namespace)
|
|
289
|
+
else:
|
|
290
|
+
# Bucket by the first namespace segment (``Dapper`` for
|
|
291
|
+
# ``Dapper.ProviderTools``); the DAG builder owns the precise
|
|
292
|
+
# namespace→file resolution for edges via the reverse-index.
|
|
293
|
+
internal.setdefault(top, []).append(line.strip())
|
|
294
|
+
|
|
295
|
+
return internal, external
|
|
296
|
+
|
|
297
|
+
|
|
222
298
|
def _symbols_go(content: str, rel_path: str) -> "list[Symbol]":
|
|
223
299
|
symbols: list = []
|
|
224
300
|
for i, line in enumerate(content.splitlines(), 1):
|
|
@@ -590,6 +666,20 @@ _CPP = RegexLanguageStrategy(
|
|
|
590
666
|
guess_test_target=None,
|
|
591
667
|
)
|
|
592
668
|
|
|
669
|
+
_CSHARP = RegexLanguageStrategy(
|
|
670
|
+
name="csharp",
|
|
671
|
+
extensions=frozenset({".cs"}),
|
|
672
|
+
# stdlib stays EMPTY: ``_imports_csharp`` already classifies framework usings
|
|
673
|
+
# (``System.*``/``Microsoft.*``/…) into ``external`` itself; there is no fixed
|
|
674
|
+
# name-set to subtract (C# uses arbitrary dotted namespaces, not a list).
|
|
675
|
+
entry_points=("Program.cs", "Main.cs"),
|
|
676
|
+
extract_symbols=_symbols_csharp,
|
|
677
|
+
extract_imports=_imports_csharp,
|
|
678
|
+
detect_code_patterns=None,
|
|
679
|
+
file_to_module=_file_to_module_first_part,
|
|
680
|
+
guess_test_target=None,
|
|
681
|
+
)
|
|
682
|
+
|
|
593
683
|
#: The generic fallback for an unknown language — best-effort no-op analysis,
|
|
594
684
|
#: matching the implicit ``else`` of every old ladder (empty symbols/imports,
|
|
595
685
|
#: no patterns, first-path-part module name, no test-target, no extensions).
|
|
@@ -605,6 +695,7 @@ _STRATEGIES: dict[str, RegexLanguageStrategy] = {
|
|
|
605
695
|
"java": _JAVA,
|
|
606
696
|
"go": _GO,
|
|
607
697
|
"cpp": _CPP,
|
|
698
|
+
"csharp": _CSHARP,
|
|
608
699
|
}
|
|
609
700
|
|
|
610
701
|
|
|
@@ -791,6 +882,50 @@ def _resolve_cpp_include_path(
|
|
|
791
882
|
return None
|
|
792
883
|
|
|
793
884
|
|
|
885
|
+
#: C# ``using`` directive (mirrors the scan/builder regexes) for recovering the
|
|
886
|
+
#: imported namespace from a stored ``internal`` line.
|
|
887
|
+
_CSHARP_USING_LINE_RE = re.compile(
|
|
888
|
+
r'(?:global\s+)?using\s+(?:static\s+)?(?:[\w.]+\s*=\s*)?([\w.]+)\s*;'
|
|
889
|
+
)
|
|
890
|
+
|
|
891
|
+
|
|
892
|
+
def _ceg_targets_csharp(
|
|
893
|
+
internal: dict, project_root: Path, file_path: Path
|
|
894
|
+
) -> "list[CegImportTarget]":
|
|
895
|
+
"""C# internal usings → ``module`` CEG nodes keyed by first-party namespace.
|
|
896
|
+
|
|
897
|
+
Mirrors ``_ceg_targets_java`` (a stable ``module:`` identifier per imported
|
|
898
|
+
first-party unit) rather than probing the filesystem — C# resolution is
|
|
899
|
+
NAMESPACE-based, not path-based, so there is no single file a ``using``
|
|
900
|
+
points at; the DAG builder owns the precise namespace→declaring-files
|
|
901
|
+
resolution for import EDGES via its reverse-index. The ``internal`` map values
|
|
902
|
+
are the raw using lines (``using Dapper.ProviderTools;`` / ``using static
|
|
903
|
+
Dapper.SqlMapper;`` / ``using Foo = Dapper.X;``); we recover the imported
|
|
904
|
+
namespace for the node.
|
|
905
|
+
"""
|
|
906
|
+
targets: list[CegImportTarget] = []
|
|
907
|
+
seen: set[str] = set()
|
|
908
|
+
for using_lines in internal.values():
|
|
909
|
+
for line in using_lines:
|
|
910
|
+
match = _CSHARP_USING_LINE_RE.search(line)
|
|
911
|
+
if not match:
|
|
912
|
+
continue
|
|
913
|
+
namespace = match.group(1)
|
|
914
|
+
if not namespace or namespace in seen:
|
|
915
|
+
continue
|
|
916
|
+
seen.add(namespace)
|
|
917
|
+
targets.append(
|
|
918
|
+
CegImportTarget(
|
|
919
|
+
target_id=f"module:{namespace}",
|
|
920
|
+
node_type="module",
|
|
921
|
+
node_kwargs={"name": namespace},
|
|
922
|
+
evidence_method="csharp_using",
|
|
923
|
+
confidence=0.90,
|
|
924
|
+
)
|
|
925
|
+
)
|
|
926
|
+
return targets
|
|
927
|
+
|
|
928
|
+
|
|
794
929
|
#: Per-language scanner CEG-import resolvers (registry DATA). Languages without
|
|
795
930
|
#: an entry contribute NO import edges, byte-identical to the former scanner
|
|
796
931
|
#: block that only handled python and typescript/javascript.
|
|
@@ -802,6 +937,7 @@ _CEG_IMPORT_RESOLVERS: dict[
|
|
|
802
937
|
"python": _ceg_targets_python,
|
|
803
938
|
"java": _ceg_targets_java,
|
|
804
939
|
"cpp": _ceg_targets_cpp,
|
|
940
|
+
"csharp": _ceg_targets_csharp,
|
|
805
941
|
}
|
|
806
942
|
|
|
807
943
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|