codd-dev 2.9.0__tar.gz → 2.10.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.9.0 → codd_dev-2.10.0}/PKG-INFO +1 -1
- codd_dev-2.10.0/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +17 -0
- codd_dev-2.10.0/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +70 -0
- codd_dev-2.10.0/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +121 -0
- codd_dev-2.10.0/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +24 -0
- codd_dev-2.10.0/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +8 -0
- codd_dev-2.10.0/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +32 -0
- codd_dev-2.10.0/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +19 -0
- codd_dev-2.10.0/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +54 -0
- codd_dev-2.10.0/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +121 -0
- codd_dev-2.10.0/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +23 -0
- codd_dev-2.10.0/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +10 -0
- codd_dev-2.10.0/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +45 -0
- codd_dev-2.10.0/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +17 -0
- codd_dev-2.10.0/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +72 -0
- codd_dev-2.10.0/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +129 -0
- codd_dev-2.10.0/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +27 -0
- codd_dev-2.10.0/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +9 -0
- codd_dev-2.10.0/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +35 -0
- codd_dev-2.10.0/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +18 -0
- codd_dev-2.10.0/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +49 -0
- codd_dev-2.10.0/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +145 -0
- codd_dev-2.10.0/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +26 -0
- codd_dev-2.10.0/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +10 -0
- codd_dev-2.10.0/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +34 -0
- codd_dev-2.10.0/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +18 -0
- codd_dev-2.10.0/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +73 -0
- codd_dev-2.10.0/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +129 -0
- codd_dev-2.10.0/codd_plugins/lexicons/ml_model_cards/manifest.yaml +23 -0
- codd_dev-2.10.0/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +9 -0
- codd_dev-2.10.0/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +35 -0
- codd_dev-2.10.0/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +16 -0
- codd_dev-2.10.0/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +51 -0
- codd_dev-2.10.0/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +117 -0
- codd_dev-2.10.0/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +25 -0
- codd_dev-2.10.0/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +8 -0
- codd_dev-2.10.0/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +39 -0
- codd_dev-2.10.0/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +21 -0
- codd_dev-2.10.0/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +53 -0
- codd_dev-2.10.0/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +193 -0
- codd_dev-2.10.0/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +29 -0
- codd_dev-2.10.0/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +13 -0
- codd_dev-2.10.0/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +40 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/stack_map.yaml +25 -1
- {codd_dev-2.9.0 → codd_dev-2.10.0}/pyproject.toml +1 -1
- {codd_dev-2.9.0 → codd_dev-2.10.0}/.gitignore +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/LICENSE +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/README.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/__main__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/assembler.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/bridge.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/cli.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/clustering.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/config.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/contracts.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/builder.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployer.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/design_md.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/diff/apply.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/drift.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/e2e_generator.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/env_refs.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/extractor.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/fixer.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/generator.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/graph.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/implementer.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/inheritance.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/lexicon.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/measure.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/parsing.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/planner.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/policy.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/propagate.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/propagator.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/registry.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/history.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair/verify_runner.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/repair_slice.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/require.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/restore.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/scanner.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/synth.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/traceability.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/validator.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/watch/events.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd/wiring.py +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.9.0 → codd_dev-2.10.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.10.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
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# API Rate Limiting and Caching Coverage Matrix
|
|
2
|
+
|
|
3
|
+
Source: RFC 6585, RFC 7234, RFC 9110, RFC 9111, and common API platform
|
|
4
|
+
practice.
|
|
5
|
+
|
|
6
|
+
| Axis | Coverage target | Covered when | Gap signal |
|
|
7
|
+
| --- | --- | --- | --- |
|
|
8
|
+
| `rate_limit_strategy` | Rate subject and enforcement | Per-user, per-IP, per-tenant, or equivalent rate limiting scope and window is defined. | Public request volume can grow without a declared limit strategy. |
|
|
9
|
+
| `quota_management` | Plan or period usage limits | Daily, monthly, plan, or tenant quotas and overage behavior are declared. | Consumers do not know usage ceilings or exhaustion behavior. |
|
|
10
|
+
| `throttling_response` | Client-visible throttling | 429 Too Many Requests and retry guidance such as Retry-After are specified. | Clients cannot predict how to back off after throttling. |
|
|
11
|
+
| `cache_control_headers` | HTTP cache policy | Cache-Control directives such as max-age, private, no-cache, or no-store are declared. | Responses can be cached incorrectly or not cached when intended. |
|
|
12
|
+
| `etag_conditional_requests` | Representation validation | ETag, If-None-Match, or 304 Not Modified behavior is defined. | Clients cannot validate cached representations safely. |
|
|
13
|
+
| `cdn_edge_caching` | Shared or edge cache lifecycle | CDN cacheability, surrogate policy, and invalidation are specified. | Edge caches can serve stale objects or miss cacheable content. |
|
|
14
|
+
| `idempotency_keys` | Retry-safe mutations | Idempotency keys or duplicate request controls protect side-effecting operations. | Retried mutations can create duplicate payments, orders, or writes. |
|
|
15
|
+
|
|
16
|
+
Reviewers classify each axis as `covered`, `implicit`, or `gap`. Findings are
|
|
17
|
+
emitted only for `gap`.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
extends: codd/elicit/templates/elicit_prompt_L0.md
|
|
3
|
+
lexicon_name: api_rate_limiting_caching
|
|
4
|
+
observation_dimensions: 7
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# API Rate Limiting and Caching Coverage Lexicon
|
|
8
|
+
|
|
9
|
+
Apply the base elicitation prompt, then inspect requirements and design notes
|
|
10
|
+
through the 7 API platform axes declared in `lexicon.yaml`. Use HTTP and API
|
|
11
|
+
platform terms for rate limits, quotas, 429 responses, cache headers,
|
|
12
|
+
conditional requests, edge caching, and idempotent retries.
|
|
13
|
+
|
|
14
|
+
1. `rate_limit_strategy`
|
|
15
|
+
2. `quota_management`
|
|
16
|
+
3. `throttling_response`
|
|
17
|
+
4. `cache_control_headers`
|
|
18
|
+
5. `etag_conditional_requests`
|
|
19
|
+
6. `cdn_edge_caching`
|
|
20
|
+
7. `idempotency_keys`
|
|
21
|
+
|
|
22
|
+
For every axis, classify coverage as:
|
|
23
|
+
|
|
24
|
+
- `covered`: the material explicitly states the API behavior, header, status
|
|
25
|
+
code, quota, cache policy, invalidation behavior, or retry-safe mutation
|
|
26
|
+
mechanism and gives enough detail to verify it.
|
|
27
|
+
- `implicit`: the material refers to a shared API platform standard that is
|
|
28
|
+
available in the same source set and clearly covers the axis.
|
|
29
|
+
- `gap`: the material omits API platform behavior needed to judge abuse
|
|
30
|
+
prevention, client retry behavior, cache correctness, or duplicate side-effect
|
|
31
|
+
prevention.
|
|
32
|
+
|
|
33
|
+
Emit findings only for `gap` axes. Populate `details.dimension` with the axis
|
|
34
|
+
identifier from `lexicon.yaml`, include `details.evidence`, and ask a
|
|
35
|
+
reviewer-facing question when the missing API behavior requires human
|
|
36
|
+
confirmation. Severity follows `severity_rules.yaml`.
|
|
37
|
+
|
|
38
|
+
## Coverage-check examples
|
|
39
|
+
|
|
40
|
+
### covered
|
|
41
|
+
|
|
42
|
+
Requirement: "Public API requests are limited per authenticated user and tenant.
|
|
43
|
+
Quota exhaustion returns 429 with Retry-After. Read endpoints define
|
|
44
|
+
Cache-Control, ETag, and If-None-Match behavior, CDN cache invalidation occurs on
|
|
45
|
+
publish, and mutation POST requests require Idempotency-Key."
|
|
46
|
+
|
|
47
|
+
Classification: `covered` for all axes because rate limits, quota response,
|
|
48
|
+
caching, conditional validation, edge invalidation, and retry-safe mutation
|
|
49
|
+
behavior are explicit.
|
|
50
|
+
|
|
51
|
+
### implicit
|
|
52
|
+
|
|
53
|
+
Requirement: "The billing API follows the attached `api-platform-standard-v5`,
|
|
54
|
+
which defines quotas, cache headers, edge cache purge, and idempotency keys."
|
|
55
|
+
|
|
56
|
+
Classification: `implicit` for `quota_management`, `cache_control_headers`,
|
|
57
|
+
`cdn_edge_caching`, and `idempotency_keys` when the referenced standard is
|
|
58
|
+
available in the same source set.
|
|
59
|
+
|
|
60
|
+
### gap
|
|
61
|
+
|
|
62
|
+
Requirement: "The endpoint is public and clients may retry failed payment
|
|
63
|
+
requests."
|
|
64
|
+
|
|
65
|
+
Classification: `gap` for `rate_limit_strategy`, `throttling_response`, and
|
|
66
|
+
`idempotency_keys` because the material does not define abuse controls,
|
|
67
|
+
throttling response, or duplicate mutation protection.
|
|
68
|
+
|
|
69
|
+
Do not invent axes outside `lexicon.yaml`. Findings outside this lexicon should
|
|
70
|
+
set `severity: info` and `details.note: "outside_lexicon_scope"`.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
coverage_axes:
|
|
2
|
+
- axis_type: "rate_limit_strategy"
|
|
3
|
+
rationale: "Public APIs need a rate limit strategy that states the subject, window, scope, and enforcement model."
|
|
4
|
+
criticality_default: high
|
|
5
|
+
variants:
|
|
6
|
+
- id: "rate limit"
|
|
7
|
+
label: "Rate limit"
|
|
8
|
+
attributes: {source: "RFC 6585", coverage_target: "request rate control"}
|
|
9
|
+
criticality: high
|
|
10
|
+
- id: "per-user"
|
|
11
|
+
label: "Per-user limit"
|
|
12
|
+
attributes: {source: "API platform practice", coverage_target: "authenticated caller scope"}
|
|
13
|
+
criticality: high
|
|
14
|
+
- id: "per-IP"
|
|
15
|
+
label: "Per-IP limit"
|
|
16
|
+
attributes: {source: "API platform practice", coverage_target: "network caller scope"}
|
|
17
|
+
criticality: medium
|
|
18
|
+
- id: "per-tenant"
|
|
19
|
+
label: "Per-tenant limit"
|
|
20
|
+
attributes: {source: "API platform practice", coverage_target: "customer isolation"}
|
|
21
|
+
criticality: high
|
|
22
|
+
- axis_type: "quota_management"
|
|
23
|
+
rationale: "API products need quota limits and overage policy so consumers know daily, monthly, or plan-based usage boundaries."
|
|
24
|
+
criticality_default: medium
|
|
25
|
+
variants:
|
|
26
|
+
- id: "quota"
|
|
27
|
+
label: "Usage quota"
|
|
28
|
+
attributes: {source: "API platform practice", coverage_target: "consumption limit"}
|
|
29
|
+
criticality: medium
|
|
30
|
+
- id: "daily limit"
|
|
31
|
+
label: "Daily quota"
|
|
32
|
+
attributes: {source: "API platform practice", coverage_target: "daily consumption window"}
|
|
33
|
+
criticality: medium
|
|
34
|
+
- id: "monthly limit"
|
|
35
|
+
label: "Monthly quota"
|
|
36
|
+
attributes: {source: "API platform practice", coverage_target: "billing-period consumption window"}
|
|
37
|
+
criticality: medium
|
|
38
|
+
- id: "overage policy"
|
|
39
|
+
label: "Overage policy"
|
|
40
|
+
attributes: {source: "API platform practice", coverage_target: "behavior after quota exhaustion"}
|
|
41
|
+
criticality: medium
|
|
42
|
+
- axis_type: "throttling_response"
|
|
43
|
+
rationale: "RFC 6585 defines 429 Too Many Requests for rate limiting, and retry guidance helps clients recover predictably."
|
|
44
|
+
criticality_default: medium
|
|
45
|
+
variants:
|
|
46
|
+
- id: "429"
|
|
47
|
+
label: "429 Too Many Requests"
|
|
48
|
+
attributes: {source: "RFC 6585", source_literal: "429 Too Many Requests"}
|
|
49
|
+
criticality: medium
|
|
50
|
+
- id: "Retry-After"
|
|
51
|
+
label: "Retry-After"
|
|
52
|
+
attributes: {source: "RFC 6585", coverage_target: "client retry delay"}
|
|
53
|
+
criticality: medium
|
|
54
|
+
- id: "Too Many Requests"
|
|
55
|
+
label: "Too Many Requests response"
|
|
56
|
+
attributes: {source: "RFC 6585", coverage_target: "throttling status"}
|
|
57
|
+
criticality: medium
|
|
58
|
+
- axis_type: "cache_control_headers"
|
|
59
|
+
rationale: "HTTP caching relies on explicit Cache-Control directives for freshness, privacy, and revalidation behavior."
|
|
60
|
+
criticality_default: medium
|
|
61
|
+
variants:
|
|
62
|
+
- id: "Cache-Control"
|
|
63
|
+
label: "Cache-Control header"
|
|
64
|
+
attributes: {source: "RFC 7234", source_literal: "Cache-Control"}
|
|
65
|
+
criticality: medium
|
|
66
|
+
- id: "max-age"
|
|
67
|
+
label: "max-age directive"
|
|
68
|
+
attributes: {source: "RFC 7234", coverage_target: "freshness lifetime"}
|
|
69
|
+
criticality: medium
|
|
70
|
+
- id: "no-store"
|
|
71
|
+
label: "no-store directive"
|
|
72
|
+
attributes: {source: "RFC 7234", coverage_target: "sensitive response storage"}
|
|
73
|
+
criticality: high
|
|
74
|
+
- axis_type: "etag_conditional_requests"
|
|
75
|
+
rationale: "ETags and conditional requests let clients validate cached representations and reduce unnecessary transfers."
|
|
76
|
+
criticality_default: medium
|
|
77
|
+
variants:
|
|
78
|
+
- id: "ETag"
|
|
79
|
+
label: "ETag"
|
|
80
|
+
attributes: {source: "RFC 7232 / RFC 9110", coverage_target: "entity validator"}
|
|
81
|
+
criticality: medium
|
|
82
|
+
- id: "If-None-Match"
|
|
83
|
+
label: "If-None-Match"
|
|
84
|
+
attributes: {source: "RFC 7232 / RFC 9110", coverage_target: "conditional validation"}
|
|
85
|
+
criticality: medium
|
|
86
|
+
- id: "304 Not Modified"
|
|
87
|
+
label: "304 Not Modified"
|
|
88
|
+
attributes: {source: "HTTP semantics", coverage_target: "not-modified response"}
|
|
89
|
+
criticality: medium
|
|
90
|
+
- axis_type: "cdn_edge_caching"
|
|
91
|
+
rationale: "Edge caching needs declared cacheability, surrogate behavior, and invalidation so API freshness and distribution are governed."
|
|
92
|
+
criticality_default: medium
|
|
93
|
+
variants:
|
|
94
|
+
- id: "CDN"
|
|
95
|
+
label: "CDN caching"
|
|
96
|
+
attributes: {source: "HTTP caching practice", coverage_target: "edge cache layer"}
|
|
97
|
+
criticality: medium
|
|
98
|
+
- id: "cache invalidation"
|
|
99
|
+
label: "Cache invalidation"
|
|
100
|
+
attributes: {source: "HTTP caching practice", coverage_target: "stale edge object removal"}
|
|
101
|
+
criticality: medium
|
|
102
|
+
- id: "surrogate control"
|
|
103
|
+
label: "Surrogate cache control"
|
|
104
|
+
attributes: {source: "HTTP caching practice", coverage_target: "shared cache policy"}
|
|
105
|
+
criticality: medium
|
|
106
|
+
- axis_type: "idempotency_keys"
|
|
107
|
+
rationale: "Idempotency keys prevent duplicate side effects when clients retry payment, order, or mutation requests."
|
|
108
|
+
criticality_default: high
|
|
109
|
+
variants:
|
|
110
|
+
- id: "Idempotency-Key"
|
|
111
|
+
label: "Idempotency key"
|
|
112
|
+
attributes: {source: "API reliability practice", coverage_target: "retry-safe mutation identifier"}
|
|
113
|
+
criticality: high
|
|
114
|
+
- id: "idempotency"
|
|
115
|
+
label: "Idempotency contract"
|
|
116
|
+
attributes: {source: "HTTP semantics", coverage_target: "safe retry behavior"}
|
|
117
|
+
criticality: high
|
|
118
|
+
- id: "duplicate request"
|
|
119
|
+
label: "Duplicate request protection"
|
|
120
|
+
attributes: {source: "API reliability practice", coverage_target: "side-effect de-duplication"}
|
|
121
|
+
criticality: high
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: api_rate_limiting_caching
|
|
2
|
+
lexicon_name: api_rate_limiting_caching
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
source_url: "https://www.rfc-editor.org/rfc/rfc6585"
|
|
5
|
+
source_version: "RFC 6585 / RFC 7234 / IETF"
|
|
6
|
+
standard: "RFC 6585 / RFC 7234 / IETF"
|
|
7
|
+
domain: cross_industry
|
|
8
|
+
description: "API rate limiting, quota management, throttling response, idempotency, and HTTP caching coverage axes."
|
|
9
|
+
observation_dimensions: 7
|
|
10
|
+
extends: "codd/elicit/templates/elicit_prompt_L0.md"
|
|
11
|
+
prompt_extension: "elicit_extend.md"
|
|
12
|
+
recommended_kinds: "recommended_kinds.yaml"
|
|
13
|
+
lexicon: "lexicon.yaml"
|
|
14
|
+
severity_rules: "severity_rules.yaml"
|
|
15
|
+
coverage_matrix: "coverage_matrix.md"
|
|
16
|
+
references:
|
|
17
|
+
- title: "RFC 6585 - Additional HTTP Status Codes"
|
|
18
|
+
url: "https://www.rfc-editor.org/rfc/rfc6585"
|
|
19
|
+
- title: "RFC 7234 - HTTP/1.1 Caching"
|
|
20
|
+
url: "https://www.rfc-editor.org/rfc/rfc7234"
|
|
21
|
+
- title: "RFC 9111 - HTTP Caching"
|
|
22
|
+
url: "https://www.rfc-editor.org/rfc/rfc9111"
|
|
23
|
+
- title: "RFC 9110 - HTTP Semantics"
|
|
24
|
+
url: "https://www.rfc-editor.org/rfc/rfc9110"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
defaults:
|
|
2
|
+
coverage_gap: high
|
|
3
|
+
implicit: medium
|
|
4
|
+
covered: info
|
|
5
|
+
rules:
|
|
6
|
+
- when: "axis=rate_limit_strategy AND coverage=gap"
|
|
7
|
+
severity: high
|
|
8
|
+
rationale: "Missing rate limit strategy can leave a public API vulnerable to abuse, noisy neighbors, or denial of service."
|
|
9
|
+
- when: "axis=quota_management AND coverage=gap"
|
|
10
|
+
severity: medium
|
|
11
|
+
rationale: "Missing quota management leaves consumers without clear usage boundaries or overage behavior."
|
|
12
|
+
- when: "axis=throttling_response AND coverage=gap"
|
|
13
|
+
severity: medium
|
|
14
|
+
rationale: "Missing 429 and Retry-After behavior leaves clients without a predictable throttling response."
|
|
15
|
+
- when: "axis=cache_control_headers AND coverage=gap"
|
|
16
|
+
severity: medium
|
|
17
|
+
rationale: "Missing Cache-Control coverage can create stale, over-shared, or under-cached API responses."
|
|
18
|
+
- when: "axis=etag_conditional_requests AND coverage=gap"
|
|
19
|
+
severity: medium
|
|
20
|
+
rationale: "Missing ETag or conditional request coverage can increase load and make cache validation ambiguous."
|
|
21
|
+
- when: "axis=cdn_edge_caching AND coverage=gap"
|
|
22
|
+
severity: medium
|
|
23
|
+
rationale: "Missing edge cache and invalidation coverage leaves distributed cache freshness and purge behavior unclear."
|
|
24
|
+
- when: "axis=idempotency_keys AND coverage=gap"
|
|
25
|
+
severity: high
|
|
26
|
+
rationale: "Missing idempotency keys can duplicate side effects for payment, order, or mutation retries."
|
|
27
|
+
- when: "coverage=implicit AND evidence=weak"
|
|
28
|
+
severity: medium
|
|
29
|
+
rationale: "Weak implicit API platform coverage needs reviewer confirmation before it can satisfy rate limit or cache axes."
|
|
30
|
+
- when: "coverage=covered AND finding=residual_observation"
|
|
31
|
+
severity: info
|
|
32
|
+
rationale: "Covered axes may still emit informational review notes outside release-blocking API platform gaps."
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Domain-Driven Design Coverage Matrix
|
|
2
|
+
|
|
3
|
+
Source: Eric Evans, Domain-Driven Design, and Vaughn Vernon, Implementing
|
|
4
|
+
Domain-Driven Design.
|
|
5
|
+
|
|
6
|
+
| Axis | Covered when | Implicit when | Gap or not_found when |
|
|
7
|
+
| --- | --- | --- | --- |
|
|
8
|
+
| `ubiquitous_language` | Shared domain terms, definitions, and naming expectations are stated. | The feature is purely technical and has no business vocabulary. | Business terms appear but their meaning or code/model usage is unstated. |
|
|
9
|
+
| `bounded_context` | Model boundaries, ownership, and language scope are explicit. | The change stays inside one already named context. | Multiple meanings, teams, products, or subdomains are involved without a boundary. |
|
|
10
|
+
| `aggregate_design` | Aggregate root, invariant boundary, and transaction scope are stated. | The feature has no mutable domain consistency rule. | State changes can break business invariants but no aggregate boundary exists. |
|
|
11
|
+
| `entity_value_object` | Identity-bearing entities and value-equality objects are distinguished. | The feature has no persistent domain objects or value semantics. | Objects have lifecycle, equality, or mutation rules but no semantic distinction. |
|
|
12
|
+
| `domain_events` | Significant state changes and event publication/handling behavior are stated. | No other process or model needs to react to state changes. | A business occurrence matters outside the command but event behavior is absent. |
|
|
13
|
+
| `repository_pattern` | Aggregate loading/saving abstraction and persistence boundaries are stated. | Persistence is entirely outside the feature or already covered by an existing repository. | Use cases need aggregate persistence but storage access boundaries are unclear. |
|
|
14
|
+
| `application_service` | Use case orchestration, transaction, authorization, and coordination boundaries are stated. | The feature is a simple domain operation already covered by an existing service. | Workflow coordination exists but its boundary is mixed with domain rules or UI code. |
|
|
15
|
+
| `context_mapping` | Upstream/downstream, ACL, shared kernel, or other context relationships are stated. | No other bounded context or external model participates. | Multiple models integrate but relationship and dependency direction are unstated. |
|
|
16
|
+
| `anti_corruption_layer` | Translation and isolation from legacy, vendor, or external models are stated. | No legacy or external model enters the domain model. | External concepts cross into the core model without a protective translation boundary. |
|
|
17
|
+
|
|
18
|
+
Reviewers classify each axis as `covered`, `implicit`, `gap`, or `not_found`.
|
|
19
|
+
Findings are emitted for `gap` and `not_found`.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
extends: codd/elicit/templates/elicit_prompt_L0.md
|
|
3
|
+
lexicon_name: ddd_domain_driven_design
|
|
4
|
+
observation_dimensions: 9
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Domain-Driven Design Coverage Lexicon
|
|
8
|
+
|
|
9
|
+
Apply the base elicitation prompt, then inspect medium-to-large business
|
|
10
|
+
application requirements through these DDD strategic and tactical axes:
|
|
11
|
+
|
|
12
|
+
1. `ubiquitous_language`
|
|
13
|
+
2. `bounded_context`
|
|
14
|
+
3. `aggregate_design`
|
|
15
|
+
4. `entity_value_object`
|
|
16
|
+
5. `domain_events`
|
|
17
|
+
6. `repository_pattern`
|
|
18
|
+
7. `application_service`
|
|
19
|
+
8. `context_mapping`
|
|
20
|
+
9. `anti_corruption_layer`
|
|
21
|
+
|
|
22
|
+
For each axis, classify coverage as:
|
|
23
|
+
|
|
24
|
+
- `covered`: requirements explicitly state the relevant DDD modeling decision or
|
|
25
|
+
pattern boundary.
|
|
26
|
+
- `implicit`: the axis is not independently relevant because the described
|
|
27
|
+
feature is too small, CRUD-only, or fully delegated to an existing model.
|
|
28
|
+
- `gap`: the axis can affect correctness or maintainability and no expectation
|
|
29
|
+
is specified.
|
|
30
|
+
- `not_found`: no evidence for the axis exists in the reviewed material when
|
|
31
|
+
downstream scoring needs a missing-modeling status distinct from `gap`.
|
|
32
|
+
|
|
33
|
+
Emit findings only for `gap` or `not_found` axes. Include the axis in
|
|
34
|
+
`details.dimension`, the evidence or omission signal in `details.evidence`, and
|
|
35
|
+
a reviewer-facing question in `question`.
|
|
36
|
+
|
|
37
|
+
## Coverage-check examples
|
|
38
|
+
|
|
39
|
+
- `covered`: The requirement defines Order and Invoice as separate bounded
|
|
40
|
+
contexts, names their upstream/downstream relationship, and states that Order
|
|
41
|
+
is modified only through an Order aggregate root; classify `bounded_context`,
|
|
42
|
+
`context_mapping`, and `aggregate_design` as `covered`.
|
|
43
|
+
- `implicit`: A static admin lookup table has no domain behavior beyond simple
|
|
44
|
+
CRUD and inherits an existing model; classify `domain_events` and
|
|
45
|
+
`anti_corruption_layer` as `implicit`.
|
|
46
|
+
- `gap`: A payment workflow changes customer status, invoice state, and rewards
|
|
47
|
+
balance in one operation but no aggregate or invariant boundary is defined;
|
|
48
|
+
classify `aggregate_design` as `gap`.
|
|
49
|
+
- `not_found`: A specification for a multi-team business application contains no
|
|
50
|
+
shared vocabulary, bounded context, aggregate, or context map evidence; emit
|
|
51
|
+
`not_found` findings for the applicable DDD axes.
|
|
52
|
+
|
|
53
|
+
Use recommended kinds as guidance. Do not invent additional DDD axes outside
|
|
54
|
+
the nine listed above.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
coverage_axes:
|
|
2
|
+
- axis_type: ubiquitous_language
|
|
3
|
+
rationale: "DDD uses a shared language between domain experts and delivery teams to keep the model, code, and conversations aligned."
|
|
4
|
+
criticality_default: medium
|
|
5
|
+
variants:
|
|
6
|
+
- id: "ubiquitous language"
|
|
7
|
+
label: "Shared domain vocabulary"
|
|
8
|
+
attributes: {source_literal: "ubiquitous language", coverage_target: "terms used consistently in model, code, and discussion"}
|
|
9
|
+
criticality: medium
|
|
10
|
+
- id: "domain expert language"
|
|
11
|
+
label: "Domain expert language"
|
|
12
|
+
attributes: {source_literal: "domain expert", coverage_target: "business terminology and definitions"}
|
|
13
|
+
criticality: medium
|
|
14
|
+
- axis_type: bounded_context
|
|
15
|
+
rationale: "DDD strategic design uses bounded contexts to make model boundaries explicit and prevent one model from being stretched across incompatible meanings."
|
|
16
|
+
criticality_default: high
|
|
17
|
+
variants:
|
|
18
|
+
- id: "bounded context"
|
|
19
|
+
label: "Explicit model boundary"
|
|
20
|
+
attributes: {source_literal: "bounded context", coverage_target: "scope of a domain model and language"}
|
|
21
|
+
criticality: high
|
|
22
|
+
- id: "context boundary"
|
|
23
|
+
label: "Context boundary"
|
|
24
|
+
attributes: {source_literal: "context boundary", coverage_target: "ownership and integration edge"}
|
|
25
|
+
criticality: high
|
|
26
|
+
- axis_type: aggregate_design
|
|
27
|
+
rationale: "DDD tactical design uses aggregates and aggregate roots to enforce invariants and transaction boundaries."
|
|
28
|
+
criticality_default: high
|
|
29
|
+
variants:
|
|
30
|
+
- id: "aggregate root"
|
|
31
|
+
label: "Aggregate root"
|
|
32
|
+
attributes: {source_literal: "aggregate root", coverage_target: "entry point for consistency boundary"}
|
|
33
|
+
criticality: high
|
|
34
|
+
- id: "invariant boundary"
|
|
35
|
+
label: "Invariant boundary"
|
|
36
|
+
attributes: {source_literal: "invariant", coverage_target: "rules protected inside the aggregate"}
|
|
37
|
+
criticality: high
|
|
38
|
+
- id: "transaction boundary"
|
|
39
|
+
label: "Transaction boundary"
|
|
40
|
+
attributes: {source_literal: "transaction boundary", coverage_target: "consistency and concurrency scope"}
|
|
41
|
+
criticality: high
|
|
42
|
+
- axis_type: entity_value_object
|
|
43
|
+
rationale: "DDD distinguishes entities with identity from value objects with equality-by-value to clarify lifecycle, mutation, and comparison semantics."
|
|
44
|
+
criticality_default: high
|
|
45
|
+
variants:
|
|
46
|
+
- id: "entity"
|
|
47
|
+
label: "Entity identity"
|
|
48
|
+
attributes: {source_literal: "entity", coverage_target: "identity and lifecycle"}
|
|
49
|
+
criticality: high
|
|
50
|
+
- id: "value object"
|
|
51
|
+
label: "Value object equality"
|
|
52
|
+
attributes: {source_literal: "value object", coverage_target: "immutable descriptive value"}
|
|
53
|
+
criticality: high
|
|
54
|
+
- id: "identity"
|
|
55
|
+
label: "Identity semantics"
|
|
56
|
+
attributes: {source_literal: "identity", coverage_target: "stable object identity across state changes"}
|
|
57
|
+
criticality: high
|
|
58
|
+
- axis_type: domain_events
|
|
59
|
+
rationale: "DDD domain events represent significant state changes and decouple follow-up behavior from the command that caused the change."
|
|
60
|
+
criticality_default: medium
|
|
61
|
+
variants:
|
|
62
|
+
- id: "domain event"
|
|
63
|
+
label: "Domain event"
|
|
64
|
+
attributes: {source_literal: "domain event", coverage_target: "significant business occurrence"}
|
|
65
|
+
criticality: medium
|
|
66
|
+
- id: "event publication"
|
|
67
|
+
label: "Event publication"
|
|
68
|
+
attributes: {source_literal: "event publication", coverage_target: "notification and downstream reaction"}
|
|
69
|
+
criticality: medium
|
|
70
|
+
- axis_type: repository_pattern
|
|
71
|
+
rationale: "DDD repositories provide collection-like persistence access for aggregate roots without exposing storage details to the domain model."
|
|
72
|
+
criticality_default: medium
|
|
73
|
+
variants:
|
|
74
|
+
- id: "repository"
|
|
75
|
+
label: "Repository abstraction"
|
|
76
|
+
attributes: {source_literal: "repository", coverage_target: "aggregate persistence abstraction"}
|
|
77
|
+
criticality: medium
|
|
78
|
+
- id: "aggregate persistence"
|
|
79
|
+
label: "Aggregate persistence"
|
|
80
|
+
attributes: {source_literal: "aggregate persistence", coverage_target: "load and save aggregate roots"}
|
|
81
|
+
criticality: medium
|
|
82
|
+
- axis_type: application_service
|
|
83
|
+
rationale: "DDD application services orchestrate use cases, transactions, authorization, and coordination while keeping domain rules in the model."
|
|
84
|
+
criticality_default: medium
|
|
85
|
+
variants:
|
|
86
|
+
- id: "application service"
|
|
87
|
+
label: "Use case orchestration"
|
|
88
|
+
attributes: {source_literal: "application service", coverage_target: "workflow coordination around domain model"}
|
|
89
|
+
criticality: medium
|
|
90
|
+
- id: "use case"
|
|
91
|
+
label: "Use case boundary"
|
|
92
|
+
attributes: {source_literal: "use case", coverage_target: "input, transaction, and response boundary"}
|
|
93
|
+
criticality: medium
|
|
94
|
+
- axis_type: context_mapping
|
|
95
|
+
rationale: "DDD context mapping records upstream/downstream relationships and integration patterns between bounded contexts."
|
|
96
|
+
criticality_default: high
|
|
97
|
+
variants:
|
|
98
|
+
- id: "context map"
|
|
99
|
+
label: "Context map"
|
|
100
|
+
attributes: {source_literal: "context map", coverage_target: "relationships between bounded contexts"}
|
|
101
|
+
criticality: high
|
|
102
|
+
- id: "upstream downstream"
|
|
103
|
+
label: "Upstream/downstream relationship"
|
|
104
|
+
attributes: {source_literal: "upstream/downstream", coverage_target: "dependency direction and influence"}
|
|
105
|
+
criticality: high
|
|
106
|
+
- id: "shared kernel"
|
|
107
|
+
label: "Shared kernel"
|
|
108
|
+
attributes: {source_literal: "shared kernel", coverage_target: "jointly owned model subset"}
|
|
109
|
+
criticality: medium
|
|
110
|
+
- axis_type: anti_corruption_layer
|
|
111
|
+
rationale: "DDD uses an anti-corruption layer to isolate a domain model from legacy, external, or differently modeled systems."
|
|
112
|
+
criticality_default: high
|
|
113
|
+
variants:
|
|
114
|
+
- id: "anti-corruption layer"
|
|
115
|
+
label: "Anti-corruption layer"
|
|
116
|
+
attributes: {source_literal: "anti-corruption layer", coverage_target: "translation and isolation boundary"}
|
|
117
|
+
criticality: high
|
|
118
|
+
- id: "legacy isolation"
|
|
119
|
+
label: "Legacy or external model isolation"
|
|
120
|
+
attributes: {source_literal: "legacy system", coverage_target: "protecting the domain model from external concepts"}
|
|
121
|
+
criticality: high
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
id: ddd_domain_driven_design
|
|
2
|
+
name: "Domain-Driven Design (DDD)"
|
|
3
|
+
lexicon_name: ddd_domain_driven_design
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
standard: "Evans 2003 / Vernon 2013"
|
|
6
|
+
domain: cross_industry
|
|
7
|
+
source_url: "https://www.domainlanguage.com/ddd/"
|
|
8
|
+
source_version: "Eric Evans Domain-Driven Design 2003 + Vaughn Vernon Implementing Domain-Driven Design 2013"
|
|
9
|
+
description: "Domain-Driven Design tactical and strategic patterns coverage"
|
|
10
|
+
observation_dimensions: 9
|
|
11
|
+
extends: "codd/elicit/templates/elicit_prompt_L0.md"
|
|
12
|
+
prompt_extension: "elicit_extend.md"
|
|
13
|
+
recommended_kinds: "recommended_kinds.yaml"
|
|
14
|
+
lexicon: "lexicon.yaml"
|
|
15
|
+
severity_rules: "severity_rules.yaml"
|
|
16
|
+
coverage_matrix: "coverage_matrix.md"
|
|
17
|
+
references:
|
|
18
|
+
- title: "Domain-Driven Design: Tackling Complexity in the Heart of Software"
|
|
19
|
+
url: "https://www.domainlanguage.com/ddd/"
|
|
20
|
+
source_version: "Evans 2003"
|
|
21
|
+
- title: "Implementing Domain-Driven Design"
|
|
22
|
+
url: "https://www.pearson.com/en-us/subject-catalog/p/implementing-domain-driven-design/P200000009616/9780321834577"
|
|
23
|
+
source_version: "Vernon 2013"
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
recommended_kinds:
|
|
2
|
+
- ddd_ubiquitous_language_gap
|
|
3
|
+
- ddd_bounded_context_gap
|
|
4
|
+
- ddd_aggregate_design_gap
|
|
5
|
+
- ddd_entity_value_object_gap
|
|
6
|
+
- ddd_domain_events_gap
|
|
7
|
+
- ddd_repository_pattern_gap
|
|
8
|
+
- ddd_application_service_gap
|
|
9
|
+
- ddd_context_mapping_gap
|
|
10
|
+
- ddd_anti_corruption_layer_gap
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
defaults:
|
|
2
|
+
coverage_gap: medium
|
|
3
|
+
not_found: medium
|
|
4
|
+
implicit: info
|
|
5
|
+
covered: info
|
|
6
|
+
rules:
|
|
7
|
+
- when: "axis=bounded_context AND coverage=not_found"
|
|
8
|
+
severity: high
|
|
9
|
+
rationale: "Missing bounded contexts can create model confusion across teams, features, and integrations."
|
|
10
|
+
- when: "axis=ubiquitous_language AND coverage=not_found"
|
|
11
|
+
severity: medium
|
|
12
|
+
rationale: "Missing shared language increases ambiguity between business intent, model names, and code."
|
|
13
|
+
- when: "axis=aggregate_design AND coverage=not_found"
|
|
14
|
+
severity: high
|
|
15
|
+
rationale: "Missing aggregate design can leave invariants and transaction boundaries unenforced."
|
|
16
|
+
- when: "axis=ubiquitous_language AND coverage=gap"
|
|
17
|
+
severity: medium
|
|
18
|
+
rationale: "Shared vocabulary gaps make requirements harder to validate with domain experts."
|
|
19
|
+
- when: "axis=bounded_context AND coverage=gap"
|
|
20
|
+
severity: high
|
|
21
|
+
rationale: "Bounded context gaps can stretch one model across incompatible meanings."
|
|
22
|
+
- when: "axis=aggregate_design AND coverage=gap"
|
|
23
|
+
severity: high
|
|
24
|
+
rationale: "Aggregate gaps can permit invariant violations and oversized transactions."
|
|
25
|
+
- when: "axis=entity_value_object AND coverage=gap"
|
|
26
|
+
severity: high
|
|
27
|
+
rationale: "Entity/value object gaps obscure identity, equality, mutation, and lifecycle semantics."
|
|
28
|
+
- when: "axis=domain_events AND coverage=gap"
|
|
29
|
+
severity: medium
|
|
30
|
+
rationale: "Domain event gaps can hide important state changes and downstream reactions."
|
|
31
|
+
- when: "axis=repository_pattern AND coverage=gap"
|
|
32
|
+
severity: medium
|
|
33
|
+
rationale: "Repository gaps can leak persistence details into the domain model or use cases."
|
|
34
|
+
- when: "axis=application_service AND coverage=gap"
|
|
35
|
+
severity: medium
|
|
36
|
+
rationale: "Application service gaps can mix orchestration, transactions, and domain rules ambiguously."
|
|
37
|
+
- when: "axis=context_mapping AND coverage=gap"
|
|
38
|
+
severity: high
|
|
39
|
+
rationale: "Context mapping gaps can hide ownership, dependency direction, and integration contracts."
|
|
40
|
+
- when: "axis=anti_corruption_layer AND coverage=gap"
|
|
41
|
+
severity: high
|
|
42
|
+
rationale: "Anti-corruption layer gaps can let external or legacy models contaminate the core model."
|
|
43
|
+
- when: "coverage=implicit AND evidence=weak"
|
|
44
|
+
severity: medium
|
|
45
|
+
rationale: "Weak implicit coverage should be reviewed before accepting a DDD axis as not applicable."
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# DORA Metrics and SRE Principles Coverage Matrix
|
|
2
|
+
|
|
3
|
+
Source: DORA Accelerate research and the Google SRE Book.
|
|
4
|
+
|
|
5
|
+
| Axis | Coverage target | Covered when | Gap signal |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
| `deployment_frequency` | Production deployment cadence | The material defines how often changes are released or deployed. | Release cadence is absent or only described informally. |
|
|
8
|
+
| `lead_time_for_changes` | Change delivery latency | Commit-to-production or change-to-production elapsed time is measured. | Delivery latency cannot be measured from the stated process. |
|
|
9
|
+
| `change_failure_rate` | Deployment-caused failures | Failed deployments, rollback, incident, or hotfix percentage is tracked. | Release stability is not measured after deployment. |
|
|
10
|
+
| `mean_time_to_restore` | Incident recovery time | Restore time after user-visible failure is measured and owned. | Recovery speed is not defined or is only ad hoc. |
|
|
11
|
+
| `slo_sli_definition` | User-visible reliability contract | SLIs and SLOs state what is measured and which target applies. | Reliability is asserted without measurable service-level targets. |
|
|
12
|
+
| `error_budget_policy` | Reliability risk governance | Error budget tracking, burn-rate alerting, or release policy is declared. | Reliability targets do not affect alerting or release decisions. |
|
|
13
|
+
| `toil_reduction` | Repetitive operations work | Manual repetitive work is identified and has an automation or reduction path. | Manual operations can grow without review or engineering follow-up. |
|
|
14
|
+
| `incident_management` | Response and learning process | On-call, runbook, escalation, restoration, and postmortem behavior is explicit. | Incidents rely on unnamed or informal response behavior. |
|
|
15
|
+
|
|
16
|
+
Reviewers classify each axis as `covered`, `implicit`, or `gap`. Findings are
|
|
17
|
+
emitted only for `gap`.
|