codd-dev 2.74.0__tar.gz → 2.76.0__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-2.74.0 → codd_dev-2.76.0}/PKG-INFO +1 -1
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/__init__.py +1 -1
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/profiles/go.yaml +7 -1
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/verify_plan.py +28 -3
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/verify_runner.py +268 -7
- {codd_dev-2.74.0 → codd_dev-2.76.0}/pyproject.toml +1 -1
- {codd_dev-2.74.0 → codd_dev-2.76.0}/.gitignore +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/LICENSE +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/README.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/bench_fixture/README.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/__main__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/action_outcome.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/ai_invoke.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/ai_patch.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/artifact_contract.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/artifact_ids.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/assembler.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/bridge.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/capability_completeness.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/claude_cli.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/cli.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/clustering.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/confidence.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/config.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/config_schema.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/contracts.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/contracts_registry/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/contracts_registry/__main__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/contracts_registry/certify.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/contracts_registry/generate_matrix.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/contracts_registry/registry.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/coverage_execution_coherence.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/auto_repair.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/builder.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/impact.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/defaults.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/dependency_lock_coherence.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployer.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/verification/pytest_http.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/deployment/providers/verification/vitest.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/design_md.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/diff/apply.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/discovery.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/drift.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/e2e_generator.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/e2e_harness.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/env_refs.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/extract_paths.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/extractor.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fix/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fix/design_updater.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fix/templates_loader.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fixer.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/frontmatter.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/generator.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/git_evidence.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/graph.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/greenfield/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/greenfield/pipeline.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/iac_nfr.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/implement_oracle.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/implement_oracle_scope.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/implementer.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/import_coherence.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/inheritance.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/adapters/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/adapters/runner_report.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/builtin_adapters.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/compat.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/contract.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/loader.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/path_planner.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/profile.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/profiles/python.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/profiles/typescript.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/registry.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/languages/verify_executor.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/lexicon.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/measure.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/operational_e2e_audit.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/operations_derive.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/parsing/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/parsing/_shared.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/parsing/api_specs.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/parsing/iac.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/parsing/python_ast.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/parsing/schemas.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/parsing/treesitter.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/planner.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/policy.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/project_types.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/propagate.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/propagation_common.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/propagator.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/reference_resolution.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/registry.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/history.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/repair_slice.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/require.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/requirements_meta.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/restoration_report.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/restore.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/scanner.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/skills_cli/manager.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/skills_cli/paths.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/adapters/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/adapters/_base.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/adapters/nextjs.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/adapters/playwright.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/compose.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/loader.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/lock.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/obligations.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/profile.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/project.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/registry.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/stack/resolve.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/surface_reconciliation.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/synth.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/test_detection.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/test_import_coherence.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/traceability.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/validator.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/vb_marker_authenticity.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/vb_rerun_scope.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/verifiable_behavior_audit.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/watch/events.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd/wiring.py +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/dogfood/README.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/examples/README.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-2.74.0 → codd_dev-2.76.0}/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: 2.
|
|
3
|
+
Version: 2.76.0
|
|
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
|
|
@@ -170,7 +170,13 @@ commands:
|
|
|
170
170
|
argv: ["go", "test", "-json", "./..."]
|
|
171
171
|
cwd: "{module_root}"
|
|
172
172
|
env:
|
|
173
|
-
|
|
173
|
+
# -buildvcs=false: a greenfield Go output dir is frequently NOT a clean git
|
|
174
|
+
# repo, so `go test`/`go build` fail with "error obtaining VCS status / use
|
|
175
|
+
# -buildvcs=false". The legacy _go_aware_env added this for the legacy path;
|
|
176
|
+
# the contract executor runs verify with plan.env, so the hardener must be
|
|
177
|
+
# DECLARED here or the contract path regresses the VCS-stamp failure. ONLY on
|
|
178
|
+
# verify — build/vet/typecheck env is read by implement_oracle (pinned tests).
|
|
179
|
+
GOFLAGS: "-mod=readonly -buildvcs=false"
|
|
174
180
|
report:
|
|
175
181
|
capture: stdout
|
|
176
182
|
path: ".codd/verify/go-test.jsonl"
|
|
@@ -91,6 +91,26 @@ class VerifyRunPlan:
|
|
|
91
91
|
return " ".join(self.argv)
|
|
92
92
|
|
|
93
93
|
|
|
94
|
+
def _substitute_layout_placeholders(value: str | None, layout) -> str | None:
|
|
95
|
+
"""Resolve the layout path placeholders a verify command's ``cwd``/``env`` may
|
|
96
|
+
carry (``{module_root}`` / ``{repo_root}`` / ``{manifest_root}``).
|
|
97
|
+
|
|
98
|
+
Profiles keep these as LITERAL template strings (per design — full template
|
|
99
|
+
substitution is PathPlanner's job, a later phase). But the verify EXECUTOR
|
|
100
|
+
must run in a real directory: an unsubstituted ``cwd: "{module_root}"`` makes
|
|
101
|
+
the run spawn in ``<project>/{module_root}`` (a path that does not exist) →
|
|
102
|
+
a spurious TOOL_MISSING. So the plan resolves exactly the layout roots the
|
|
103
|
+
verify command needs to be runnable; everything else stays a literal template.
|
|
104
|
+
"""
|
|
105
|
+
if value is None:
|
|
106
|
+
return None
|
|
107
|
+
return (
|
|
108
|
+
value.replace("{module_root}", layout.module_root)
|
|
109
|
+
.replace("{repo_root}", layout.repo_root)
|
|
110
|
+
.replace("{manifest_root}", layout.manifest_root)
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
|
|
94
114
|
def build_verify_plan(contract: ResolvedLanguageContract) -> VerifyRunPlan | None:
|
|
95
115
|
"""Derive the verify run plan from ``contract.profile.commands['verify']``.
|
|
96
116
|
|
|
@@ -98,13 +118,15 @@ def build_verify_plan(contract: ResolvedLanguageContract) -> VerifyRunPlan | Non
|
|
|
98
118
|
stays on the legacy path). A declared ``report.path`` means the command is
|
|
99
119
|
expected to PRODUCE that report — its absence after a run is REPORT_MISSING
|
|
100
120
|
(a not-green outcome), enforced once adapters land (v2.72) / the switch
|
|
101
|
-
happens (v2.69b).
|
|
121
|
+
happens (v2.69b). ``cwd``/``env`` layout placeholders are resolved so the
|
|
122
|
+
executor runs in a real directory.
|
|
102
123
|
"""
|
|
103
124
|
cmd = contract.profile.commands.get("verify")
|
|
104
125
|
if cmd is None:
|
|
105
126
|
return None
|
|
106
127
|
report = cmd.report
|
|
107
128
|
scope = cmd.scope
|
|
129
|
+
layout = contract.profile.layout
|
|
108
130
|
must_include = scope.must_include_test_sets if scope else ()
|
|
109
131
|
# Resolve each must_include id to its TestSet ROOT (the scope check in the
|
|
110
132
|
# executor matches executed_files against roots, so it needs roots, not ids).
|
|
@@ -122,8 +144,11 @@ def build_verify_plan(contract: ResolvedLanguageContract) -> VerifyRunPlan | Non
|
|
|
122
144
|
return VerifyRunPlan(
|
|
123
145
|
language_id=contract.language_id,
|
|
124
146
|
argv=tuple(cmd.argv),
|
|
125
|
-
cwd=cmd.cwd,
|
|
126
|
-
env=
|
|
147
|
+
cwd=_substitute_layout_placeholders(cmd.cwd, layout),
|
|
148
|
+
env={
|
|
149
|
+
str(k): _substitute_layout_placeholders(str(v), layout)
|
|
150
|
+
for k, v in cmd.env.items()
|
|
151
|
+
},
|
|
127
152
|
report_path=(report.path if report else None),
|
|
128
153
|
report_adapter=(report.adapter if report else None),
|
|
129
154
|
report_required=bool(report and report.path),
|
|
@@ -9,11 +9,16 @@ import re
|
|
|
9
9
|
from dataclasses import asdict, dataclass, field, is_dataclass
|
|
10
10
|
from datetime import datetime, timezone
|
|
11
11
|
from pathlib import Path
|
|
12
|
-
from typing import Any, Mapping
|
|
12
|
+
from typing import TYPE_CHECKING, Any, Mapping
|
|
13
13
|
import subprocess
|
|
14
14
|
import time
|
|
15
15
|
import warnings
|
|
16
16
|
|
|
17
|
+
if TYPE_CHECKING: # import-time-free type hints (no cycle, no runtime cost)
|
|
18
|
+
from codd.languages.registry import AdapterRegistry, LanguageRegistry
|
|
19
|
+
from codd.languages.verify_executor import VerifyExecutionResult
|
|
20
|
+
from codd.languages.verify_plan import VerifyRunPlan
|
|
21
|
+
|
|
17
22
|
import yaml
|
|
18
23
|
|
|
19
24
|
from codd.config import find_codd_dir, load_project_config
|
|
@@ -119,6 +124,20 @@ class VerificationResult:
|
|
|
119
124
|
#: One-line status of the deterministic parse check over project sources
|
|
120
125
|
#: ("checked N file(s)", "disabled", "N parse error(s)", "not checked").
|
|
121
126
|
source_integrity: str = "not checked"
|
|
127
|
+
# ── Step 6 contract-switch trace (additive; defaults keep old constructors
|
|
128
|
+
# valid). ``verify_path`` records which path produced the test verdict:
|
|
129
|
+
# "contract" — the contract executor ran (its verdict is FINAL),
|
|
130
|
+
# "legacy_fallback" — a PRE-execution fallback to the legacy ladder fired,
|
|
131
|
+
# "legacy" — no contract machinery was in play (the default).
|
|
132
|
+
#: Which path produced the test-command verdict ("contract"/"legacy_fallback"/"legacy").
|
|
133
|
+
verify_path: str = "legacy"
|
|
134
|
+
#: True when a PRE-execution legacy fallback fired (never after the contract
|
|
135
|
+
#: executor ran — there is no post-execution rescue). The v3.0.0 cut gates on
|
|
136
|
+
#: ``fallback_used == 0``.
|
|
137
|
+
fallback_used: bool = False
|
|
138
|
+
#: Why the fallback fired ("no_language"/"no_verify_plan"/
|
|
139
|
+
#: "missing_adapter_legacy_compatible"), else ``None``.
|
|
140
|
+
fallback_reason: str | None = None
|
|
122
141
|
|
|
123
142
|
@property
|
|
124
143
|
def executed_anything(self) -> bool:
|
|
@@ -156,10 +175,25 @@ class VerifyRunner:
|
|
|
156
175
|
project_root: Path,
|
|
157
176
|
codd_yaml: Mapping[str, Any] | None,
|
|
158
177
|
runtime_skip: tuple[str, ...] | list[str] | set[str] | None = None,
|
|
178
|
+
*,
|
|
179
|
+
language_registry: "LanguageRegistry | None" = None,
|
|
180
|
+
adapter_registry: "AdapterRegistry | None" = None,
|
|
159
181
|
):
|
|
160
182
|
self.project_root = Path(project_root).resolve()
|
|
161
183
|
self.codd_yaml = dict(codd_yaml or {})
|
|
162
184
|
self.runtime_skip = frozenset(str(item) for item in (runtime_skip or ()))
|
|
185
|
+
# Contract-Kernel registries. ``None`` ⇒ the process-wide defaults
|
|
186
|
+
# (``default_registry`` / ``default_adapter_registry``); they are
|
|
187
|
+
# keyword-only injection seams so a hermetic test can drive the
|
|
188
|
+
# contract-first verify path against a synthetic profile + fake adapter
|
|
189
|
+
# WITHOUT a real go/pytest toolchain. Production never passes them.
|
|
190
|
+
self._language_registry = language_registry
|
|
191
|
+
self._adapter_registry = adapter_registry
|
|
192
|
+
# fallback_used observability (Step 6 trace). Set by ``_run_test_command``
|
|
193
|
+
# and read by ``run()`` when it builds the ``VerificationResult``.
|
|
194
|
+
self._verify_path: str = "legacy"
|
|
195
|
+
self._fallback_used: bool = False
|
|
196
|
+
self._fallback_reason: str | None = None
|
|
163
197
|
|
|
164
198
|
def run(self) -> VerificationResult:
|
|
165
199
|
"""Reset DAG state, run C1-C7 checks, then run executable verification tests.
|
|
@@ -237,6 +271,9 @@ class VerifyRunner:
|
|
|
237
271
|
tests_summary=tests_summary,
|
|
238
272
|
typecheck_executed=typecheck_executed,
|
|
239
273
|
source_integrity=source_integrity,
|
|
274
|
+
verify_path=self._verify_path,
|
|
275
|
+
fallback_used=self._fallback_used,
|
|
276
|
+
fallback_reason=self._fallback_reason,
|
|
240
277
|
)
|
|
241
278
|
# The honesty rule. Plain `codd verify` stays pass-WITH-WARNING by
|
|
242
279
|
# default because existing brownfield/CI configurations may be
|
|
@@ -488,14 +525,198 @@ class VerifyRunner:
|
|
|
488
525
|
def _run_test_command(
|
|
489
526
|
self, settings: dict[str, Any]
|
|
490
527
|
) -> tuple[bool, str | None, str, VerificationFailure | None]:
|
|
491
|
-
"""Resolve and run the project's test command.
|
|
528
|
+
"""Resolve and run the project's test command — CONTRACT-FIRST (Step 6).
|
|
529
|
+
|
|
530
|
+
Returns ``(tests_executed, test_command, tests_summary, test_failure)`` —
|
|
531
|
+
``test_failure is not None`` ⇒ a failure (``passed=False``);
|
|
532
|
+
``tests_executed`` feeds ``executed_anything`` / the honesty rule.
|
|
533
|
+
|
|
534
|
+
This is THE single live point where the Contract Kernel's anti-false-green
|
|
535
|
+
verify executor enters production verify. Decision tree (in order):
|
|
536
|
+
|
|
537
|
+
1. Resolve the language contract. A declared-but-UNKNOWN language is
|
|
538
|
+
``UnknownLanguageError`` → RED (never a fallback). A malformed language
|
|
539
|
+
declaration is a broken contract even when an explicit command exists,
|
|
540
|
+
so this RED is checked FIRST (before the explicit-command override).
|
|
541
|
+
2. EXPLICIT author command override. An explicit ``fix.test_command`` /
|
|
542
|
+
``verify.test_command`` in codd.yaml is author intent that, in the
|
|
543
|
+
legacy ladder, beats all detection (test_detection priority 1-2). It
|
|
544
|
+
designates the command the author wants run AS THEIR verification — so
|
|
545
|
+
routing a project with an explicit command into the PROFILE's verify
|
|
546
|
+
pipeline would verify a DIFFERENT command than the author asked for
|
|
547
|
+
(itself a false-green vector: "pass" the profile command while the
|
|
548
|
+
author's real suite never ran). The contract's stricter observation is
|
|
549
|
+
the policy for the profile-DERIVED default, not an override of an
|
|
550
|
+
explicit author substitution. So an explicit command → pre-execution
|
|
551
|
+
legacy fallback (reason ``explicit_test_command``); the legacy evidence
|
|
552
|
+
path runs it and keeps its OWN anti-false-green guards (JS zero-collected
|
|
553
|
+
hard-fail, pytest exit-5 = no-tests, nonzero/timeout = fail). Marked
|
|
554
|
+
``fallback_used=True`` so the v3.0.0 ``fallback_used == 0`` cut surfaces
|
|
555
|
+
it as migration debt (not a permanent green-washing escape hatch). This
|
|
556
|
+
is language-AGNOSTIC (gates on "did the author provide a command", never
|
|
557
|
+
on a language name) and PRE-execution (no post-execution rescue).
|
|
558
|
+
2b. Structural-only opt-out. ``verify.allow_structural_only: true`` is the
|
|
559
|
+
author's explicit declaration that there is no executable verification
|
|
560
|
+
(the honesty rule already honors it). Forcing the contract executor would
|
|
561
|
+
run a verify command the author declared absent → pre-execution legacy
|
|
562
|
+
fallback (reason ``structural_only``); like (2), an author opt-out that
|
|
563
|
+
pre-empts the contract path.
|
|
564
|
+
3. No ``project.language`` (contract is ``None``) → pre-execution legacy
|
|
565
|
+
fallback (reason ``no_language``).
|
|
566
|
+
4. No verify command in the profile (``build_verify_plan`` is ``None``) →
|
|
567
|
+
pre-execution legacy fallback (reason ``no_verify_plan``).
|
|
568
|
+
5. Scoped runner_report-adapter gate (NOT full ``require_complete()`` —
|
|
569
|
+
other adapter kinds are unimplemented and would RED everything): if the
|
|
570
|
+
plan requires a report and the runner_report adapter is unavailable,
|
|
571
|
+
a ``strict`` profile → RED; a ``legacy_compatible`` profile →
|
|
572
|
+
pre-execution legacy fallback (reason
|
|
573
|
+
``missing_adapter_legacy_compatible``).
|
|
574
|
+
6. Otherwise run the contract executor. Its verdict is FINAL — there is
|
|
575
|
+
NO post-execution legacy rescue (a contract not-green is never turned
|
|
576
|
+
green by re-running the legacy ladder).
|
|
577
|
+
"""
|
|
578
|
+
from codd.test_detection import _explicit_test_command
|
|
579
|
+
from codd.languages.contract import resolve_language_contract
|
|
580
|
+
from codd.languages.registry import (
|
|
581
|
+
UnknownLanguageError,
|
|
582
|
+
default_adapter_registry,
|
|
583
|
+
)
|
|
584
|
+
from codd.languages.verify_plan import build_verify_plan
|
|
585
|
+
|
|
586
|
+
# (1) Resolve the language contract — a declared-unknown language is RED.
|
|
587
|
+
try:
|
|
588
|
+
contract = resolve_language_contract(
|
|
589
|
+
settings,
|
|
590
|
+
language_registry=self._language_registry,
|
|
591
|
+
adapter_registry=self._adapter_registry,
|
|
592
|
+
)
|
|
593
|
+
except UnknownLanguageError as exc:
|
|
594
|
+
self._mark_contract_path()
|
|
595
|
+
return (
|
|
596
|
+
False,
|
|
597
|
+
None,
|
|
598
|
+
"unknown declared language",
|
|
599
|
+
VerificationFailure(
|
|
600
|
+
check_name="test_command",
|
|
601
|
+
source="test_command",
|
|
602
|
+
message=(
|
|
603
|
+
f"project.language is declared but unknown: {exc}. A declared "
|
|
604
|
+
"language with no matching profile is RED, never a silent "
|
|
605
|
+
"fallback to the legacy test ladder."
|
|
606
|
+
),
|
|
607
|
+
details={"failure_class": "unknown_declared_language"},
|
|
608
|
+
),
|
|
609
|
+
)
|
|
610
|
+
|
|
611
|
+
# (2) Explicit author command override (checked AFTER the unknown-language
|
|
612
|
+
# RED, BEFORE all other routing). An explicit fix/verify.test_command is a
|
|
613
|
+
# deliberate author substitution that the legacy ladder honors over
|
|
614
|
+
# detection; the contract path would otherwise run the profile's DEFAULT
|
|
615
|
+
# verify command instead — verifying something the author did not ask for.
|
|
616
|
+
# Pre-execution legacy fallback; the legacy guards still prevent green-on-
|
|
617
|
+
# nothing. Language-agnostic + migration debt (fallback_used=True).
|
|
618
|
+
if _explicit_test_command(settings):
|
|
619
|
+
return self._legacy_test_command(settings, reason="explicit_test_command")
|
|
620
|
+
|
|
621
|
+
# (2b) Structural-only opt-out. ``verify.allow_structural_only: true`` is the
|
|
622
|
+
# author's EXPLICIT declaration that structural DAG coherence is the whole
|
|
623
|
+
# contract here and there is no executable verification (doc-only repos, or a
|
|
624
|
+
# suite that runs in a separate CI stage) — already honored by
|
|
625
|
+
# ``structural_only_allowed()`` / the honesty rule. Forcing the contract
|
|
626
|
+
# executor on such a project would run a verify command the author declared
|
|
627
|
+
# absent (a spurious not-green) and add no anti-false-green value (the honesty
|
|
628
|
+
# rule is the gate whenever this opt-out is NOT set). So it is a pre-execution
|
|
629
|
+
# opt-out, like the explicit-command override: route to legacy (which, with no
|
|
630
|
+
# detected command, yields the structural-only result the author asked for).
|
|
631
|
+
if structural_only_allowed(settings):
|
|
632
|
+
return self._legacy_test_command(settings, reason="structural_only")
|
|
633
|
+
|
|
634
|
+
# (3) No declared language → legacy fallback (the common existing case).
|
|
635
|
+
if contract is None:
|
|
636
|
+
return self._legacy_test_command(settings, reason="no_language")
|
|
637
|
+
|
|
638
|
+
# (4) No verify command in the profile → legacy fallback.
|
|
639
|
+
plan = build_verify_plan(contract)
|
|
640
|
+
if plan is None:
|
|
641
|
+
return self._legacy_test_command(settings, reason="no_verify_plan")
|
|
642
|
+
|
|
643
|
+
# (5) Scoped runner_report-adapter gate (NOT full require_complete()). The
|
|
644
|
+
# executor reads the report via ``default_adapter_registry.get("runner_report",
|
|
645
|
+
# plan.report_adapter)`` — so we gate on exactly that capability, ensuring
|
|
646
|
+
# builtins are registered first. Only when the plan REQUIRES a report.
|
|
647
|
+
registry = (
|
|
648
|
+
self._adapter_registry
|
|
649
|
+
if self._adapter_registry is not None
|
|
650
|
+
else default_adapter_registry
|
|
651
|
+
)
|
|
652
|
+
if plan.report_required:
|
|
653
|
+
from codd.languages.builtin_adapters import (
|
|
654
|
+
ensure_builtin_adapters_registered,
|
|
655
|
+
)
|
|
656
|
+
|
|
657
|
+
ensure_builtin_adapters_registered(registry)
|
|
658
|
+
adapter = (
|
|
659
|
+
registry.get("runner_report", plan.report_adapter)
|
|
660
|
+
if plan.report_adapter is not None
|
|
661
|
+
else None
|
|
662
|
+
)
|
|
663
|
+
if adapter is None:
|
|
664
|
+
if contract.profile.strictness == "strict":
|
|
665
|
+
self._mark_contract_path()
|
|
666
|
+
return (
|
|
667
|
+
False,
|
|
668
|
+
plan.command_str,
|
|
669
|
+
"required runner_report adapter unavailable (strict)",
|
|
670
|
+
VerificationFailure(
|
|
671
|
+
check_name="test_command",
|
|
672
|
+
source="test_command",
|
|
673
|
+
message=(
|
|
674
|
+
f"strict language {contract.language_id!r} declares a "
|
|
675
|
+
f"required runner_report adapter "
|
|
676
|
+
f"{plan.report_adapter!r} that is not registered — the "
|
|
677
|
+
"executor cannot observe the report, so the run cannot "
|
|
678
|
+
"be classified green (fail-closed; RED, no fallback)."
|
|
679
|
+
),
|
|
680
|
+
details={
|
|
681
|
+
"failure_class": "missing_runner_report_adapter",
|
|
682
|
+
"report_adapter": plan.report_adapter,
|
|
683
|
+
"language": contract.language_id,
|
|
684
|
+
},
|
|
685
|
+
),
|
|
686
|
+
)
|
|
687
|
+
# legacy_compatible → pre-execution fallback (NOT a RED).
|
|
688
|
+
return self._legacy_test_command(
|
|
689
|
+
settings, reason="missing_adapter_legacy_compatible"
|
|
690
|
+
)
|
|
691
|
+
|
|
692
|
+
# (6) Run the contract executor. Its verdict is FINAL (no legacy rescue).
|
|
693
|
+
from codd.languages.verify_executor import execute_verify_plan
|
|
694
|
+
|
|
695
|
+
self._mark_contract_path()
|
|
696
|
+
result = execute_verify_plan(plan, self.project_root, adapter_registry=registry)
|
|
697
|
+
return self._tuple_from_execution(plan, result)
|
|
698
|
+
|
|
699
|
+
def _mark_contract_path(self) -> None:
|
|
700
|
+
"""Record that the live contract executor produced this run's test verdict."""
|
|
701
|
+
self._verify_path = "contract"
|
|
702
|
+
self._fallback_used = False
|
|
703
|
+
self._fallback_reason = None
|
|
492
704
|
|
|
493
|
-
|
|
494
|
-
:
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
705
|
+
def _legacy_test_command(
|
|
706
|
+
self, settings: dict[str, Any], *, reason: str
|
|
707
|
+
) -> tuple[bool, str | None, str, VerificationFailure | None]:
|
|
708
|
+
"""PRE-execution legacy fallback — the original detect+run test ladder.
|
|
709
|
+
|
|
710
|
+
Used ONLY before the contract executor runs (an explicit author command /
|
|
711
|
+
structural-only opt-out / no language / no verify plan / legacy_compatible
|
|
712
|
+
profile with a missing runner_report adapter). Records the fallback trace so
|
|
713
|
+
the v3.0.0 cut can gate on ``fallback_used == 0``. There is deliberately NO
|
|
714
|
+
post-execution variant: once the contract executor has run, its verdict is
|
|
715
|
+
final.
|
|
498
716
|
"""
|
|
717
|
+
self._verify_path = "legacy_fallback"
|
|
718
|
+
self._fallback_used = True
|
|
719
|
+
self._fallback_reason = reason
|
|
499
720
|
command = detect_test_command(self.project_root, config=settings)
|
|
500
721
|
if not command:
|
|
501
722
|
return False, None, "no test command detected", None
|
|
@@ -504,6 +725,46 @@ class VerifyRunner:
|
|
|
504
725
|
)
|
|
505
726
|
return executed, command, summary, failure
|
|
506
727
|
|
|
728
|
+
def _tuple_from_execution(
|
|
729
|
+
self, plan: "VerifyRunPlan", result: "VerifyExecutionResult"
|
|
730
|
+
) -> tuple[bool, str | None, str, VerificationFailure | None]:
|
|
731
|
+
"""Map a :class:`VerifyExecutionResult` to the ``_run_test_command`` 4-tuple.
|
|
732
|
+
|
|
733
|
+
The anti-false-green mapping — only ``PASS`` is green; every other class is
|
|
734
|
+
a failure, and ``TOOL_MISSING`` additionally did NOT execute:
|
|
735
|
+
|
|
736
|
+
* ``PASS`` → ``(True, cmd, detail, None)``.
|
|
737
|
+
* ``TOOL_MISSING``→ ``(False, cmd, detail, FAILURE)`` — never ran AND a
|
|
738
|
+
failure (so it can never count as green-on-nothing).
|
|
739
|
+
* any other not-green (FAIL / ZERO_TESTS / REPORT_MISSING /
|
|
740
|
+
REPORT_UNREADABLE / SCOPE_MISSING) → ``(True, cmd, detail, FAILURE)`` —
|
|
741
|
+
it executed; it is a failure.
|
|
742
|
+
"""
|
|
743
|
+
from codd.languages.verify_plan import VerifyClass
|
|
744
|
+
|
|
745
|
+
command = plan.command_str
|
|
746
|
+
if result.verify_class is VerifyClass.PASS:
|
|
747
|
+
return True, command, result.detail, None
|
|
748
|
+
|
|
749
|
+
failure = VerificationFailure(
|
|
750
|
+
check_name="test_command",
|
|
751
|
+
source="test_command",
|
|
752
|
+
message=result.detail,
|
|
753
|
+
details={
|
|
754
|
+
"command": command,
|
|
755
|
+
"verify_class": result.verify_class.value,
|
|
756
|
+
"verify_path": "contract",
|
|
757
|
+
"returncode": result.returncode,
|
|
758
|
+
"failure_class": "verify_contract_not_green",
|
|
759
|
+
},
|
|
760
|
+
)
|
|
761
|
+
if result.verify_class is VerifyClass.TOOL_MISSING:
|
|
762
|
+
# Did not run AND is a failure — never green.
|
|
763
|
+
return False, command, result.detail, failure
|
|
764
|
+
# FAIL / ZERO_TESTS / REPORT_MISSING / REPORT_UNREADABLE / SCOPE_MISSING:
|
|
765
|
+
# the command executed and the observation is not-green.
|
|
766
|
+
return True, command, result.detail, failure
|
|
767
|
+
|
|
507
768
|
def _run_evidence_command(
|
|
508
769
|
self,
|
|
509
770
|
command: str,
|
|
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
|
|
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
|