codd-dev 2.17.1__tar.gz → 2.19.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.17.1 → codd_dev-2.19.0}/PKG-INFO +16 -5
- {codd_dev-2.17.1 → codd_dev-2.19.0}/README.md +15 -4
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/bridge.py +10 -11
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/cli.py +39 -73
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/implementer.py +14 -1
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/validator.py +1 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/pyproject.toml +1 -1
- {codd_dev-2.17.1 → codd_dev-2.19.0}/.gitignore +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/LICENSE +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/__main__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/assembler.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/clustering.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/config.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/contracts.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/auto_repair.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/builder.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/defaults.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployer.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/design_md.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/diff/apply.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/drift.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/e2e_generator.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/env_refs.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/extractor.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/design_updater.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/templates_loader.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fixer.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/generator.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/graph.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/inheritance.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/measure.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/parsing.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/planner.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/policy.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/propagate.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/propagator.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/registry.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/history.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/verify_runner.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair_slice.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/require.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/restore.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/scanner.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/synth.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/traceability.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/watch/events.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/wiring.py +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.17.1 → codd_dev-2.19.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.19.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
|
|
@@ -68,6 +68,14 @@ codd dag verify --auto-repair --max-attempts 10 # AI fixes coherence violations
|
|
|
68
68
|
|
|
69
69
|
That's it. Three commands, three feedback loops, one coherent project.
|
|
70
70
|
|
|
71
|
+
### 💡 Already shipping? Describe what you want fixed.
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
codd fix "login error messages are hard to understand" # natural-language phenomenon mode
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
`codd fix [PHENOMENON]` (v2.16.0+) is the **second entry-point** of CoDD's North Star: tell CoDD a desired change in plain words, it identifies the affected design docs via lexicon + semantic scoring, updates them with an LLM, and runs the DAG verify gate before any code is touched. Add `--dry-run` to preview, `--non-interactive` for CI.
|
|
78
|
+
|
|
71
79
|
> Real-world: dogfooded against a Next.js + Prisma + PostgreSQL LMS. See [Case study](#-case-study-real-world-lms).
|
|
72
80
|
|
|
73
81
|
---
|
|
@@ -79,6 +87,7 @@ That's it. Three commands, three feedback loops, one coherent project.
|
|
|
79
87
|
| 🔍 **`codd elicit`** | LLM finds **specification holes** in your requirements, scoped against industry-standard lexicons (BABOK, OWASP, WCAG, PCI DSS, ISO 25010, …). |
|
|
80
88
|
| 🔄 **`codd diff`** | Detects **drift** between requirements and the actual implementation (brownfield-friendly). |
|
|
81
89
|
| 🛠️ **`codd dag verify --auto-repair`** | Validates the requirements → design → implementation → tests DAG; an LLM proposes patches when violations appear and the loop retries until SUCCESS or MAX_ATTEMPTS. |
|
|
90
|
+
| 🎯 **`codd fix`** / **`codd fix [PHENOMENON]`** | Two modes. *Legacy*: auto-detects test/CI failures, maps them to the DAG, asks an LLM to patch implementation, re-runs the verify gate. *PHENOMENON* (v2.16.0+, North Star entry-point 2): take a natural-language phenomenon (e.g. `"dashboard layout breaks on mobile"`), identify candidate design docs via Tier-1 lexicon + Tier-2 semantic scoring, update them with the LLM, then propagate. Full interactive HITL + `--non-interactive` + `--dry-run`. |
|
|
82
91
|
| 📦 **38 lexicon plug-ins** | Industry standards bundled as opt-in coverage axes — Web (WCAG / OWASP / Web Vitals / WebAuthn / forms / SEO / PWA / browser-compat / responsive), Mobile (HIG / Material 3 / a11y / MASVS), Backend (REST / GraphQL / gRPC / events), Data (SQL / JSON Schema / event sourcing / governance), Ops (CI/CD / Kubernetes / Terraform / observability / DORA), Compliance (ISO 27001 / HIPAA / PCI DSS / GDPR / EU AI Act), Process (ISO 25010 / 29119 / DDD / 12-factor / i18n / model cards / API rate-limit), and Methodology (BABOK). |
|
|
83
92
|
| 🌐 **`codd brownfield`** | Extract → diff → elicit pipeline: point CoDD at an existing codebase and it reverse-engineers requirements, finds drift, and surfaces gaps in one shot. |
|
|
84
93
|
| 🎯 **`codd init --suggest-lexicons --llm-enhanced`** | LLM reads your code/docs, identifies data types and function traits, and recommends which lexicons to install (with confidence + reasoning). |
|
|
@@ -93,8 +102,8 @@ That's it. Three commands, three feedback loops, one coherent project.
|
|
|
93
102
|
flowchart LR
|
|
94
103
|
R["Requirements (.md)"] --> E["codd elicit"]
|
|
95
104
|
E -->|gap findings| H{HITL: approve / reject}
|
|
96
|
-
H -->|
|
|
97
|
-
H -->|
|
|
105
|
+
H -->|approve| L["project_lexicon.yaml + requirements TODOs"]
|
|
106
|
+
H -->|reject| I["ignored_findings.yaml"]
|
|
98
107
|
L --> V["codd dag verify --auto-repair"]
|
|
99
108
|
V -->|violation| AR["LLM patch propose → apply"]
|
|
100
109
|
AR --> V
|
|
@@ -153,14 +162,16 @@ This is what lets CoDD ship one core that works for Next.js, Django, FastAPI, Ra
|
|
|
153
162
|
|
|
154
163
|
## 🧭 Roadmap
|
|
155
164
|
|
|
156
|
-
- **v2.
|
|
165
|
+
- **v2.18.0 (current)** — Greenfield triage from [@v-kato](https://github.com/v-kato) (cmd_473). Issue #20: `codd implement run --language` now overrides `project.language` per invocation (no more re-init when `codd init --language` was the wrong choice). Issue #21: `detailed_design` added to `DEFAULT_NODE_PREFIXES` so `codd plan --init` no longer emits node ids its own `codd validate` rejects. Issue #22: `_strip_code_fence` is non-greedy + non-anchored, dropping trailing markdown prose that LLMs occasionally appended after the closing fence. 12 new tests, 2937 total PASS, SKIP=0.
|
|
166
|
+
- **v2.17.1** — emergency patch for `codd fix [PHENOMENON]` (cmd_471). Issue #23: `codd/fix/templates/*.txt` are now shipped inside the wheel (a hatch `include` regression caused `FileNotFoundError` after `pip install`). Issue #24: replaced `---` wrappers in `design_update.txt` / `risk_assessment.txt` with `<document>` / `<diff>` XML-style tags so the rendered prompt no longer collides with markdown frontmatter or unified-diff `--- a/path` lines. 11 new tests, 2925 total PASS, SKIP=0.
|
|
167
|
+
- **v2.17.0** — `node_completeness` honours `kind: common` (cmd_470). Fixes a v2.15.0 oversight: `expects` edges pointing at common (shared infrastructure) nodes were misreported as missing impl files even when the file existed. 6 new tests, 2914 total PASS, SKIP=0.
|
|
157
168
|
- **v2.16.0** — `codd fix [PHENOMENON]` — North Star entry-point 2 (cmd_468). Express a desired change in natural language; CoDD identifies affected design docs via Tier-1 lexicon + Tier-2 semantic scoring, updates them with LLM, runs the DAG verify gate. Full interactive HITL (candidate selection, ambiguity clarification, risk confirmation) with `--non-interactive` for CI. 66 new tests, 2908 total PASS, SKIP=0.
|
|
158
169
|
- **v2.15.0** — `kind: common` for shared infrastructure (cmd_467). C5 amber −79.2% on dogfood project (125 → 26). `**` glob translator fix.
|
|
159
170
|
- **v2.14.0** — 8 structural gaps closed (cmd_466 dogfood). Sidecar `<test>.codd.yaml` with `verified_by:` (C6) / `axis_matrix:` (C9); lexicon schema SSoT; completeness_audit batch; `scan.exclude` bug fix (−52%); `codd dag verify --auto-repair`; elicit mock-AI sentinel; AI timeout 3600 s SSoT. Red 22 → 0.
|
|
160
171
|
- **v2.13.0** — Opt-out protection: `OptOutPolicy` requires `justification` + `expires_at`. Silent SKIP abolished; severity preserved.
|
|
161
172
|
- **v2.12.0** — Test-completeness gates: C7 amber promotion + C8 `ci_health` static check.
|
|
162
173
|
- **v2.11.0** — Sprint-less `codd implement` (`--design <path> --output <dir>` directly).
|
|
163
|
-
- **v2.
|
|
174
|
+
- **v2.19.0 (next)** — impl/test auto-propagation from PHENOMENON (AC #8 completion); Codex wrapper for PHENOMENON mode.
|
|
164
175
|
|
|
165
176
|
---
|
|
166
177
|
|
|
@@ -28,6 +28,14 @@ codd dag verify --auto-repair --max-attempts 10 # AI fixes coherence violations
|
|
|
28
28
|
|
|
29
29
|
That's it. Three commands, three feedback loops, one coherent project.
|
|
30
30
|
|
|
31
|
+
### 💡 Already shipping? Describe what you want fixed.
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
codd fix "login error messages are hard to understand" # natural-language phenomenon mode
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
`codd fix [PHENOMENON]` (v2.16.0+) is the **second entry-point** of CoDD's North Star: tell CoDD a desired change in plain words, it identifies the affected design docs via lexicon + semantic scoring, updates them with an LLM, and runs the DAG verify gate before any code is touched. Add `--dry-run` to preview, `--non-interactive` for CI.
|
|
38
|
+
|
|
31
39
|
> Real-world: dogfooded against a Next.js + Prisma + PostgreSQL LMS. See [Case study](#-case-study-real-world-lms).
|
|
32
40
|
|
|
33
41
|
---
|
|
@@ -39,6 +47,7 @@ That's it. Three commands, three feedback loops, one coherent project.
|
|
|
39
47
|
| 🔍 **`codd elicit`** | LLM finds **specification holes** in your requirements, scoped against industry-standard lexicons (BABOK, OWASP, WCAG, PCI DSS, ISO 25010, …). |
|
|
40
48
|
| 🔄 **`codd diff`** | Detects **drift** between requirements and the actual implementation (brownfield-friendly). |
|
|
41
49
|
| 🛠️ **`codd dag verify --auto-repair`** | Validates the requirements → design → implementation → tests DAG; an LLM proposes patches when violations appear and the loop retries until SUCCESS or MAX_ATTEMPTS. |
|
|
50
|
+
| 🎯 **`codd fix`** / **`codd fix [PHENOMENON]`** | Two modes. *Legacy*: auto-detects test/CI failures, maps them to the DAG, asks an LLM to patch implementation, re-runs the verify gate. *PHENOMENON* (v2.16.0+, North Star entry-point 2): take a natural-language phenomenon (e.g. `"dashboard layout breaks on mobile"`), identify candidate design docs via Tier-1 lexicon + Tier-2 semantic scoring, update them with the LLM, then propagate. Full interactive HITL + `--non-interactive` + `--dry-run`. |
|
|
42
51
|
| 📦 **38 lexicon plug-ins** | Industry standards bundled as opt-in coverage axes — Web (WCAG / OWASP / Web Vitals / WebAuthn / forms / SEO / PWA / browser-compat / responsive), Mobile (HIG / Material 3 / a11y / MASVS), Backend (REST / GraphQL / gRPC / events), Data (SQL / JSON Schema / event sourcing / governance), Ops (CI/CD / Kubernetes / Terraform / observability / DORA), Compliance (ISO 27001 / HIPAA / PCI DSS / GDPR / EU AI Act), Process (ISO 25010 / 29119 / DDD / 12-factor / i18n / model cards / API rate-limit), and Methodology (BABOK). |
|
|
43
52
|
| 🌐 **`codd brownfield`** | Extract → diff → elicit pipeline: point CoDD at an existing codebase and it reverse-engineers requirements, finds drift, and surfaces gaps in one shot. |
|
|
44
53
|
| 🎯 **`codd init --suggest-lexicons --llm-enhanced`** | LLM reads your code/docs, identifies data types and function traits, and recommends which lexicons to install (with confidence + reasoning). |
|
|
@@ -53,8 +62,8 @@ That's it. Three commands, three feedback loops, one coherent project.
|
|
|
53
62
|
flowchart LR
|
|
54
63
|
R["Requirements (.md)"] --> E["codd elicit"]
|
|
55
64
|
E -->|gap findings| H{HITL: approve / reject}
|
|
56
|
-
H -->|
|
|
57
|
-
H -->|
|
|
65
|
+
H -->|approve| L["project_lexicon.yaml + requirements TODOs"]
|
|
66
|
+
H -->|reject| I["ignored_findings.yaml"]
|
|
58
67
|
L --> V["codd dag verify --auto-repair"]
|
|
59
68
|
V -->|violation| AR["LLM patch propose → apply"]
|
|
60
69
|
AR --> V
|
|
@@ -113,14 +122,16 @@ This is what lets CoDD ship one core that works for Next.js, Django, FastAPI, Ra
|
|
|
113
122
|
|
|
114
123
|
## 🧭 Roadmap
|
|
115
124
|
|
|
116
|
-
- **v2.
|
|
125
|
+
- **v2.18.0 (current)** — Greenfield triage from [@v-kato](https://github.com/v-kato) (cmd_473). Issue #20: `codd implement run --language` now overrides `project.language` per invocation (no more re-init when `codd init --language` was the wrong choice). Issue #21: `detailed_design` added to `DEFAULT_NODE_PREFIXES` so `codd plan --init` no longer emits node ids its own `codd validate` rejects. Issue #22: `_strip_code_fence` is non-greedy + non-anchored, dropping trailing markdown prose that LLMs occasionally appended after the closing fence. 12 new tests, 2937 total PASS, SKIP=0.
|
|
126
|
+
- **v2.17.1** — emergency patch for `codd fix [PHENOMENON]` (cmd_471). Issue #23: `codd/fix/templates/*.txt` are now shipped inside the wheel (a hatch `include` regression caused `FileNotFoundError` after `pip install`). Issue #24: replaced `---` wrappers in `design_update.txt` / `risk_assessment.txt` with `<document>` / `<diff>` XML-style tags so the rendered prompt no longer collides with markdown frontmatter or unified-diff `--- a/path` lines. 11 new tests, 2925 total PASS, SKIP=0.
|
|
127
|
+
- **v2.17.0** — `node_completeness` honours `kind: common` (cmd_470). Fixes a v2.15.0 oversight: `expects` edges pointing at common (shared infrastructure) nodes were misreported as missing impl files even when the file existed. 6 new tests, 2914 total PASS, SKIP=0.
|
|
117
128
|
- **v2.16.0** — `codd fix [PHENOMENON]` — North Star entry-point 2 (cmd_468). Express a desired change in natural language; CoDD identifies affected design docs via Tier-1 lexicon + Tier-2 semantic scoring, updates them with LLM, runs the DAG verify gate. Full interactive HITL (candidate selection, ambiguity clarification, risk confirmation) with `--non-interactive` for CI. 66 new tests, 2908 total PASS, SKIP=0.
|
|
118
129
|
- **v2.15.0** — `kind: common` for shared infrastructure (cmd_467). C5 amber −79.2% on dogfood project (125 → 26). `**` glob translator fix.
|
|
119
130
|
- **v2.14.0** — 8 structural gaps closed (cmd_466 dogfood). Sidecar `<test>.codd.yaml` with `verified_by:` (C6) / `axis_matrix:` (C9); lexicon schema SSoT; completeness_audit batch; `scan.exclude` bug fix (−52%); `codd dag verify --auto-repair`; elicit mock-AI sentinel; AI timeout 3600 s SSoT. Red 22 → 0.
|
|
120
131
|
- **v2.13.0** — Opt-out protection: `OptOutPolicy` requires `justification` + `expires_at`. Silent SKIP abolished; severity preserved.
|
|
121
132
|
- **v2.12.0** — Test-completeness gates: C7 amber promotion + C8 `ci_health` static check.
|
|
122
133
|
- **v2.11.0** — Sprint-less `codd implement` (`--design <path> --output <dir>` directly).
|
|
123
|
-
- **v2.
|
|
134
|
+
- **v2.19.0 (next)** — impl/test auto-propagation from PHENOMENON (AC #8 completion); Codex wrapper for PHENOMENON mode.
|
|
124
135
|
|
|
125
136
|
---
|
|
126
137
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""Bridge helpers for optional
|
|
1
|
+
"""Bridge helpers for optional plugin registration."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
@@ -8,10 +8,6 @@ from typing import Any, Callable
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
PLUGIN_GROUP = "codd.plugins"
|
|
11
|
-
PRO_COMMAND_INSTALL_MESSAGE = (
|
|
12
|
-
"このコマンドは codd-pro に移動しました。"
|
|
13
|
-
"pip install codd-pro でインストールできます。"
|
|
14
|
-
)
|
|
15
11
|
|
|
16
12
|
|
|
17
13
|
@dataclass
|
|
@@ -22,7 +18,6 @@ class BridgeRegistry:
|
|
|
22
18
|
validator_handler: Callable[..., Any] | None = None
|
|
23
19
|
policy_handler: Callable[..., Any] | None = None
|
|
24
20
|
risk_builder: Callable[..., Any] | None = None
|
|
25
|
-
command_handlers: dict[str, Callable[..., Any]] = field(default_factory=dict)
|
|
26
21
|
mcp_tools: dict[str, dict[str, Any]] = field(default_factory=dict)
|
|
27
22
|
mcp_handlers: dict[str, Callable[..., Any]] = field(default_factory=dict)
|
|
28
23
|
|
|
@@ -38,9 +33,6 @@ class BridgeRegistry:
|
|
|
38
33
|
def register_risk_builder(self, handler: Callable[..., Any]) -> None:
|
|
39
34
|
self.risk_builder = handler
|
|
40
35
|
|
|
41
|
-
def register_command(self, name: str, handler: Callable[..., Any]) -> None:
|
|
42
|
-
self.command_handlers[name] = handler
|
|
43
|
-
|
|
44
36
|
def register_mcp_tool(self, tool: dict[str, Any], handler: Callable[..., Any]) -> None:
|
|
45
37
|
name = str(tool.get("name") or "")
|
|
46
38
|
if not name:
|
|
@@ -79,5 +71,12 @@ def load_bridge_registry() -> BridgeRegistry:
|
|
|
79
71
|
|
|
80
72
|
|
|
81
73
|
def get_command_handler(name: str) -> Callable[..., Any] | None:
|
|
82
|
-
"""Return
|
|
83
|
-
|
|
74
|
+
"""Return an optional plugin-provided command handler."""
|
|
75
|
+
registry = load_bridge_registry()
|
|
76
|
+
resolver = getattr(registry, "resolve_command_handler", None)
|
|
77
|
+
if callable(resolver):
|
|
78
|
+
handler = resolver(name)
|
|
79
|
+
return handler if callable(handler) else None
|
|
80
|
+
|
|
81
|
+
handler = getattr(registry, f"{name}_handler", None)
|
|
82
|
+
return handler if callable(handler) else None
|
|
@@ -14,7 +14,7 @@ from typing import Any
|
|
|
14
14
|
import click
|
|
15
15
|
import yaml
|
|
16
16
|
|
|
17
|
-
from codd.bridge import
|
|
17
|
+
from codd.bridge import get_command_handler
|
|
18
18
|
from codd.config import find_codd_dir, load_project_config
|
|
19
19
|
from codd.lexicon import LEXICON_FILENAME, load_lexicon, load_project_extends
|
|
20
20
|
|
|
@@ -172,18 +172,6 @@ def _compare_version_keys(installed: tuple[int, ...], op: str, expected: tuple[i
|
|
|
172
172
|
return False
|
|
173
173
|
|
|
174
174
|
|
|
175
|
-
def _run_pro_command(name: str, **kwargs):
|
|
176
|
-
"""Dispatch a Pro-only command when the bridge plugin is installed."""
|
|
177
|
-
handler = get_command_handler(name)
|
|
178
|
-
if handler is None:
|
|
179
|
-
click.echo(PRO_COMMAND_INSTALL_MESSAGE)
|
|
180
|
-
raise SystemExit(1)
|
|
181
|
-
|
|
182
|
-
result = handler(**kwargs)
|
|
183
|
-
if type(result) is int:
|
|
184
|
-
raise SystemExit(result)
|
|
185
|
-
|
|
186
|
-
|
|
187
175
|
def _require_codd_dir(project_root: Path) -> Path:
|
|
188
176
|
"""Return the CoDD config dir or exit with a helpful message."""
|
|
189
177
|
codd_dir = find_codd_dir(project_root)
|
|
@@ -2109,6 +2097,15 @@ def implement_augment_cmd(
|
|
|
2109
2097
|
help="Seconds before one chunk is interrupted",
|
|
2110
2098
|
)
|
|
2111
2099
|
@click.option("--enable-typecheck-loop", is_flag=True, default=False, help="Run configured typecheck repair loop after implementation")
|
|
2100
|
+
@click.option(
|
|
2101
|
+
"--language",
|
|
2102
|
+
default=None,
|
|
2103
|
+
help=(
|
|
2104
|
+
"Override project.language for this invocation only. Useful when "
|
|
2105
|
+
"`codd init --language js` was chosen but a downstream spec/design "
|
|
2106
|
+
"doc requires TypeScript (Issue #20). codd.yaml is not modified."
|
|
2107
|
+
),
|
|
2108
|
+
)
|
|
2112
2109
|
def implement_run_cmd(
|
|
2113
2110
|
task_id: str | None,
|
|
2114
2111
|
project_path: str,
|
|
@@ -2117,6 +2114,7 @@ def implement_run_cmd(
|
|
|
2117
2114
|
chunk_size: int | None,
|
|
2118
2115
|
timeout_per_chunk: int,
|
|
2119
2116
|
enable_typecheck_loop: bool,
|
|
2117
|
+
language: str | None,
|
|
2120
2118
|
):
|
|
2121
2119
|
"""Run implementation with optional derived step injection."""
|
|
2122
2120
|
from codd.implementer import auto_detect_task, implement_tasks
|
|
@@ -2140,6 +2138,7 @@ def implement_run_cmd(
|
|
|
2140
2138
|
chunk_size=chunk_size,
|
|
2141
2139
|
timeout_per_chunk=timeout_per_chunk,
|
|
2142
2140
|
history=None,
|
|
2141
|
+
language=language,
|
|
2143
2142
|
)
|
|
2144
2143
|
except (FileNotFoundError, ValueError, CoddCLIError) as exc:
|
|
2145
2144
|
click.echo(f"Error: {exc}")
|
|
@@ -2165,6 +2164,7 @@ def implement_run_cmd(
|
|
|
2165
2164
|
task=task_id,
|
|
2166
2165
|
ai_command=ai_cmd,
|
|
2167
2166
|
use_derived_steps=_optional_bool(use_derived_steps),
|
|
2167
|
+
language=language,
|
|
2168
2168
|
)
|
|
2169
2169
|
except (FileNotFoundError, ValueError, CoddCLIError) as exc:
|
|
2170
2170
|
click.echo(f"Error: {exc}")
|
|
@@ -2237,6 +2237,7 @@ def _run_chunked_implementation(
|
|
|
2237
2237
|
chunk_size: int,
|
|
2238
2238
|
timeout_per_chunk: int,
|
|
2239
2239
|
history: str | None,
|
|
2240
|
+
language: str | None = None,
|
|
2240
2241
|
):
|
|
2241
2242
|
if not task_id:
|
|
2242
2243
|
raise ValueError("--task is required when chunked execution is enabled")
|
|
@@ -2245,6 +2246,13 @@ def _run_chunked_implementation(
|
|
|
2245
2246
|
from codd.implementer.chunked_runner import ChunkedRunner
|
|
2246
2247
|
|
|
2247
2248
|
config = _load_optional_project_config(project_root)
|
|
2249
|
+
if language:
|
|
2250
|
+
# Per-invocation language override (Issue #20, v-kato): align with
|
|
2251
|
+
# implement_tasks() so both code paths honour the CLI flag without
|
|
2252
|
+
# mutating codd.yaml on disk.
|
|
2253
|
+
project_cfg = dict(config.get("project") or {})
|
|
2254
|
+
project_cfg["language"] = language
|
|
2255
|
+
config = {**config, "project": project_cfg}
|
|
2248
2256
|
task_item, steps = _chunked_task_and_steps(project_root, config, task_id)
|
|
2249
2257
|
resolved_ai_command = generator_module._resolve_ai_command(config, ai_cmd, command_name="implement")
|
|
2250
2258
|
|
|
@@ -2413,11 +2421,12 @@ def verify(
|
|
|
2413
2421
|
return
|
|
2414
2422
|
if e2e or deploy:
|
|
2415
2423
|
from codd.e2e_runner import run_e2e
|
|
2424
|
+
|
|
2416
2425
|
run_e2e(path=path, deploy=deploy, base_url=base_url)
|
|
2417
2426
|
return
|
|
2418
2427
|
|
|
2419
2428
|
if not auto_repair:
|
|
2420
|
-
|
|
2429
|
+
_run_verify_once(path=path, sprint=sprint, prefer_standalone=True)
|
|
2421
2430
|
return
|
|
2422
2431
|
|
|
2423
2432
|
project_root = Path(path).resolve()
|
|
@@ -2805,28 +2814,6 @@ def repair_slice_cmd(path, files, issue, issue_file, language, source_dirs, top_
|
|
|
2805
2814
|
click.echo(result)
|
|
2806
2815
|
|
|
2807
2816
|
|
|
2808
|
-
@main.command()
|
|
2809
|
-
@click.option("--path", default=".", help="Project root directory")
|
|
2810
|
-
@click.option("--scope", default=None, help="Review a single document by node_id")
|
|
2811
|
-
@click.option("--json", "as_json", is_flag=True, help="Output results as JSON")
|
|
2812
|
-
@click.option(
|
|
2813
|
-
"--ai-cmd",
|
|
2814
|
-
default=None,
|
|
2815
|
-
help="Override AI CLI command (defaults to codd.yaml ai_command)",
|
|
2816
|
-
)
|
|
2817
|
-
def review(path: str, scope: str | None, as_json: bool, ai_cmd: str | None):
|
|
2818
|
-
"""Review design documents for content quality using AI.
|
|
2819
|
-
|
|
2820
|
-
Evaluates artifacts against type-specific criteria (architecture soundness,
|
|
2821
|
-
completeness, consistency with upstream docs, etc.) and returns PASS/FAIL
|
|
2822
|
-
with a score and detailed feedback.
|
|
2823
|
-
|
|
2824
|
-
Without --scope: reviews all documents.
|
|
2825
|
-
With --scope: reviews a single document by node_id.
|
|
2826
|
-
"""
|
|
2827
|
-
_run_pro_command("review", path=path, scope=scope, as_json=as_json, ai_cmd=ai_cmd)
|
|
2828
|
-
|
|
2829
|
-
|
|
2830
2817
|
@main.command()
|
|
2831
2818
|
@click.option("--lexicon", is_flag=True, default=False, help="Validate against project_lexicon.yaml")
|
|
2832
2819
|
@click.option(
|
|
@@ -3297,41 +3284,6 @@ def fixup_drift(path: str, dry_run: bool, severity: str, kind: str):
|
|
|
3297
3284
|
click.echo(f"Error: {error}")
|
|
3298
3285
|
|
|
3299
3286
|
|
|
3300
|
-
@main.command()
|
|
3301
|
-
@click.option("--diff", default="HEAD", help="Git diff target (default: HEAD)")
|
|
3302
|
-
@click.option("--path", default=".", help="Project root directory")
|
|
3303
|
-
@click.option("--json", "as_json", is_flag=True, help="Output as JSON")
|
|
3304
|
-
@click.option("--skip-review", is_flag=True, help="Skip AI review (faster, no AI cost)")
|
|
3305
|
-
@click.option("--output", default=None, help="Output file (default: stdout)")
|
|
3306
|
-
@click.option("--ai-cmd", default=None, help="Override AI command for review phase")
|
|
3307
|
-
def audit(diff: str, path: str, as_json: bool, skip_review: bool, output: str | None, ai_cmd: str | None):
|
|
3308
|
-
"""Change review pack — validate + impact + policy + review in one report.
|
|
3309
|
-
|
|
3310
|
-
Produces a consolidated audit report for PM/QA to make merge/release
|
|
3311
|
-
decisions. Runs four phases: structural validation, impact analysis,
|
|
3312
|
-
policy check (enterprise rules from codd.yaml), and (optionally) AI
|
|
3313
|
-
quality review.
|
|
3314
|
-
|
|
3315
|
-
Exit code: 0 = APPROVE, 1 = CONDITIONAL or REJECT.
|
|
3316
|
-
"""
|
|
3317
|
-
_run_pro_command(
|
|
3318
|
-
"audit",
|
|
3319
|
-
diff=diff,
|
|
3320
|
-
path=path,
|
|
3321
|
-
as_json=as_json,
|
|
3322
|
-
skip_review=skip_review,
|
|
3323
|
-
output=output,
|
|
3324
|
-
ai_cmd=ai_cmd,
|
|
3325
|
-
)
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
@main.command()
|
|
3329
|
-
@click.option("--path", default=".", help="Project root directory")
|
|
3330
|
-
def risk(path: str):
|
|
3331
|
-
"""Analyze change risk using the codd-pro extension pack."""
|
|
3332
|
-
_run_pro_command("risk", path=path)
|
|
3333
|
-
|
|
3334
|
-
|
|
3335
3287
|
@main.command()
|
|
3336
3288
|
@click.argument("phenomenon", nargs=-1)
|
|
3337
3289
|
@click.option("--path", default=".", help="Project root directory")
|
|
@@ -4543,11 +4495,12 @@ def _run_verify_once(
|
|
|
4543
4495
|
*,
|
|
4544
4496
|
prefer_standalone: bool = False,
|
|
4545
4497
|
) -> _CliVerificationResult:
|
|
4546
|
-
if prefer_standalone
|
|
4498
|
+
handler = None if prefer_standalone else get_command_handler("verify")
|
|
4499
|
+
if handler is None:
|
|
4547
4500
|
return _run_standalone_verify_once(path)
|
|
4548
4501
|
|
|
4549
4502
|
try:
|
|
4550
|
-
|
|
4503
|
+
result = handler(path=path, sprint=sprint)
|
|
4551
4504
|
except SystemExit as exc:
|
|
4552
4505
|
exit_code = _system_exit_code(exc)
|
|
4553
4506
|
passed = exit_code == 0
|
|
@@ -4560,6 +4513,19 @@ def _run_verify_once(
|
|
|
4560
4513
|
{},
|
|
4561
4514
|
)
|
|
4562
4515
|
return _CliVerificationResult(passed=passed, exit_code=exit_code, failure=failure)
|
|
4516
|
+
if isinstance(result, _CliVerificationResult):
|
|
4517
|
+
return result
|
|
4518
|
+
if type(result) is int:
|
|
4519
|
+
passed = result == 0
|
|
4520
|
+
failure = None
|
|
4521
|
+
if not passed:
|
|
4522
|
+
failure = _verification_failure_report(
|
|
4523
|
+
"verify",
|
|
4524
|
+
[],
|
|
4525
|
+
[f"codd verify exited with code {result}"],
|
|
4526
|
+
{},
|
|
4527
|
+
)
|
|
4528
|
+
return _CliVerificationResult(passed=passed, exit_code=result, failure=failure)
|
|
4563
4529
|
return _CliVerificationResult(passed=True, exit_code=0, failure=None)
|
|
4564
4530
|
|
|
4565
4531
|
|
|
@@ -382,10 +382,19 @@ def implement_tasks(
|
|
|
382
382
|
clean: bool = False,
|
|
383
383
|
use_derived_steps: bool | None = None,
|
|
384
384
|
task: str | None = None,
|
|
385
|
+
language: str | None = None,
|
|
385
386
|
**_ignored: Any,
|
|
386
387
|
) -> list[ImplementationResult]:
|
|
387
388
|
project_root = Path(project_root).resolve()
|
|
388
389
|
config = _load_project_config(project_root)
|
|
390
|
+
if language:
|
|
391
|
+
# Per-invocation language override (Issue #20, v-kato): mismatched
|
|
392
|
+
# codd init --language doesn't force a full re-init; spec authors can
|
|
393
|
+
# ship an implement run with --language typescript and the project's
|
|
394
|
+
# codd.yaml stays untouched.
|
|
395
|
+
project_cfg = dict(config.get("project") or {})
|
|
396
|
+
project_cfg["language"] = language
|
|
397
|
+
config = {**config, "project": project_cfg}
|
|
389
398
|
design_node = design or task
|
|
390
399
|
if not design_node:
|
|
391
400
|
raise ValueError("--design is required")
|
|
@@ -1382,7 +1391,11 @@ def _prepend_traceability_comment(relative_path: str, comment_block: str, conten
|
|
|
1382
1391
|
|
|
1383
1392
|
def _strip_code_fence(block: str) -> str:
|
|
1384
1393
|
stripped = block.strip()
|
|
1385
|
-
|
|
1394
|
+
# Non-greedy `.*?` captures up to the FIRST closing fence; any trailing
|
|
1395
|
+
# prose/markdown after the fence is discarded (Issue #22, v-kato).
|
|
1396
|
+
# Drop the `$` end-of-string anchor so the match still wins when the
|
|
1397
|
+
# LLM ignored the "no commentary" instruction and appended explanations.
|
|
1398
|
+
fenced = re.match(r"^```(?:[a-zA-Z0-9_+-]+)?\s*\n(?P<body>.*?)\n```", stripped, re.DOTALL)
|
|
1386
1399
|
if fenced:
|
|
1387
1400
|
return fenced.group("body")
|
|
1388
1401
|
return stripped
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/defaults/runtime_capability_inference.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/assertion_handlers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|