codd-dev 2.8.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.8.0 → codd_dev-2.10.0}/PKG-INFO +1 -1
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/cli.py +2 -3
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/coverage_auditor.py +3 -3
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/init/llm_lexicon_suggester.py +25 -17
- 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.8.0 → codd_dev-2.10.0}/codd_plugins/stack_map.yaml +25 -1
- {codd_dev-2.8.0 → codd_dev-2.10.0}/pyproject.toml +1 -1
- {codd_dev-2.8.0 → codd_dev-2.10.0}/.gitignore +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/LICENSE +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/README.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/__main__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/assembler.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/bridge.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/clustering.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/config.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/contracts.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/builder.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployer.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/design_md.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/diff/apply.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/drift.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/e2e_generator.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/env_refs.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/extractor.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/fixer.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/generator.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/graph.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/implementer.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/inheritance.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/lexicon.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/measure.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/parsing.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/planner.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/policy.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/propagate.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/propagator.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/registry.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/history.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair/verify_runner.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/repair_slice.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/require.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/restore.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/scanner.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/synth.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/traceability.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/validator.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/watch/events.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd/wiring.py +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.8.0 → codd_dev-2.10.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.8.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
|
|
@@ -561,10 +561,9 @@ def _offer_lexicon_suggestions(
|
|
|
561
561
|
click.echo("")
|
|
562
562
|
click.echo("[LLM-enhanced] Analyzing project ...")
|
|
563
563
|
click.echo("[LLM-enhanced] Detected:")
|
|
564
|
-
click.echo(f" -
|
|
565
|
-
click.echo(f" -
|
|
564
|
+
click.echo(f" - Data types: {_format_detected_items(llm_result.detected_data_types)}")
|
|
565
|
+
click.echo(f" - Function traits: {_format_detected_items(llm_result.detected_function_traits)}")
|
|
566
566
|
click.echo(f" - Tech stack: {_format_detected_items(llm_result.detected_tech_stack)}")
|
|
567
|
-
click.echo(f" - Integrations: {_format_detected_items(llm_result.detected_integrations)}")
|
|
568
567
|
click.echo("")
|
|
569
568
|
click.echo("[LLM-enhanced] Recommended lexicons:")
|
|
570
569
|
for index, recommendation in enumerate(llm_result.recommendations, start=1):
|
|
@@ -109,7 +109,7 @@ class CoverageAuditor:
|
|
|
109
109
|
lowered = text.lower()
|
|
110
110
|
text_terms = _terms(lowered)
|
|
111
111
|
if (
|
|
112
|
-
{"
|
|
112
|
+
{"e-learning", "elearning"} & text_terms
|
|
113
113
|
or "learning management" in lowered
|
|
114
114
|
or len(
|
|
115
115
|
{
|
|
@@ -244,7 +244,7 @@ class CoverageAuditor:
|
|
|
244
244
|
},
|
|
245
245
|
]
|
|
246
246
|
|
|
247
|
-
|
|
247
|
+
learning_platform = [
|
|
248
248
|
*base_web,
|
|
249
249
|
*self._build_auth_ui_surface_checklist(),
|
|
250
250
|
{
|
|
@@ -362,7 +362,7 @@ class CoverageAuditor:
|
|
|
362
362
|
]
|
|
363
363
|
|
|
364
364
|
checklists = {
|
|
365
|
-
"LMS/EdTech":
|
|
365
|
+
"LMS/EdTech": learning_platform,
|
|
366
366
|
"FinTech": [
|
|
367
367
|
*base_web,
|
|
368
368
|
{
|
|
@@ -34,10 +34,9 @@ class LlmLexiconRecommendation:
|
|
|
34
34
|
|
|
35
35
|
@dataclass(frozen=True)
|
|
36
36
|
class LlmLexiconResult:
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
detected_data_types: list[str]
|
|
38
|
+
detected_function_traits: list[str]
|
|
39
39
|
detected_tech_stack: list[str]
|
|
40
|
-
detected_integrations: list[str]
|
|
41
40
|
recommendations: list[LlmLexiconRecommendation]
|
|
42
41
|
|
|
43
42
|
|
|
@@ -138,24 +137,35 @@ def _build_prompt(context: dict[str, Any], available_lexicons: dict[str, str]) -
|
|
|
138
137
|
"available_lexicons": available_lexicons,
|
|
139
138
|
"project_context": context,
|
|
140
139
|
"required_output_schema": {
|
|
141
|
-
"
|
|
142
|
-
"
|
|
140
|
+
"detected_data_types": ["string"],
|
|
141
|
+
"detected_function_traits": ["string"],
|
|
143
142
|
"detected_tech_stack": ["string"],
|
|
144
|
-
"detected_integrations": ["string"],
|
|
145
143
|
"recommendations": [
|
|
146
144
|
{
|
|
147
145
|
"lexicon_id": "string from available_lexicons keys",
|
|
148
146
|
"confidence": "high | medium | low",
|
|
149
|
-
"reason": "short explanation",
|
|
147
|
+
"reason": "short explanation referencing a data type or function trait",
|
|
150
148
|
}
|
|
151
149
|
],
|
|
152
150
|
},
|
|
153
151
|
}
|
|
154
152
|
return (
|
|
155
|
-
"You are a requirements engineer. Analyze
|
|
156
|
-
"
|
|
157
|
-
"
|
|
158
|
-
"
|
|
153
|
+
"You are a requirements engineer. Analyze this project's documentation and tech stack.\n"
|
|
154
|
+
"Identify:\n"
|
|
155
|
+
"- Data types handled (personal information / credit card data / medical records / "
|
|
156
|
+
"video content / etc.)\n"
|
|
157
|
+
"- Function traits present (authentication flow / payment processing / public API / "
|
|
158
|
+
"video streaming / etc.)\n"
|
|
159
|
+
"- Tech stack (frameworks, databases, cloud platforms)\n\n"
|
|
160
|
+
"Reasoning rules (apply dynamically):\n"
|
|
161
|
+
"- personal information present -> recommend data_governance_appi_gdpr (or GDPR equivalent)\n"
|
|
162
|
+
"- credit card data present -> recommend compliance_pci_dss_4\n"
|
|
163
|
+
"- medical data present -> recommend compliance_hipaa\n"
|
|
164
|
+
"- authentication flow present -> consider web_authn_webauthn\n"
|
|
165
|
+
"- public REST API present -> recommend api_rest_openapi\n"
|
|
166
|
+
"- etc.\n\n"
|
|
167
|
+
"From the available lexicons, recommend the most relevant ones with lexicon_id, "
|
|
168
|
+
"confidence (high/medium/low), and reason referencing the data type or function trait. "
|
|
159
169
|
"Return JSON only. Do not include Markdown fences or prose.\n\n"
|
|
160
170
|
f"{json.dumps(payload, ensure_ascii=False, indent=2)}"
|
|
161
171
|
)
|
|
@@ -202,10 +212,9 @@ def _result_from_payload(payload: Any, available_ids: set[str]) -> LlmLexiconRes
|
|
|
202
212
|
)
|
|
203
213
|
|
|
204
214
|
return LlmLexiconResult(
|
|
205
|
-
|
|
206
|
-
|
|
215
|
+
detected_data_types=_string_list(payload.get("detected_data_types")),
|
|
216
|
+
detected_function_traits=_string_list(payload.get("detected_function_traits")),
|
|
207
217
|
detected_tech_stack=_string_list(payload.get("detected_tech_stack")),
|
|
208
|
-
detected_integrations=_string_list(payload.get("detected_integrations")),
|
|
209
218
|
recommendations=recommendations,
|
|
210
219
|
)
|
|
211
220
|
|
|
@@ -218,10 +227,9 @@ def _string_list(value: Any) -> list[str]:
|
|
|
218
227
|
|
|
219
228
|
def _empty_result() -> LlmLexiconResult:
|
|
220
229
|
return LlmLexiconResult(
|
|
221
|
-
|
|
222
|
-
|
|
230
|
+
detected_data_types=[],
|
|
231
|
+
detected_function_traits=[],
|
|
223
232
|
detected_tech_stack=[],
|
|
224
|
-
detected_integrations=[],
|
|
225
233
|
recommendations=[],
|
|
226
234
|
)
|
|
227
235
|
|
|
@@ -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
|