codd-dev 2.91.0__tar.gz → 2.93.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.91.0 → codd_dev-2.93.0}/PKG-INFO +1 -1
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/__init__.py +1 -1
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/cli.py +32 -4
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/greenfield/pipeline.py +73 -5
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/adapters/runner_report.py +145 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/builtin_adapters.py +6 -0
- codd_dev-2.93.0/codd/stack/command_authenticity.py +734 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/command_plan.py +76 -2
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/compose.py +66 -7
- codd_dev-2.93.0/codd/stack/obligations.py +171 -0
- codd_dev-2.93.0/codd/stack/project.py +252 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/pyproject.toml +1 -1
- codd_dev-2.91.0/codd/stack/obligations.py +0 -76
- codd_dev-2.91.0/codd/stack/project.py +0 -112
- {codd_dev-2.91.0 → codd_dev-2.93.0}/.gitignore +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/LICENSE +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/README.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/bench_fixture/README.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/__main__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/action_outcome.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/ai_invoke.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/ai_patch.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/artifact_contract.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/artifact_ids.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/assembler.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/bridge.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/capability_completeness.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/claude_cli.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/clustering.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/confidence.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/config.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/config_schema.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/contracts.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/contracts_registry/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/contracts_registry/__main__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/contracts_registry/certify.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/contracts_registry/generate_matrix.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/contracts_registry/registry.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/coverage_execution_coherence.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/auto_repair.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/builder.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/impact.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/defaults.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/dependency_lock_coherence.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployer.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/verification/pytest_http.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/deployment/providers/verification/vitest.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/design_md.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/diff/apply.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/discovery.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/drift.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/e2e_generator.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/e2e_harness.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/env_refs.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/extract_paths.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/extractor.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fix/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fix/design_updater.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fix/templates_loader.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fixer.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/frontmatter.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/generator.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/git_evidence.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/graph.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/greenfield/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/iac_nfr.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/implement_oracle.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/implement_oracle_scope.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/implement_oracle_types.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/implementer.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/import_coherence.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/inheritance.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/adapters/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/adapters/implement_oracle.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/adapters/oracle_go.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/adapters/oracle_python.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/adapters/oracle_typescript.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/compat.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/contract.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/loader.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/oracle_executor.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/path_planner.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/profile.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/profiles/go.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/profiles/python.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/profiles/typescript.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/registry.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/verify_executor.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/languages/verify_plan.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/lexicon.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/measure.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/operational_e2e_audit.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/operations_derive.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/parsing/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/parsing/_shared.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/parsing/api_specs.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/parsing/extractor_registry.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/parsing/iac.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/parsing/python_ast.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/parsing/regex_strategies.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/parsing/schemas.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/parsing/treesitter.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/planner.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/policy.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/project_types.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/propagate.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/propagation_common.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/propagator.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/reference_resolution.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/registry.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/history.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair/verify_runner.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/repair_slice.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/require.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/requirements_meta.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/restoration_report.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/restore.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/scanner.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/skills_cli/manager.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/skills_cli/paths.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/adapters/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/adapters/_base.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/adapters/nextjs.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/adapters/playwright.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/loader.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/lock.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/profile.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/registry.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/stack/resolve.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/surface_reconciliation.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/synth.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/test_detection.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/test_import_coherence.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/traceability.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/validator.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/vb_marker_authenticity.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/vb_rerun_scope.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/verifiable_behavior_audit.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/watch/events.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd/wiring.py +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/dogfood/README.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/examples/README.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.0}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-2.91.0 → codd_dev-2.93.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.93.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
|
|
@@ -7663,7 +7663,7 @@ def _intake_stack_contract_for_verify(project_root: Path, *, stack_command_execu
|
|
|
7663
7663
|
if gate.red:
|
|
7664
7664
|
raise SystemExit(1)
|
|
7665
7665
|
|
|
7666
|
-
# Stack command MATERIALIZATION (Contract Kernel v2.77c) — the verify-path mirror
|
|
7666
|
+
# Stack command MATERIALIZATION (Contract Kernel v2.77c/d) — the verify-path mirror
|
|
7667
7667
|
# of the greenfield pipeline's :meth:`_materialize_stack_commands`. (1) CONFLICT
|
|
7668
7668
|
# GATE: a composition conflict (command collision / unproved replace / weakened
|
|
7669
7669
|
# obligation / exclusive / deny) is RED (honest non-zero exit) — the composer
|
|
@@ -7671,8 +7671,10 @@ def _intake_stack_contract_for_verify(project_root: Path, *, stack_command_execu
|
|
|
7671
7671
|
# a gate. (2) PLAN + EXECUTE: build a deterministic, contract-driven command plan
|
|
7672
7672
|
# (NO framework literal) and INVOKE each composed slot by exit code, so a declared
|
|
7673
7673
|
# framework_build/e2e_test is genuinely run on verify (not silently skipped while
|
|
7674
|
-
# the language verify greens alone).
|
|
7675
|
-
#
|
|
7674
|
+
# the language verify greens alone). (3) AUTHENTICITY (v2.77d): exit 0 is necessary
|
|
7675
|
+
# but NOT sufficient — a no-op / observed-no-tests / missing-or-unreadable-report
|
|
7676
|
+
# slot is RED even on exit 0. The obligation-checker gate is v2.77e (out of lane).
|
|
7677
|
+
from codd.stack.command_authenticity import StackCommandAuthenticityError
|
|
7676
7678
|
from codd.stack.command_plan import (
|
|
7677
7679
|
StackCommandMaterializationError,
|
|
7678
7680
|
StackContractConflictError,
|
|
@@ -7683,7 +7685,11 @@ def _intake_stack_contract_for_verify(project_root: Path, *, stack_command_execu
|
|
|
7683
7685
|
plan, _result = materialize_stack_command_plan(
|
|
7684
7686
|
contract, project_root, executor=stack_command_executor
|
|
7685
7687
|
)
|
|
7686
|
-
except (
|
|
7688
|
+
except (
|
|
7689
|
+
StackContractConflictError,
|
|
7690
|
+
StackCommandMaterializationError,
|
|
7691
|
+
StackCommandAuthenticityError,
|
|
7692
|
+
) as exc:
|
|
7687
7693
|
click.echo(f"[verify] stack command materialization: {exc}", err=True)
|
|
7688
7694
|
raise SystemExit(1) from exc
|
|
7689
7695
|
click.echo(
|
|
@@ -7691,6 +7697,28 @@ def _intake_stack_contract_for_verify(project_root: Path, *, stack_command_execu
|
|
|
7691
7697
|
f"({', '.join(plan.command_ids)})"
|
|
7692
7698
|
)
|
|
7693
7699
|
|
|
7700
|
+
# Stack obligation CHECKER gate (Contract Kernel v2.77e) — the verify-path mirror of
|
|
7701
|
+
# the greenfield pipeline's :meth:`GreenfieldPipeline._enforce_stack_obligations`.
|
|
7702
|
+
# AFTER materialization (v2.77c) + authenticity (v2.77d), CHECK the composed
|
|
7703
|
+
# framework/addon OBLIGATIONS as a red/green gate: the Next.js ignoreBuildErrors guard
|
|
7704
|
+
# reds a build that would pass with type errors; the Playwright e2e_actually_executed
|
|
7705
|
+
# obligation reds a 0-test run. Anti-false-green: a missing/disabled/faulting checker
|
|
7706
|
+
# or an unenforceable ERROR obligation is RED (honest non-zero exit), never a silent
|
|
7707
|
+
# pass. Uses the ALREADY-RESOLVED ``contract`` from intake (no re-resolution from disk
|
|
7708
|
+
# — avoids a TOCTOU skip) and the SAME current-run evidence the authenticity layer
|
|
7709
|
+
# blessed. A non-stack project never reaches here (byte-identical).
|
|
7710
|
+
from codd.stack.project import StackObligationGateError, enforce_stack_obligation_gate
|
|
7711
|
+
|
|
7712
|
+
try:
|
|
7713
|
+
enforce_stack_obligation_gate(contract, project_root)
|
|
7714
|
+
except StackObligationGateError as exc:
|
|
7715
|
+
click.echo(f"[verify] stack obligation gate: {exc}", err=True)
|
|
7716
|
+
raise SystemExit(1) from exc
|
|
7717
|
+
click.echo(
|
|
7718
|
+
f"[verify] stack obligation gate: {len(contract.obligations)} obligation(s) checked "
|
|
7719
|
+
"— all enforced obligations satisfied"
|
|
7720
|
+
)
|
|
7721
|
+
|
|
7694
7722
|
|
|
7695
7723
|
def _run_verify_once(
|
|
7696
7724
|
path: str,
|
|
@@ -533,6 +533,26 @@ class GreenfieldPipeline:
|
|
|
533
533
|
{"status": STATUS_PENDING, "detail": ""}, str(exc),
|
|
534
534
|
)
|
|
535
535
|
|
|
536
|
+
# Stack obligation CHECKER gate (Contract Kernel v2.77e) — turn the framework/
|
|
537
|
+
# addon OBLIGATIONS into a red/green gate, AFTER materialization+authenticity. The
|
|
538
|
+
# composed commands now run (v2.77c) and are authentic (v2.77d); this CHECKS the
|
|
539
|
+
# declared obligations (the Next.js ignoreBuildErrors guard reds a build that would
|
|
540
|
+
# pass with type errors; the Playwright e2e_actually_executed obligation reds a
|
|
541
|
+
# 0-test run). Anti-false-green: a missing/disabled/faulting checker or an
|
|
542
|
+
# unenforceable ERROR obligation is RED, never a silent pass. Uses the ALREADY-
|
|
543
|
+
# RESOLVED contract (no re-resolution from disk — avoids a TOCTOU skip) and the
|
|
544
|
+
# SAME current-run evidence the authenticity layer blessed. Only for stack-declared
|
|
545
|
+
# projects (contract is not None) — a non-stack run is byte-identical (no gate).
|
|
546
|
+
# Routed through _fail like intake/lock/materialization.
|
|
547
|
+
try:
|
|
548
|
+
if contract is not None:
|
|
549
|
+
self._enforce_stack_obligations(project_root, session, contract)
|
|
550
|
+
except StageError as exc:
|
|
551
|
+
return self._fail(
|
|
552
|
+
project_root, session, options, "stack_obligations",
|
|
553
|
+
{"status": STATUS_PENDING, "detail": ""}, str(exc),
|
|
554
|
+
)
|
|
555
|
+
|
|
536
556
|
runners: dict[str, Callable[[Path, dict[str, Any], dict[str, Any]], None]] = {
|
|
537
557
|
"init": self._stage_init,
|
|
538
558
|
"elicit": self._stage_elicit,
|
|
@@ -715,15 +735,20 @@ class GreenfieldPipeline:
|
|
|
715
735
|
2. MATERIALIZE — build a deterministic, contract-driven command plan and
|
|
716
736
|
INVOKE each composed slot by exit code (via the injectable
|
|
717
737
|
``stack_command_executor`` seam). A failing slot raises
|
|
718
|
-
:class:`StackCommandMaterializationError`.
|
|
738
|
+
:class:`StackCommandMaterializationError`.
|
|
739
|
+
3. AUTHENTICITY (v2.77d) — exit 0 is necessary but NOT sufficient: each slot
|
|
740
|
+
must prove it did its job for its kind (a no-op / observed-no-tests /
|
|
741
|
+
missing-or-unreadable-report command is RED even on exit 0), raising
|
|
742
|
+
:class:`StackCommandAuthenticityError`. All three domain errors become a
|
|
719
743
|
:class:`StageError` so the autopilot reports them honestly (the run does
|
|
720
|
-
NOT advance to the stage loop with a conflicted/failing
|
|
744
|
+
NOT advance to the stage loop with a conflicted/failing/inauthentic plan).
|
|
721
745
|
|
|
722
746
|
The materialized plan + executed slot ids are recorded in the run trace
|
|
723
747
|
(observable, like the intake hash + lock verdict) so "the declared stack
|
|
724
|
-
command slots were invoked" is provable.
|
|
725
|
-
|
|
748
|
+
command slots were invoked AND authentic" is provable. The obligation-checker
|
|
749
|
+
gate (``verify_project_stack``) is v2.77e (out of lane here).
|
|
726
750
|
"""
|
|
751
|
+
from codd.stack.command_authenticity import StackCommandAuthenticityError
|
|
727
752
|
from codd.stack.command_plan import (
|
|
728
753
|
StackCommandMaterializationError,
|
|
729
754
|
StackContractConflictError,
|
|
@@ -734,7 +759,11 @@ class GreenfieldPipeline:
|
|
|
734
759
|
plan, result = materialize_stack_command_plan(
|
|
735
760
|
contract, project_root, executor=self.stack_command_executor
|
|
736
761
|
)
|
|
737
|
-
except (
|
|
762
|
+
except (
|
|
763
|
+
StackContractConflictError,
|
|
764
|
+
StackCommandMaterializationError,
|
|
765
|
+
StackCommandAuthenticityError,
|
|
766
|
+
) as exc:
|
|
738
767
|
self.echo(f"[greenfield] stack command materialization: {exc}")
|
|
739
768
|
raise StageError(str(exc)) from exc
|
|
740
769
|
|
|
@@ -747,6 +776,45 @@ class GreenfieldPipeline:
|
|
|
747
776
|
f"{len(plan.slots)} slot(s) invoked ({', '.join(plan.command_ids)})"
|
|
748
777
|
)
|
|
749
778
|
|
|
779
|
+
# ── stack obligation checker gate (Contract Kernel v2.77e) ──
|
|
780
|
+
|
|
781
|
+
def _enforce_stack_obligations(self, project_root: Path, session: dict[str, Any], contract) -> None:
|
|
782
|
+
"""Run the composed stack obligation checkers as a red/green gate (v2.77e).
|
|
783
|
+
|
|
784
|
+
See the call site in :meth:`run`. Only invoked for stack-declared projects
|
|
785
|
+
(``contract is not None``); non-stack projects never reach here, so they are
|
|
786
|
+
byte-identical (no obligation gate at all).
|
|
787
|
+
|
|
788
|
+
Uses the ALREADY-RESOLVED ``contract`` (passed in from intake/lock/
|
|
789
|
+
materialization) — NOT a re-resolution from disk — so a stack file that changes
|
|
790
|
+
or is deleted after materialization cannot make this gate silently skip (a
|
|
791
|
+
TOCTOU false-green). :func:`enforce_stack_obligation_gate` invokes every
|
|
792
|
+
obligation's registered checker with ``project_root`` plus the current-run
|
|
793
|
+
evidence (the SAME e2e report the authenticity layer blessed), and raises
|
|
794
|
+
:class:`StackObligationGateError` unless every ERROR obligation was genuinely
|
|
795
|
+
enforced AND satisfied: a blocking violation, an unenforced ERROR obligation
|
|
796
|
+
(no registered checker — unverifiable), or a checker fault (raised / None /
|
|
797
|
+
malformed return) is RED. Translated to :class:`StageError` so the autopilot
|
|
798
|
+
reports it honestly via ``_fail``. The per-obligation verdict counts are
|
|
799
|
+
recorded in the run trace (observable, like the lock verdict + command plan).
|
|
800
|
+
"""
|
|
801
|
+
from codd.stack.project import StackObligationGateError, enforce_stack_obligation_gate
|
|
802
|
+
|
|
803
|
+
try:
|
|
804
|
+
result = enforce_stack_obligation_gate(contract, project_root)
|
|
805
|
+
except StackObligationGateError as exc:
|
|
806
|
+
self.echo(f"[greenfield] stack obligation gate: {exc}")
|
|
807
|
+
raise StageError(str(exc)) from exc
|
|
808
|
+
|
|
809
|
+
record = session.get("stack_contract")
|
|
810
|
+
if isinstance(record, dict) and result is not None:
|
|
811
|
+
record["stack_obligations_checked"] = len(contract.obligations)
|
|
812
|
+
record["stack_obligations_unenforced"] = [o.id for o in result.unenforced]
|
|
813
|
+
self.echo(
|
|
814
|
+
"[greenfield] stack obligation gate: "
|
|
815
|
+
f"{len(contract.obligations)} obligation(s) checked — all enforced obligations satisfied"
|
|
816
|
+
)
|
|
817
|
+
|
|
750
818
|
# ── option resolution ───────────────────────────────────
|
|
751
819
|
|
|
752
820
|
def _resolve_options(self, project_root: Path) -> dict[str, Any]:
|
|
@@ -194,6 +194,151 @@ class VitestJsonReportAdapter:
|
|
|
194
194
|
)
|
|
195
195
|
|
|
196
196
|
|
|
197
|
+
@dataclass(frozen=True)
|
|
198
|
+
class PlaywrightJsonReportAdapter:
|
|
199
|
+
"""Playwright ``--reporter=json`` adapter (the stack ``playwright_json`` report).
|
|
200
|
+
|
|
201
|
+
``npx playwright test --reporter=json`` emits a single top-level object whose
|
|
202
|
+
``suites`` array is a TREE: each suite has nested ``suites`` and ``specs``; each
|
|
203
|
+
*spec* carries a ``title``, a ``file`` (project-relative test file), and a
|
|
204
|
+
``tests`` array; each *test* carries ``results`` (one per retry/attempt) and an
|
|
205
|
+
overall ``status`` (Playwright's roll-up: ``expected`` / ``unexpected`` /
|
|
206
|
+
``flaky`` / ``skipped``). A test is a clean PASS only when its overall status is
|
|
207
|
+
``expected``; ``unexpected`` (a failure), ``flaky`` (passed only on retry — not a
|
|
208
|
+
clean first-run pass) and ``skipped`` (a skip proves nothing — the SAME rule the
|
|
209
|
+
vitest/go adapters and the static authenticity gate apply) are NOT clean. A spec's
|
|
210
|
+
FILE is in ``executed_passed_files`` only when it ran ≥1 test and EVERY test in it
|
|
211
|
+
was clean; any non-clean test taints the whole file into ``executed_failed_files``.
|
|
212
|
+
|
|
213
|
+
Mirrors :class:`VitestJsonReportAdapter`'s contract exactly: it raises
|
|
214
|
+
:class:`RunnerReportUnsupported` on a structurally-unreadable report (missing /
|
|
215
|
+
garbled / not an object / no ``suites`` array) so the authenticity gate degrades
|
|
216
|
+
EXPLICITLY (REPORT_UNREADABLE), never silently treating "nothing parseable" as
|
|
217
|
+
"nothing ran" (a false-green). ``test_level_available`` is True whenever any test
|
|
218
|
+
case was observed, so a TEST-kind stack command can require test-level evidence.
|
|
219
|
+
"""
|
|
220
|
+
|
|
221
|
+
def parse(self, report_path: Path, *, project_root: Path) -> RunnerExecution:
|
|
222
|
+
try:
|
|
223
|
+
payload = json.loads(report_path.read_text(encoding="utf-8"))
|
|
224
|
+
except (OSError, json.JSONDecodeError) as exc:
|
|
225
|
+
raise RunnerReportUnsupported(
|
|
226
|
+
f"playwright JSON report unreadable at {report_path}: {exc}"
|
|
227
|
+
) from exc
|
|
228
|
+
if not isinstance(payload, dict):
|
|
229
|
+
raise RunnerReportUnsupported(
|
|
230
|
+
f"playwright JSON report at {report_path} is not an object"
|
|
231
|
+
)
|
|
232
|
+
suites = payload.get("suites")
|
|
233
|
+
if not isinstance(suites, list):
|
|
234
|
+
raise RunnerReportUnsupported(
|
|
235
|
+
f"playwright JSON report at {report_path} has no suites array"
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
passed_files: set[str] = set()
|
|
239
|
+
failed_files: set[str] = set()
|
|
240
|
+
passed_cases: set[str] = set()
|
|
241
|
+
# Per-file rollup: did the file collect any case, and is every case clean?
|
|
242
|
+
file_any_case: dict[str, bool] = {}
|
|
243
|
+
file_clean: dict[str, bool] = {}
|
|
244
|
+
total_cases = 0
|
|
245
|
+
passed_count = 0
|
|
246
|
+
|
|
247
|
+
for spec in _iter_playwright_specs(suites):
|
|
248
|
+
rel = _relativize(str(spec.get("file") or ""), project_root)
|
|
249
|
+
if rel is None:
|
|
250
|
+
continue
|
|
251
|
+
spec_title = str(spec.get("title") or "").strip()
|
|
252
|
+
tests = spec.get("tests")
|
|
253
|
+
tests = tests if isinstance(tests, list) else []
|
|
254
|
+
file_any_case.setdefault(rel, False)
|
|
255
|
+
file_clean.setdefault(rel, True)
|
|
256
|
+
for test in tests:
|
|
257
|
+
if not isinstance(test, dict):
|
|
258
|
+
continue
|
|
259
|
+
status = str(test.get("status") or "").strip().lower()
|
|
260
|
+
if not status:
|
|
261
|
+
# No roll-up status: fall back to the worst per-result status so a
|
|
262
|
+
# malformed test never sneaks in as a clean pass.
|
|
263
|
+
status = _playwright_results_status(test.get("results"))
|
|
264
|
+
if not status:
|
|
265
|
+
continue
|
|
266
|
+
file_any_case[rel] = True
|
|
267
|
+
total_cases += 1
|
|
268
|
+
if status == "expected":
|
|
269
|
+
passed_count += 1
|
|
270
|
+
name = (test.get("title") or spec_title or "").strip()
|
|
271
|
+
key = f"{rel}::{name}" if name else rel
|
|
272
|
+
passed_cases.add(key)
|
|
273
|
+
else:
|
|
274
|
+
# unexpected / flaky / skipped / timedOut / interrupted — none is a
|
|
275
|
+
# clean pass; the whole file is tainted (a skip proves nothing).
|
|
276
|
+
file_clean[rel] = False
|
|
277
|
+
|
|
278
|
+
for rel, any_case in file_any_case.items():
|
|
279
|
+
if not any_case:
|
|
280
|
+
# A spec file that collected zero cases is not a pass (collected nothing).
|
|
281
|
+
continue
|
|
282
|
+
if file_clean.get(rel, False):
|
|
283
|
+
passed_files.add(rel)
|
|
284
|
+
else:
|
|
285
|
+
failed_files.add(rel)
|
|
286
|
+
|
|
287
|
+
return RunnerExecution(
|
|
288
|
+
executed_passed_files=frozenset(passed_files),
|
|
289
|
+
executed_failed_files=frozenset(failed_files),
|
|
290
|
+
executed_passed_cases=frozenset(passed_cases),
|
|
291
|
+
test_level_available=total_cases > 0,
|
|
292
|
+
total_cases=total_cases,
|
|
293
|
+
passed_cases=passed_count,
|
|
294
|
+
)
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
def _iter_playwright_specs(suites: list):
|
|
298
|
+
"""Yield every ``spec`` mapping in a Playwright suite TREE (recursive).
|
|
299
|
+
|
|
300
|
+
Playwright nests ``suites`` arbitrarily (file suite → describe blocks → …); each
|
|
301
|
+
level may carry ``specs`` and further ``suites``. We walk the whole tree so a test
|
|
302
|
+
nested under any number of ``describe`` blocks is still observed.
|
|
303
|
+
"""
|
|
304
|
+
stack = list(suites)
|
|
305
|
+
while stack:
|
|
306
|
+
node = stack.pop()
|
|
307
|
+
if not isinstance(node, dict):
|
|
308
|
+
continue
|
|
309
|
+
specs = node.get("specs")
|
|
310
|
+
if isinstance(specs, list):
|
|
311
|
+
for spec in specs:
|
|
312
|
+
if isinstance(spec, dict):
|
|
313
|
+
yield spec
|
|
314
|
+
child_suites = node.get("suites")
|
|
315
|
+
if isinstance(child_suites, list):
|
|
316
|
+
stack.extend(child_suites)
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
def _playwright_results_status(results: Any) -> str:
|
|
320
|
+
"""Worst-case status across a test's ``results`` (retries), Playwright vocabulary.
|
|
321
|
+
|
|
322
|
+
Used only as a fallback when a test omits its roll-up ``status``. Any non-passed
|
|
323
|
+
result (``failed`` / ``timedOut`` / ``interrupted``) makes the test non-clean; a
|
|
324
|
+
``skipped`` result is non-clean too; all ``passed`` ⇒ ``expected``. Returns ``""``
|
|
325
|
+
when there is nothing to judge.
|
|
326
|
+
"""
|
|
327
|
+
if not isinstance(results, list):
|
|
328
|
+
return ""
|
|
329
|
+
seen = False
|
|
330
|
+
for res in results:
|
|
331
|
+
if not isinstance(res, dict):
|
|
332
|
+
continue
|
|
333
|
+
status = str(res.get("status") or "").strip().lower()
|
|
334
|
+
if not status:
|
|
335
|
+
continue
|
|
336
|
+
seen = True
|
|
337
|
+
if status != "passed":
|
|
338
|
+
return "unexpected"
|
|
339
|
+
return "expected" if seen else ""
|
|
340
|
+
|
|
341
|
+
|
|
197
342
|
@dataclass(frozen=True)
|
|
198
343
|
class GoTestJsonReportAdapter:
|
|
199
344
|
"""``go test -json`` (line-delimited JSON) reporter adapter.
|
|
@@ -77,11 +77,17 @@ def ensure_builtin_adapters_registered(registry: AdapterRegistry | None = None)
|
|
|
77
77
|
# import time, so codd.languages stays free of an adapter/coverage import cycle.
|
|
78
78
|
from codd.languages.adapters.runner_report import (
|
|
79
79
|
GoTestJsonReportAdapter,
|
|
80
|
+
PlaywrightJsonReportAdapter,
|
|
80
81
|
VitestJsonReportAdapter,
|
|
81
82
|
)
|
|
82
83
|
|
|
83
84
|
_register_once(target, "runner_report", "vitest-json", VitestJsonReportAdapter())
|
|
84
85
|
_register_once(target, "runner_report", "go-test-json", GoTestJsonReportAdapter())
|
|
86
|
+
# Stack e2e: the Playwright addon declares ``report.adapter: playwright_json`` —
|
|
87
|
+
# register under that EXACT id so a TEST-kind stack command's required report has a
|
|
88
|
+
# resolvable adapter (an unregistered adapter for a required report is RED, never a
|
|
89
|
+
# silent skip; v2.77d authenticity). Underscore spelling matches the profile.
|
|
90
|
+
_register_once(target, "runner_report", "playwright_json", PlaywrightJsonReportAdapter())
|
|
85
91
|
|
|
86
92
|
# Implement-oracle tool-semantics adapters (Contract Kernel oracle dispatch §3).
|
|
87
93
|
# All three concrete adapters (go-toolchain / python-composite / typescript-tsc)
|