codd-dev 2.68.0__tar.gz → 2.70.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.68.0 → codd_dev-2.70.0}/PKG-INFO +1 -1
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/__init__.py +1 -1
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/greenfield/pipeline.py +23 -37
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/languages/__init__.py +19 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/languages/loader.py +18 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/languages/profile.py +21 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/languages/profiles/go.yaml +7 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/languages/profiles/python.yaml +8 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/languages/profiles/typescript.yaml +8 -0
- codd_dev-2.70.0/codd/languages/verify_plan.py +192 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/pyproject.toml +1 -1
- {codd_dev-2.68.0 → codd_dev-2.70.0}/.gitignore +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/LICENSE +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/README.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/bench_fixture/README.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/__main__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/action_outcome.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/ai_invoke.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/ai_patch.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/artifact_contract.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/artifact_ids.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/assembler.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/bridge.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/capability_completeness.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/claude_cli.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/cli.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/clustering.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/confidence.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/config.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/config_schema.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/contracts.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/contracts_registry/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/contracts_registry/__main__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/contracts_registry/certify.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/contracts_registry/generate_matrix.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/contracts_registry/registry.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/coverage_execution_coherence.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/auto_repair.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/builder.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/impact.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/defaults.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/dependency_lock_coherence.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployer.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/verification/pytest_http.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/deployment/providers/verification/vitest.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/design_md.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/diff/apply.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/discovery.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/drift.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/e2e_generator.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/e2e_harness.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/env_refs.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/extract_paths.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/extractor.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fix/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fix/design_updater.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fix/templates_loader.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fixer.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/frontmatter.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/generator.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/git_evidence.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/graph.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/greenfield/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/iac_nfr.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/implement_oracle.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/implement_oracle_scope.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/implementer.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/import_coherence.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/inheritance.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/languages/compat.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/languages/contract.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/languages/path_planner.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/languages/registry.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/lexicon.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/measure.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/operational_e2e_audit.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/operations_derive.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/parsing/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/parsing/_shared.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/parsing/api_specs.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/parsing/iac.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/parsing/python_ast.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/parsing/schemas.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/parsing/treesitter.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/planner.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/policy.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/project_types.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/propagate.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/propagation_common.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/propagator.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/reference_resolution.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/registry.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/history.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair/verify_runner.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/repair_slice.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/require.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/requirements_meta.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/restoration_report.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/restore.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/scanner.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/skills_cli/manager.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/skills_cli/paths.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/adapters/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/adapters/_base.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/adapters/nextjs.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/adapters/playwright.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/compose.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/loader.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/lock.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/obligations.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/profile.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/project.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/registry.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/stack/resolve.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/surface_reconciliation.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/synth.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/test_detection.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/test_import_coherence.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/traceability.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/validator.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/vb_marker_authenticity.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/vb_rerun_scope.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/verifiable_behavior_audit.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/watch/events.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd/wiring.py +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/dogfood/README.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/examples/README.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.0}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-2.68.0 → codd_dev-2.70.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.70.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
|
|
@@ -3124,44 +3124,30 @@ def _certify_verify_executed(project_root: Path, result: Any) -> str:
|
|
|
3124
3124
|
)
|
|
3125
3125
|
|
|
3126
3126
|
|
|
3127
|
-
# Language ecosystems whose CI needs a toolchain bootstrap before the test
|
|
3128
|
-
# command can run. Keyed by a marker file; the value is the GitHub Actions
|
|
3129
|
-
# setup steps to prepend. An unrecognised ecosystem still gets checkout + the
|
|
3130
|
-
# detected test command (authentic — it runs the real suite — just without a
|
|
3131
|
-
# toolchain step). This per-ecosystem dispatch is the v3.0 short-term bridge;
|
|
3132
|
-
# v3.1 moves the CI template into the language/stack profile (profile-driven CI).
|
|
3133
|
-
_CI_SETUP_STEPS: tuple[tuple[str, list[dict[str, Any]]], ...] = (
|
|
3134
|
-
("go.mod", [{"uses": "actions/setup-go@v5", "with": {"go-version": "stable"}}]),
|
|
3135
|
-
(
|
|
3136
|
-
"package.json",
|
|
3137
|
-
[
|
|
3138
|
-
{"uses": "actions/setup-node@v4", "with": {"node-version": "lts/*"}},
|
|
3139
|
-
{"run": "npm ci"},
|
|
3140
|
-
],
|
|
3141
|
-
),
|
|
3142
|
-
(
|
|
3143
|
-
"pyproject.toml",
|
|
3144
|
-
[
|
|
3145
|
-
{"uses": "actions/setup-python@v5", "with": {"python-version": "3.x"}},
|
|
3146
|
-
{"run": "python -m pip install --upgrade pip && pip install -e ."},
|
|
3147
|
-
],
|
|
3148
|
-
),
|
|
3149
|
-
(
|
|
3150
|
-
"setup.py",
|
|
3151
|
-
[
|
|
3152
|
-
{"uses": "actions/setup-python@v5", "with": {"python-version": "3.x"}},
|
|
3153
|
-
{"run": "python -m pip install --upgrade pip && pip install -e ."},
|
|
3154
|
-
],
|
|
3155
|
-
),
|
|
3156
|
-
("Cargo.toml", [{"uses": "dtolnay/rust-toolchain@stable"}]),
|
|
3157
|
-
)
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
3127
|
def _ci_setup_steps(project_root: Path) -> list[dict[str, Any]]:
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3128
|
+
"""CI toolchain setup steps from the resolved language profile (``profile.ci``).
|
|
3129
|
+
|
|
3130
|
+
Contract-driven (Contract Kernel, v2.70): the steps come from the project's
|
|
3131
|
+
language profile — the pipeline core does NOT branch on a language name or a
|
|
3132
|
+
marker file. No CoDD config, no resolvable language, or no ``ci`` section →
|
|
3133
|
+
no setup steps (the workflow still runs checkout + the real test command; an
|
|
3134
|
+
unsupported ecosystem simply gets no toolchain bootstrap, the honest
|
|
3135
|
+
pluggable default). The per-marker hardcoded table (v2.67.0) is gone.
|
|
3136
|
+
"""
|
|
3137
|
+
from codd.config import load_project_config
|
|
3138
|
+
from codd.languages import resolve_language_profile
|
|
3139
|
+
|
|
3140
|
+
try:
|
|
3141
|
+
config = load_project_config(project_root)
|
|
3142
|
+
except (FileNotFoundError, ValueError):
|
|
3143
|
+
return []
|
|
3144
|
+
try:
|
|
3145
|
+
profile = resolve_language_profile(config)
|
|
3146
|
+
except Exception: # noqa: BLE001 — unknown/unsupported language → no setup, never a crash.
|
|
3147
|
+
return []
|
|
3148
|
+
if profile is None or profile.ci is None:
|
|
3149
|
+
return []
|
|
3150
|
+
return [dict(step) for step in profile.ci.setup_steps]
|
|
3165
3151
|
|
|
3166
3152
|
|
|
3167
3153
|
def _ci_opt_out_declared(project_root: Path) -> bool:
|
|
@@ -17,6 +17,7 @@ from __future__ import annotations
|
|
|
17
17
|
from .profile import (
|
|
18
18
|
AdapterRef,
|
|
19
19
|
ArtifactsSpec,
|
|
20
|
+
CiSpec,
|
|
20
21
|
CommandSpec,
|
|
21
22
|
DependencyIntegrityFile,
|
|
22
23
|
Identity,
|
|
@@ -50,6 +51,15 @@ from .contract import (
|
|
|
50
51
|
resolve_language_contract,
|
|
51
52
|
resolve_language_profile,
|
|
52
53
|
)
|
|
54
|
+
from .verify_plan import (
|
|
55
|
+
ShadowComparison,
|
|
56
|
+
VerifyClass,
|
|
57
|
+
VerifyOutcome,
|
|
58
|
+
VerifyRunPlan,
|
|
59
|
+
build_verify_plan,
|
|
60
|
+
classify_verify_outcome,
|
|
61
|
+
shadow_compare,
|
|
62
|
+
)
|
|
53
63
|
from .compat import (
|
|
54
64
|
UnsupportedLayoutShape,
|
|
55
65
|
layout_profile_from_language_profile,
|
|
@@ -60,6 +70,7 @@ __all__ = [
|
|
|
60
70
|
# model
|
|
61
71
|
"AdapterRef",
|
|
62
72
|
"ArtifactsSpec",
|
|
73
|
+
"CiSpec",
|
|
63
74
|
"CommandSpec",
|
|
64
75
|
"DependencyIntegrityFile",
|
|
65
76
|
"Identity",
|
|
@@ -92,6 +103,14 @@ __all__ = [
|
|
|
92
103
|
"build_language_contract",
|
|
93
104
|
"resolve_language_contract",
|
|
94
105
|
"resolve_language_profile",
|
|
106
|
+
# verify run plan + semantic classifier (v2.69a, shadow)
|
|
107
|
+
"ShadowComparison",
|
|
108
|
+
"VerifyClass",
|
|
109
|
+
"VerifyOutcome",
|
|
110
|
+
"VerifyRunPlan",
|
|
111
|
+
"build_verify_plan",
|
|
112
|
+
"classify_verify_outcome",
|
|
113
|
+
"shadow_compare",
|
|
95
114
|
# compat shim (LanguageProfile -> legacy LayoutProfile)
|
|
96
115
|
"UnsupportedLayoutShape",
|
|
97
116
|
"layout_profile_from_language_profile",
|
|
@@ -21,6 +21,7 @@ import yaml
|
|
|
21
21
|
|
|
22
22
|
from .profile import (
|
|
23
23
|
ArtifactsSpec,
|
|
24
|
+
CiSpec,
|
|
24
25
|
CommandSpec,
|
|
25
26
|
DependencyIntegrityFile,
|
|
26
27
|
Identity,
|
|
@@ -338,6 +339,21 @@ def _parse_scaffold(doc: Mapping[str, Any]) -> ScaffoldSpec | None:
|
|
|
338
339
|
)
|
|
339
340
|
|
|
340
341
|
|
|
342
|
+
def _parse_ci(doc: Mapping[str, Any]) -> CiSpec | None:
|
|
343
|
+
raw = doc.get("ci")
|
|
344
|
+
if raw is None:
|
|
345
|
+
return None
|
|
346
|
+
m = _as_mapping(raw, where="ci")
|
|
347
|
+
steps = tuple(
|
|
348
|
+
_as_mapping(s, where=f"ci.setup_steps[{i}]")
|
|
349
|
+
for i, s in enumerate(_as_tuple(m.get("setup_steps")))
|
|
350
|
+
)
|
|
351
|
+
return CiSpec(
|
|
352
|
+
setup_steps=steps,
|
|
353
|
+
runs_on=str(m.get("runs_on", "ubuntu-latest")),
|
|
354
|
+
)
|
|
355
|
+
|
|
356
|
+
|
|
341
357
|
# ---------------------------------------------------------------------------
|
|
342
358
|
# public entry point
|
|
343
359
|
# ---------------------------------------------------------------------------
|
|
@@ -358,6 +374,7 @@ _KNOWN_TOP_LEVEL = frozenset(
|
|
|
358
374
|
"verify",
|
|
359
375
|
"artifacts",
|
|
360
376
|
"scaffold",
|
|
377
|
+
"ci",
|
|
361
378
|
}
|
|
362
379
|
)
|
|
363
380
|
|
|
@@ -400,6 +417,7 @@ def load_language_profile(path: str | Path) -> LanguageProfile:
|
|
|
400
417
|
verify=_parse_verify(doc),
|
|
401
418
|
artifacts=_parse_artifacts(doc),
|
|
402
419
|
scaffold=_parse_scaffold(doc),
|
|
420
|
+
ci=_parse_ci(doc),
|
|
403
421
|
extra=extra,
|
|
404
422
|
raw=dict(doc),
|
|
405
423
|
)
|
|
@@ -331,6 +331,26 @@ class ScaffoldSpec:
|
|
|
331
331
|
templates: tuple[Mapping[str, Any], ...] = ()
|
|
332
332
|
|
|
333
333
|
|
|
334
|
+
# ---------------------------------------------------------------------------
|
|
335
|
+
# ci scaffold (design §v2.70)
|
|
336
|
+
# ---------------------------------------------------------------------------
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
@dataclass(frozen=True)
|
|
340
|
+
class CiSpec:
|
|
341
|
+
"""CI scaffold contract — the toolchain bootstrap a generated CI workflow
|
|
342
|
+
needs before it can run the project's verify/test command.
|
|
343
|
+
|
|
344
|
+
Declarative GitHub-Actions step mappings (``{uses: ..., with: {...}}`` /
|
|
345
|
+
``{run: ...}``) so greenfield's ``ci_scaffold`` reads them from the language
|
|
346
|
+
profile instead of a hardcoded per-marker table in the pipeline core (the
|
|
347
|
+
Contract Kernel: the core never branches on a language name).
|
|
348
|
+
"""
|
|
349
|
+
|
|
350
|
+
setup_steps: tuple[Mapping[str, Any], ...] = ()
|
|
351
|
+
runs_on: str = "ubuntu-latest"
|
|
352
|
+
|
|
353
|
+
|
|
334
354
|
# ---------------------------------------------------------------------------
|
|
335
355
|
# generic adapter reference
|
|
336
356
|
# ---------------------------------------------------------------------------
|
|
@@ -373,6 +393,7 @@ class LanguageProfile:
|
|
|
373
393
|
verify: VerifySpec | None = None
|
|
374
394
|
artifacts: ArtifactsSpec | None = None
|
|
375
395
|
scaffold: ScaffoldSpec | None = None
|
|
396
|
+
ci: CiSpec | None = None
|
|
376
397
|
#: ``path_rules``, ``implement_oracle`` etc., preserved but not modeled in Phase 1.
|
|
377
398
|
extra: Mapping[str, Any] = field(default_factory=lambda: MappingProxyType({}))
|
|
378
399
|
#: The full parsed YAML mapping, for round-trip / debugging.
|
|
@@ -153,3 +153,11 @@ artifacts:
|
|
|
153
153
|
ignored:
|
|
154
154
|
- ".pytest_cache/**"
|
|
155
155
|
- "*.pyc"
|
|
156
|
+
|
|
157
|
+
# CI scaffold (design §v2.70): toolchain bootstrap for a generated CI workflow.
|
|
158
|
+
ci:
|
|
159
|
+
setup_steps:
|
|
160
|
+
- uses: actions/setup-python@v5
|
|
161
|
+
with:
|
|
162
|
+
python-version: "3.x"
|
|
163
|
+
- run: python -m pip install --upgrade pip && pip install -e .
|
|
@@ -157,3 +157,11 @@ artifacts:
|
|
|
157
157
|
ignored:
|
|
158
158
|
- "node_modules/**"
|
|
159
159
|
- "dist/**"
|
|
160
|
+
|
|
161
|
+
# CI scaffold (design §v2.70): toolchain bootstrap for a generated CI workflow.
|
|
162
|
+
ci:
|
|
163
|
+
setup_steps:
|
|
164
|
+
- uses: actions/setup-node@v4
|
|
165
|
+
with:
|
|
166
|
+
node-version: lts/*
|
|
167
|
+
- run: npm ci
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"""Verify run plan + semantic-class classifier (v2.69a — shadow only).
|
|
2
|
+
|
|
3
|
+
Builds a verify run plan from the resolved language contract's
|
|
4
|
+
``commands["verify"]`` (the declarative verify command: argv/cwd/env/report)
|
|
5
|
+
and classifies a verify outcome into one of six semantic classes. This runs in
|
|
6
|
+
SHADOW alongside the legacy ``detect_test_command`` path — it does NOT switch
|
|
7
|
+
verify behaviour (that is v2.69b). The point of the shadow stage is to prove,
|
|
8
|
+
on fixtures and on live runs, that the contract-driven plan classifies outcomes
|
|
9
|
+
the SAME way the legacy verifier does (or is intentionally stricter) BEFORE the
|
|
10
|
+
switch.
|
|
11
|
+
|
|
12
|
+
Anti-false-green: the classifier is a PURE mapping of already-computed signals
|
|
13
|
+
to a class — it never re-derives the zero-tests / report heuristics itself (the
|
|
14
|
+
caller supplies them, reusing the single legacy source), so there is no risk of
|
|
15
|
+
a second, drifting copy of the anti-false-green logic. The class ordering puts
|
|
16
|
+
every not-green verdict (TOOL_MISSING / timeout-FAIL / CONFIG_ERROR /
|
|
17
|
+
ZERO_TESTS / REPORT_MISSING) BEFORE the exit-0 PASS, so a run that exits 0 while
|
|
18
|
+
observing nothing is never classified green.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
|
|
23
|
+
from dataclasses import dataclass
|
|
24
|
+
from enum import Enum
|
|
25
|
+
from typing import Mapping
|
|
26
|
+
|
|
27
|
+
from .contract import ResolvedLanguageContract
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class VerifyClass(str, Enum):
|
|
31
|
+
"""Semantic class of a verify outcome (design §v2.69a)."""
|
|
32
|
+
|
|
33
|
+
PASS = "PASS"
|
|
34
|
+
FAIL = "FAIL"
|
|
35
|
+
ZERO_TESTS = "ZERO_TESTS"
|
|
36
|
+
REPORT_MISSING = "REPORT_MISSING"
|
|
37
|
+
TOOL_MISSING = "TOOL_MISSING"
|
|
38
|
+
CONFIG_ERROR = "CONFIG_ERROR"
|
|
39
|
+
|
|
40
|
+
@property
|
|
41
|
+
def is_green(self) -> bool:
|
|
42
|
+
return self is VerifyClass.PASS
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@dataclass(frozen=True)
|
|
46
|
+
class VerifyRunPlan:
|
|
47
|
+
"""The contract-derived verify command (declarative, not yet executed)."""
|
|
48
|
+
|
|
49
|
+
language_id: str
|
|
50
|
+
argv: tuple[str, ...]
|
|
51
|
+
cwd: str | None
|
|
52
|
+
env: Mapping[str, str]
|
|
53
|
+
report_path: str | None
|
|
54
|
+
report_adapter: str | None
|
|
55
|
+
report_required: bool
|
|
56
|
+
must_include_test_sets: tuple[str, ...]
|
|
57
|
+
|
|
58
|
+
@property
|
|
59
|
+
def command_str(self) -> str:
|
|
60
|
+
return " ".join(self.argv)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def build_verify_plan(contract: ResolvedLanguageContract) -> VerifyRunPlan | None:
|
|
64
|
+
"""Derive the verify run plan from ``contract.profile.commands['verify']``.
|
|
65
|
+
|
|
66
|
+
Returns ``None`` when the profile declares no verify command (the caller
|
|
67
|
+
stays on the legacy path). A declared ``report.path`` means the command is
|
|
68
|
+
expected to PRODUCE that report — its absence after a run is REPORT_MISSING
|
|
69
|
+
(a not-green outcome), enforced once adapters land (v2.72) / the switch
|
|
70
|
+
happens (v2.69b).
|
|
71
|
+
"""
|
|
72
|
+
cmd = contract.profile.commands.get("verify")
|
|
73
|
+
if cmd is None:
|
|
74
|
+
return None
|
|
75
|
+
report = cmd.report
|
|
76
|
+
scope = cmd.scope
|
|
77
|
+
return VerifyRunPlan(
|
|
78
|
+
language_id=contract.language_id,
|
|
79
|
+
argv=tuple(cmd.argv),
|
|
80
|
+
cwd=cmd.cwd,
|
|
81
|
+
env=dict(cmd.env),
|
|
82
|
+
report_path=(report.path if report else None),
|
|
83
|
+
report_adapter=(report.adapter if report else None),
|
|
84
|
+
report_required=bool(report and report.path),
|
|
85
|
+
must_include_test_sets=(scope.must_include_test_sets if scope else ()),
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
@dataclass(frozen=True)
|
|
90
|
+
class VerifyOutcome:
|
|
91
|
+
"""Observed signals from running a verify command.
|
|
92
|
+
|
|
93
|
+
The signals are computed by the CALLER (reusing the single legacy source for
|
|
94
|
+
the zero-tests heuristic, the report adapter for report presence, etc.) — this
|
|
95
|
+
keeps the classifier a pure mapping with no duplicated anti-false-green logic.
|
|
96
|
+
"""
|
|
97
|
+
|
|
98
|
+
spawned: bool # did the tool execute at all? (False ⇒ tool missing / spawn error)
|
|
99
|
+
returncode: int | None = None
|
|
100
|
+
timed_out: bool = False
|
|
101
|
+
zero_tests_observed: bool = False # runner started but collected/ran 0 tests
|
|
102
|
+
config_error: bool = False # runner usage/config error (e.g. pytest exit 4)
|
|
103
|
+
report_present: bool | None = None # None ⇒ no report expected / not yet checked
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def classify_verify_outcome(
|
|
107
|
+
outcome: VerifyOutcome, plan: VerifyRunPlan | None = None
|
|
108
|
+
) -> VerifyClass:
|
|
109
|
+
"""Map an observed verify outcome to a semantic class (pure, anti-false-green).
|
|
110
|
+
|
|
111
|
+
Not-green verdicts are checked BEFORE the exit-0 PASS so a command that exits
|
|
112
|
+
0 while observing nothing (zero tests, missing required report) can never be
|
|
113
|
+
classified green.
|
|
114
|
+
"""
|
|
115
|
+
if not outcome.spawned:
|
|
116
|
+
return VerifyClass.TOOL_MISSING
|
|
117
|
+
if outcome.timed_out:
|
|
118
|
+
return VerifyClass.FAIL # a timeout is a failure, never green
|
|
119
|
+
if outcome.config_error:
|
|
120
|
+
return VerifyClass.CONFIG_ERROR
|
|
121
|
+
if outcome.zero_tests_observed:
|
|
122
|
+
return VerifyClass.ZERO_TESTS
|
|
123
|
+
if outcome.returncode == 0:
|
|
124
|
+
if plan is not None and plan.report_required and outcome.report_present is False:
|
|
125
|
+
return VerifyClass.REPORT_MISSING
|
|
126
|
+
return VerifyClass.PASS
|
|
127
|
+
return VerifyClass.FAIL
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
@dataclass(frozen=True)
|
|
131
|
+
class ShadowComparison:
|
|
132
|
+
"""Result of comparing the contract verify plan against the legacy command."""
|
|
133
|
+
|
|
134
|
+
language_id: str
|
|
135
|
+
legacy_command: str
|
|
136
|
+
profile_command: str | None
|
|
137
|
+
commands_identical: bool
|
|
138
|
+
legacy_class: VerifyClass
|
|
139
|
+
profile_class: VerifyClass
|
|
140
|
+
classes_match: bool
|
|
141
|
+
note: str = ""
|
|
142
|
+
|
|
143
|
+
def to_trace(self) -> dict[str, object]:
|
|
144
|
+
return {
|
|
145
|
+
"shadow_language_id": self.language_id,
|
|
146
|
+
"legacy_command": self.legacy_command,
|
|
147
|
+
"profile_command": self.profile_command,
|
|
148
|
+
"commands_identical": self.commands_identical,
|
|
149
|
+
"legacy_verify_class": self.legacy_class.value,
|
|
150
|
+
"profile_verify_class": self.profile_class.value,
|
|
151
|
+
"verify_classes_match": self.classes_match,
|
|
152
|
+
"shadow_note": self.note,
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def shadow_compare(
|
|
157
|
+
contract: ResolvedLanguageContract,
|
|
158
|
+
*,
|
|
159
|
+
legacy_command: str,
|
|
160
|
+
legacy_outcome: VerifyOutcome,
|
|
161
|
+
) -> ShadowComparison | None:
|
|
162
|
+
"""Compare the contract verify plan to the legacy command for one run.
|
|
163
|
+
|
|
164
|
+
SHADOW ONLY — never changes behaviour. The legacy outcome's signals are
|
|
165
|
+
reused to classify what the profile plan WOULD report; divergence (or an
|
|
166
|
+
intentionally stricter profile, e.g. Go's ``-json`` report variant) is
|
|
167
|
+
recorded for review before the v2.69b switch.
|
|
168
|
+
"""
|
|
169
|
+
plan = build_verify_plan(contract)
|
|
170
|
+
if plan is None:
|
|
171
|
+
return None
|
|
172
|
+
legacy_class = classify_verify_outcome(legacy_outcome, plan=None)
|
|
173
|
+
profile_class = classify_verify_outcome(legacy_outcome, plan=plan)
|
|
174
|
+
identical = plan.command_str == legacy_command.strip()
|
|
175
|
+
note = ""
|
|
176
|
+
if not identical:
|
|
177
|
+
note = (
|
|
178
|
+
f"profile verify command differs from legacy "
|
|
179
|
+
f"(profile={plan.command_str!r} vs legacy={legacy_command!r})"
|
|
180
|
+
)
|
|
181
|
+
if plan.report_required:
|
|
182
|
+
note += "; profile is stricter (declares a required machine-readable report)"
|
|
183
|
+
return ShadowComparison(
|
|
184
|
+
language_id=contract.language_id,
|
|
185
|
+
legacy_command=legacy_command,
|
|
186
|
+
profile_command=plan.command_str,
|
|
187
|
+
commands_identical=identical,
|
|
188
|
+
legacy_class=legacy_class,
|
|
189
|
+
profile_class=profile_class,
|
|
190
|
+
classes_match=(legacy_class is profile_class),
|
|
191
|
+
note=note,
|
|
192
|
+
)
|
|
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
|