codd-dev 2.29.0__tar.gz → 2.30.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.29.0 → codd_dev-2.30.0}/PKG-INFO +1 -1
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/__init__.py +1 -1
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/e2e_generator.py +11 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/generator.py +1 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/greenfield/pipeline.py +203 -21
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/implementer.py +4 -3
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/project_types.py +28 -0
- codd_dev-2.30.0/codd/vb_marker_authenticity.py +693 -0
- codd_dev-2.30.0/codd/vb_rerun_scope.py +225 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/verifiable_behavior_audit.py +52 -1
- {codd_dev-2.29.0 → codd_dev-2.30.0}/pyproject.toml +1 -1
- {codd_dev-2.29.0 → codd_dev-2.30.0}/.gitignore +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/LICENSE +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/README.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/bench_fixture/README.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/__main__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/action_outcome.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/ai_invoke.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/ai_patch.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/artifact_contract.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/artifact_ids.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/assembler.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/bridge.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/capability_completeness.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/claude_cli.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/cli.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/clustering.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/confidence.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/config.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/config_schema.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/contracts.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/auto_repair.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/builder.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/impact.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/defaults.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/dependency_lock_coherence.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployer.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/deployment/providers/verification/vitest.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/design_md.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/diff/apply.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/discovery.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/drift.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/env_refs.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/extract_paths.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/extractor.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fix/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fix/design_updater.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fix/templates_loader.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fixer.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/frontmatter.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/git_evidence.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/graph.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/greenfield/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/iac_nfr.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/implement_oracle.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/implement_oracle_scope.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/import_coherence.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/inheritance.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/lexicon.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/measure.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/operational_e2e_audit.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/operations_derive.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/parsing/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/parsing/_shared.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/parsing/api_specs.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/parsing/iac.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/parsing/python_ast.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/parsing/schemas.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/parsing/treesitter.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/planner.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/policy.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/propagate.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/propagation_common.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/propagator.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/registry.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/history.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair/verify_runner.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/repair_slice.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/require.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/requirements_meta.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/restoration_report.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/restore.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/scanner.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/skills_cli/manager.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/skills_cli/paths.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/surface_reconciliation.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/synth.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/test_detection.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/test_import_coherence.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/traceability.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/validator.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/watch/events.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd/wiring.py +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/dogfood/README.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/examples/README.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.0}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-2.29.0 → codd_dev-2.30.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.30.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
|
|
@@ -375,6 +375,17 @@ def _render_header_comments(scenario: UserScenario, context: GenerationContext,
|
|
|
375
375
|
if scenario.kind == "operational":
|
|
376
376
|
source_operation = _source_operation_label(scenario)
|
|
377
377
|
coverage_axis = scenario.coverage_axis or "unspecified"
|
|
378
|
+
# Machine-injection guard (anti-false-coverage): injecting a coverage
|
|
379
|
+
# marker is ONLY safe here because the mapping is HARNESS-OWNED and
|
|
380
|
+
# machine-known — this is a skeleton the harness itself generates for
|
|
381
|
+
# ``operation=<X>`` and the marker names that same operation. NEVER
|
|
382
|
+
# inject ``codd: covers vb=<id>`` into a free-form unit/integration test
|
|
383
|
+
# by guessing the VB from a test name or nearby text: a guessed marker is
|
|
384
|
+
# a false coverage claim the authenticity gate exists to reject. A VB
|
|
385
|
+
# marker may only be authored by the SUT on a test that genuinely proves
|
|
386
|
+
# the behavior, or attached to a harness-generated VB-specific skeleton
|
|
387
|
+
# whose asserting body the SUT fills in (still subject to the
|
|
388
|
+
# assertion-presence gate).
|
|
378
389
|
lines.extend(
|
|
379
390
|
[
|
|
380
391
|
"// Operational E2E policy: run the whole generated suite, collect all failures, then repair after the full campaign finishes.",
|
|
@@ -226,6 +226,7 @@ _TEST_DOC_CANONICAL_VB_HEAD = [
|
|
|
226
226
|
"- Every verifiable behavior must map to at least one test scenario — if a design document specifies a transition chain (e.g. action → intermediate state → final state), each link in the chain requires a separate assertion.",
|
|
227
227
|
"- Include a traceability section that lists each verifiable behavior and its corresponding test scenario(s). Flag any behavior that lacks coverage.",
|
|
228
228
|
"- Write that traceability section as a Markdown table whose FIRST column is a stable verifiable-behavior id of the form `VB-<id>` (e.g. `VB-01`, `VB-AUTH-02`), one row per verifiable behavior. Header wording and language are free; CoDD machine-parses the `VB-` id in the first cell (`codd test audit`), so never merge multiple behaviors into one row and never omit the id column.",
|
|
229
|
+
"- Each VB id must be ATOMIC — name exactly one behavior. Never use range or list shorthand in an id (no `VB-EVAL-02..06`, no `VB-02,03`, no `VB-02〜06`); write one row with a distinct atomic id per behavior instead. A range id cannot be honestly covered by a single test marker, and its members would read as permanently uncovered.",
|
|
229
230
|
"- Declare each behavior under exactly one stable id; do not split one behavior across two ids or reuse an id for two different behaviors.",
|
|
230
231
|
"- Treat design-time `operation_flow` records as the authoritative source for operational test obligations. Do not invent E2E-only behavior that is absent from requirements or design; instead flag missing design obligations.",
|
|
231
232
|
]
|
|
@@ -733,16 +733,29 @@ class GreenfieldPipeline:
|
|
|
733
733
|
# — code that does not even typecheck cannot have meaningful VB coverage.
|
|
734
734
|
self._enforce_implement_oracle_gate(project_root, tasks, options)
|
|
735
735
|
|
|
736
|
-
# Project-wide VB coverage gate — ONCE, after every
|
|
737
|
-
# run and all covering tests therefore exist. Per-task
|
|
738
|
-
# disabled in _default_implement_task_runner precisely
|
|
739
|
-
# is project-wide; this is where it belongs. Honors the
|
|
740
|
-
# coverage_gate option (--no-coverage-gate /
|
|
741
|
-
# false) — when the owner turned it off, the
|
|
736
|
+
# Project-wide VB coverage + marker-authenticity gate — ONCE, after every
|
|
737
|
+
# implement task has run and all covering tests therefore exist. Per-task
|
|
738
|
+
# enforcement was disabled in _default_implement_task_runner precisely
|
|
739
|
+
# because the gate is project-wide; this is where it belongs. Honors the
|
|
740
|
+
# greenfield coverage_gate option (--no-coverage-gate /
|
|
741
|
+
# greenfield.coverage_gate: false) — when the owner turned it off, the
|
|
742
|
+
# final gate is skipped too. The rerun is wired (was dormant): an
|
|
743
|
+
# uncovered VB drives a bounded, TEST-SCOPED re-implementation (source is
|
|
744
|
+
# never edited by a VB rerun) with gap feedback, and the native oracle is
|
|
745
|
+
# re-asserted after each test edit.
|
|
746
|
+
coverage_on = bool(options.get("coverage_gate", True))
|
|
742
747
|
_enforce_stage_coverage_gate(
|
|
743
748
|
project_root,
|
|
744
|
-
coverage_gate=
|
|
749
|
+
coverage_gate=coverage_on,
|
|
745
750
|
echo=self.echo,
|
|
751
|
+
rerun=self._make_vb_rerun_callback(project_root, tasks, options) if coverage_on else None,
|
|
752
|
+
rerun_oracle=(
|
|
753
|
+
(lambda: self._enforce_implement_oracle_gate(project_root, tasks, options))
|
|
754
|
+
if coverage_on
|
|
755
|
+
else None
|
|
756
|
+
),
|
|
757
|
+
scope_resolver=self._make_vb_scope_resolver(project_root, tasks) if coverage_on else None,
|
|
758
|
+
authenticity_profile=self._resolve_layout_profile(project_root) if coverage_on else None,
|
|
746
759
|
)
|
|
747
760
|
record["detail"] = f"{len(tasks)} task(s) implemented"
|
|
748
761
|
|
|
@@ -1051,6 +1064,91 @@ class GreenfieldPipeline:
|
|
|
1051
1064
|
feedback=feedback,
|
|
1052
1065
|
)
|
|
1053
1066
|
|
|
1067
|
+
def _make_vb_rerun_callback(
|
|
1068
|
+
self,
|
|
1069
|
+
project_root: Path,
|
|
1070
|
+
tasks: list[ImplementTaskRef],
|
|
1071
|
+
options: dict[str, Any],
|
|
1072
|
+
) -> Callable[[str, Any], None]:
|
|
1073
|
+
"""A ``rerun(feedback, scope)`` for the VB coverage gate's feedback loop.
|
|
1074
|
+
|
|
1075
|
+
Reuses the oracle's scoped, write-fenced rerun dispatch
|
|
1076
|
+
(:meth:`_rerun_tasks_with_feedback`): a TEST-scoped
|
|
1077
|
+
:class:`~codd.implement_oracle_scope.OracleRerunScope` re-implements ONLY
|
|
1078
|
+
its test tasks, fenced to test files/helpers, so a VB coverage rerun can
|
|
1079
|
+
never rewrite production source.
|
|
1080
|
+
"""
|
|
1081
|
+
|
|
1082
|
+
def _rerun(feedback: str, scope: Any = None) -> None:
|
|
1083
|
+
self._rerun_tasks_with_feedback(project_root, tasks, feedback, options, scope=scope)
|
|
1084
|
+
|
|
1085
|
+
return _rerun
|
|
1086
|
+
|
|
1087
|
+
def _make_vb_scope_resolver(
|
|
1088
|
+
self,
|
|
1089
|
+
project_root: Path,
|
|
1090
|
+
tasks: list[ImplementTaskRef],
|
|
1091
|
+
) -> Callable[[list[str]], Any]:
|
|
1092
|
+
"""A resolver mapping uncovered VB source docs → a TEST-scoped rerun scope.
|
|
1093
|
+
|
|
1094
|
+
Delegates to :func:`codd.vb_rerun_scope.derive_vb_rerun_scope` with the
|
|
1095
|
+
pipeline's ``_output_paths_for_task`` so each task's outputs resolve the
|
|
1096
|
+
same way the rerun itself resolves them. A derivation failure degrades to
|
|
1097
|
+
a broad scope (never aborts the gate).
|
|
1098
|
+
"""
|
|
1099
|
+
from codd.config import load_project_config
|
|
1100
|
+
|
|
1101
|
+
def _resolve(uncovered_source_docs: list[str]) -> Any:
|
|
1102
|
+
try:
|
|
1103
|
+
config = load_project_config(project_root)
|
|
1104
|
+
except (FileNotFoundError, ValueError):
|
|
1105
|
+
config = {}
|
|
1106
|
+
try:
|
|
1107
|
+
from codd.vb_rerun_scope import derive_vb_rerun_scope
|
|
1108
|
+
|
|
1109
|
+
return derive_vb_rerun_scope(
|
|
1110
|
+
uncovered_source_docs,
|
|
1111
|
+
tasks,
|
|
1112
|
+
config=config,
|
|
1113
|
+
path_resolver=_output_paths_for_task,
|
|
1114
|
+
)
|
|
1115
|
+
except Exception as exc: # noqa: BLE001 — degrade to broad, never abort.
|
|
1116
|
+
self.echo(f"[greenfield] VB rerun: scope derivation failed ({exc}); rerun stays broad.")
|
|
1117
|
+
from codd.implement_oracle_scope import SCOPE_BROAD, OracleRerunScope
|
|
1118
|
+
|
|
1119
|
+
return OracleRerunScope(
|
|
1120
|
+
rung=SCOPE_BROAD, # canonical broad ⇒ is_broad() True ⇒ unfenced
|
|
1121
|
+
task_ids=tuple(task.task_id for task in tasks),
|
|
1122
|
+
allowed_paths=(),
|
|
1123
|
+
detail="VB rerun: scope derivation error — broad fallback",
|
|
1124
|
+
)
|
|
1125
|
+
|
|
1126
|
+
return _resolve
|
|
1127
|
+
|
|
1128
|
+
def _resolve_layout_profile(self, project_root: Path) -> Any:
|
|
1129
|
+
"""Resolve the active :class:`~codd.project_types.LayoutProfile` (or None).
|
|
1130
|
+
|
|
1131
|
+
Used by the marker-authenticity gate to obtain the per-language
|
|
1132
|
+
test-block adapter (``profile.test_block_profile()``). Best-effort: any
|
|
1133
|
+
resolution failure returns ``None`` so the gate degrades to its
|
|
1134
|
+
language-agnostic stage-1 (orphan) check rather than aborting.
|
|
1135
|
+
"""
|
|
1136
|
+
try:
|
|
1137
|
+
from codd.project_types import resolve_layout_profile
|
|
1138
|
+
|
|
1139
|
+
config, language, source_dirs, test_dirs = self._layout_inputs(project_root)
|
|
1140
|
+
return resolve_layout_profile(
|
|
1141
|
+
language=language,
|
|
1142
|
+
project_name=self._layout_project_name(project_root, config),
|
|
1143
|
+
source_dirs=source_dirs,
|
|
1144
|
+
test_dirs=test_dirs,
|
|
1145
|
+
config=config,
|
|
1146
|
+
project_root=project_root,
|
|
1147
|
+
)
|
|
1148
|
+
except Exception as exc: # noqa: BLE001 — authenticity degrades without a profile.
|
|
1149
|
+
self.echo(f"[greenfield] VB authenticity: layout profile unavailable ({exc}); stage-1 only.")
|
|
1150
|
+
return None
|
|
1151
|
+
|
|
1054
1152
|
def _default_implement_task_runner(
|
|
1055
1153
|
self,
|
|
1056
1154
|
project_root: Path,
|
|
@@ -1997,8 +2095,12 @@ def _enforce_stage_coverage_gate(
|
|
|
1997
2095
|
*,
|
|
1998
2096
|
coverage_gate: bool,
|
|
1999
2097
|
echo: Callable[[str], None],
|
|
2098
|
+
rerun: Callable[[str, Any], None] | None = None,
|
|
2099
|
+
rerun_oracle: Callable[[], None] | None = None,
|
|
2100
|
+
scope_resolver: Callable[[list[str]], Any] | None = None,
|
|
2101
|
+
authenticity_profile: Any = None,
|
|
2000
2102
|
) -> None:
|
|
2001
|
-
"""Project-wide verifiable-behavior coverage
|
|
2103
|
+
"""Project-wide verifiable-behavior coverage + authenticity gate (implement STAGE).
|
|
2002
2104
|
|
|
2003
2105
|
Runs ONCE after every implement task has completed, so all covering tests
|
|
2004
2106
|
already exist. This is the correct granularity for the project-wide VB
|
|
@@ -2008,20 +2110,35 @@ def _enforce_stage_coverage_gate(
|
|
|
2008
2110
|
— an early fixtures/helper task that writes no covering tests would
|
|
2009
2111
|
otherwise hard-fail against the whole project's VBs.)
|
|
2010
2112
|
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2113
|
+
Two gates, both HARD (raise :class:`StageError` on failure):
|
|
2114
|
+
|
|
2115
|
+
1. **Coverage** (:func:`run_implement_coverage_gate`): every declared VB has a
|
|
2116
|
+
``covers``/``blocked`` marker. When a ``rerun`` callback is wired, an
|
|
2117
|
+
uncovered gap drives a bounded, TEST-SCOPED re-implementation with gap
|
|
2118
|
+
feedback (the previously-dormant feedback loop, now live) before failing.
|
|
2119
|
+
2. **Authenticity** (:func:`build_authenticity_report`): each ``covers``
|
|
2120
|
+
marker is a *credible* claim — attached to an executable test block that
|
|
2121
|
+
contains an assertion (anti-false-green; "add a marker" cannot be
|
|
2122
|
+
satisfied by marking an empty/skipped test). Gracefully degrades for
|
|
2123
|
+
stacks/files it cannot structurally parse.
|
|
2124
|
+
|
|
2125
|
+
``rerun(feedback, scope)`` re-implements the scoped TEST tasks under a
|
|
2126
|
+
write-fence (source is never edited by a VB rerun). ``scope_resolver`` maps
|
|
2127
|
+
the uncovered VB source docs to that scope. ``rerun_oracle`` re-runs the
|
|
2128
|
+
native implement-oracle AFTER a VB rerun (a test edit can break a helper
|
|
2129
|
+
symbol; the pipeline order is oracle→VB, so the oracle must be re-asserted).
|
|
2130
|
+
|
|
2131
|
+
Honors the greenfield ``coverage_gate`` option and the project-level
|
|
2132
|
+
``test_coverage.gate`` config.
|
|
2022
2133
|
"""
|
|
2023
2134
|
from codd.config import load_project_config
|
|
2024
|
-
from codd.verifiable_behavior_audit import
|
|
2135
|
+
from codd.verifiable_behavior_audit import (
|
|
2136
|
+
build_vb_coverage_audit,
|
|
2137
|
+
coverage_gate_enabled,
|
|
2138
|
+
coverage_gate_max_retries,
|
|
2139
|
+
format_gap_feedback,
|
|
2140
|
+
run_implement_coverage_gate,
|
|
2141
|
+
)
|
|
2025
2142
|
|
|
2026
2143
|
if not coverage_gate:
|
|
2027
2144
|
return
|
|
@@ -2031,6 +2148,9 @@ def _enforce_stage_coverage_gate(
|
|
|
2031
2148
|
except (FileNotFoundError, ValueError):
|
|
2032
2149
|
config = {}
|
|
2033
2150
|
|
|
2151
|
+
if not coverage_gate_enabled(config):
|
|
2152
|
+
return
|
|
2153
|
+
|
|
2034
2154
|
# Pass the configured test dirs as the audited output paths so the gate
|
|
2035
2155
|
# treats this as a test-related run (it is — every test the build will ever
|
|
2036
2156
|
# have now exists) and evaluates the FULL project VB universe in one pass.
|
|
@@ -2040,13 +2160,52 @@ def _enforce_stage_coverage_gate(
|
|
|
2040
2160
|
else:
|
|
2041
2161
|
audited_paths = ["tests/"]
|
|
2042
2162
|
|
|
2163
|
+
# --- Gate 1: coverage, with the (now-live) TEST-scoped feedback rerun. ---
|
|
2164
|
+
if rerun is not None and scope_resolver is not None:
|
|
2165
|
+
# Drive the bounded feedback loop HERE so each rerun is TEST-scoped (the
|
|
2166
|
+
# scope is recomputed from the current gap) and the native oracle is
|
|
2167
|
+
# re-asserted after each test edit. ``run_implement_coverage_gate`` is
|
|
2168
|
+
# then called once more with rerun=None to produce the final verdict +
|
|
2169
|
+
# gap reporting (no second loop).
|
|
2170
|
+
max_retries = coverage_gate_max_retries(config)
|
|
2171
|
+
report = build_vb_coverage_audit(project_root, config=config)
|
|
2172
|
+
attempt = 0
|
|
2173
|
+
while report.rows and report.uncovered_rows and attempt < max_retries:
|
|
2174
|
+
attempt += 1
|
|
2175
|
+
uncovered_docs = sorted({row.source_doc for row in report.uncovered_rows if row.source_doc})
|
|
2176
|
+
scope = scope_resolver(uncovered_docs)
|
|
2177
|
+
echo(
|
|
2178
|
+
f"Test coverage gate: {len(report.uncovered_rows)} uncovered verifiable behavior(s); "
|
|
2179
|
+
f"re-running TEST tasks with gap feedback (attempt {attempt}/{max_retries})"
|
|
2180
|
+
)
|
|
2181
|
+
try:
|
|
2182
|
+
rerun(format_gap_feedback(report), scope)
|
|
2183
|
+
if rerun_oracle is not None:
|
|
2184
|
+
# A VB test rerun can break test↔helper symbol coherence;
|
|
2185
|
+
# re-assert the native oracle so a type/import break never
|
|
2186
|
+
# rides into verify.
|
|
2187
|
+
rerun_oracle()
|
|
2188
|
+
except Exception as exc: # noqa: BLE001
|
|
2189
|
+
# A rerun that cannot proceed (e.g. a codegen/environment error)
|
|
2190
|
+
# must NOT mask the gate's verdict: log and stop the bounded loop,
|
|
2191
|
+
# then fall through to the final coverage audit, which fails
|
|
2192
|
+
# HONESTLY on whatever VBs are still uncovered. (The oracle gate
|
|
2193
|
+
# treats its rerun failures as hard because they ARE the defect;
|
|
2194
|
+
# here the authority is the coverage audit below, not the rerun.)
|
|
2195
|
+
echo(
|
|
2196
|
+
f"Test coverage gate: re-run attempt {attempt} could not complete ({exc}); "
|
|
2197
|
+
"stopping the feedback loop and evaluating coverage as-is."
|
|
2198
|
+
)
|
|
2199
|
+
break
|
|
2200
|
+
report = build_vb_coverage_audit(project_root, config=config)
|
|
2201
|
+
|
|
2043
2202
|
passed = run_implement_coverage_gate(
|
|
2044
2203
|
project_root,
|
|
2045
2204
|
config=config,
|
|
2046
2205
|
design_node=None,
|
|
2047
2206
|
output_paths=audited_paths,
|
|
2048
2207
|
opt_out=not coverage_gate,
|
|
2049
|
-
rerun=None,
|
|
2208
|
+
rerun=None, # the scoped loop (above) already ran; this is the final verdict
|
|
2050
2209
|
echo=echo,
|
|
2051
2210
|
echo_error=echo,
|
|
2052
2211
|
)
|
|
@@ -2057,6 +2216,29 @@ def _enforce_stage_coverage_gate(
|
|
|
2057
2216
|
"marker after all implement tasks completed (see the gap list above)"
|
|
2058
2217
|
)
|
|
2059
2218
|
|
|
2219
|
+
# --- Gate 2: marker authenticity (anti-false-green). HARD gate. ---
|
|
2220
|
+
from codd.vb_marker_authenticity import build_authenticity_report
|
|
2221
|
+
|
|
2222
|
+
auth = build_authenticity_report(project_root, config=config, profile=authenticity_profile)
|
|
2223
|
+
if auth.degraded_paths:
|
|
2224
|
+
echo(
|
|
2225
|
+
"Test coverage gate: marker-authenticity attachment/assertion checks skipped for "
|
|
2226
|
+
f"{len(auth.degraded_paths)} un-parseable file(s) (stage-1 orphan check still applied): "
|
|
2227
|
+
+ ", ".join(auth.degraded_paths)
|
|
2228
|
+
)
|
|
2229
|
+
if not auth.passed:
|
|
2230
|
+
for violation in auth.violations:
|
|
2231
|
+
echo(violation.message)
|
|
2232
|
+
raise StageError(
|
|
2233
|
+
"verifiable-behavior marker-authenticity gate failed for the implement stage: "
|
|
2234
|
+
f"{len(auth.violations)} `codd: covers vb=` marker(s) are not credible coverage claims "
|
|
2235
|
+
"(attached to a skipped/empty test, an orphan id, or a test with no assertion). A "
|
|
2236
|
+
"covers marker must sit on an executable test that asserts the behavior."
|
|
2237
|
+
)
|
|
2238
|
+
echo(
|
|
2239
|
+
f"Test coverage gate: marker authenticity OK ({len(auth.degraded_paths)} file(s) stage-1-only)."
|
|
2240
|
+
)
|
|
2241
|
+
|
|
2060
2242
|
|
|
2061
2243
|
def _default_verify_runner(
|
|
2062
2244
|
project_root: Path,
|
|
@@ -1884,9 +1884,10 @@ def _build_implementation_prompt(
|
|
|
1884
1884
|
if _spec_targets_tests(spec, config):
|
|
1885
1885
|
lines.extend(
|
|
1886
1886
|
[
|
|
1887
|
-
"Verifiable-behavior traceability markers:",
|
|
1888
|
-
"-
|
|
1889
|
-
"-
|
|
1887
|
+
"Verifiable-behavior traceability markers (release-blocking — the implement stage gate fails the build on any gap):",
|
|
1888
|
+
"- The design and its dependency test documents declare verifiable behaviors in a traceability table whose first column is `VB-<id>`. Reconcile EVERY declared VB id against the tests you write: for each VB, produce either a real test that PROVES it (carrying a `codd: covers vb=<id>` comment marker) or, if it genuinely cannot be tested yet, an explicit `codd: blocked vb=<id> reason=<short_reason>` marker. Never leave a declared VB silently uncovered.",
|
|
1889
|
+
"- A `codd: covers vb=<id>` marker is a CLAIM that the test proves that behavior. Only attach it to a test that (a) is actually executed — not `it.skip`/`test.todo`/`describe.skip`/`@pytest.mark.skip`/disabled — and (b) contains at least one assertion that would FAIL if the behavior were broken. A marker on an empty test, a skipped test, or a smoke test with no assertion is a false coverage claim and the authenticity gate will reject it. If no proving test exists, create or extend a real one FIRST, then mark it — do not add the marker to make the gate pass.",
|
|
1890
|
+
"- One marker per behavior, placed inside the test file (a comment immediately above the proving test). Example (pytest): `# codd: covers vb=VB-07` directly above `def test_rejects_missing_id(): ...` whose body asserts the rejection. Example (vitest): `// codd: covers vb=VB-07` directly above the `it('rejects missing id', () => { expect(...).toThrow(); })`.",
|
|
1890
1891
|
"",
|
|
1891
1892
|
"Scoped assertions (precision, not weakening):",
|
|
1892
1893
|
"- When a test asserts a CONTENT constraint over rendered or serialized output (e.g. \"displayed amounts contain no decimal point\", \"no personal data appears in the response\", \"every listed price shows a currency symbol\"), assert ONLY against the specific values or elements the constraint governs: parse and read the relevant nodes/fields under test (DOM elements, table cells, the parsed JSON values, the matched record), not the whole response body.",
|
|
@@ -589,6 +589,34 @@ class LayoutProfile:
|
|
|
589
589
|
|
|
590
590
|
return tuple(paths)
|
|
591
591
|
|
|
592
|
+
def test_block_profile(self) -> Any:
|
|
593
|
+
"""Resolve this stack's test-structure adapter for the VB authenticity gate.
|
|
594
|
+
|
|
595
|
+
Returns a ``codd.vb_marker_authenticity.TestBlockProfile`` (a per-language
|
|
596
|
+
parser that locates executable test blocks and resolves skip/assertion
|
|
597
|
+
facts) or ``None`` for a stack with no adapter — in which case the
|
|
598
|
+
authenticity gate gracefully degrades to its language-agnostic stage 1
|
|
599
|
+
(orphan-marker) check only. This is the SINGLE registration point for a
|
|
600
|
+
new stack's test parser, mirroring :meth:`harness_owned_scaffold_paths`
|
|
601
|
+
(dispatch on ``self.language``, no per-language logic in the gate). The
|
|
602
|
+
import is lazy so the authenticity module (which imports the VB audit) is
|
|
603
|
+
never pulled in at ``project_types`` import time.
|
|
604
|
+
"""
|
|
605
|
+
|
|
606
|
+
try:
|
|
607
|
+
from codd.vb_marker_authenticity import (
|
|
608
|
+
PythonTestBlockProfile,
|
|
609
|
+
TypeScriptTestBlockProfile,
|
|
610
|
+
)
|
|
611
|
+
except Exception: # noqa: BLE001 — adapter is optional; degrade if unavailable.
|
|
612
|
+
return None
|
|
613
|
+
|
|
614
|
+
if self.language == "python":
|
|
615
|
+
return PythonTestBlockProfile()
|
|
616
|
+
if self.language in ("typescript", "node", "javascript"):
|
|
617
|
+
return TypeScriptTestBlockProfile()
|
|
618
|
+
return None
|
|
619
|
+
|
|
592
620
|
|
|
593
621
|
def normalize_package_name(project_name: str | None, *, fallback: str = "app") -> str:
|
|
594
622
|
"""Derive a valid Python package identifier from a project name.
|