codd-dev 2.10.0__tar.gz → 2.11.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.11.0/PKG-INFO +205 -0
- codd_dev-2.11.0/README.md +165 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/assembler.py +6 -4
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/cli.py +32 -29
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/builder.py +3 -1
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/diff/apply.py +9 -11
- codd_dev-2.11.0/codd/implementer.py +1429 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/plan_deriver.py +11 -2
- {codd_dev-2.10.0 → codd_dev-2.11.0}/pyproject.toml +1 -1
- codd_dev-2.10.0/PKG-INFO +0 -399
- codd_dev-2.10.0/README.md +0 -359
- codd_dev-2.10.0/codd/implementer.py +0 -2011
- {codd_dev-2.10.0 → codd_dev-2.11.0}/.gitignore +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/LICENSE +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/__main__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/bridge.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/clustering.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/config.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/contracts.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployer.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/design_md.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/drift.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/e2e_generator.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/env_refs.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/extractor.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/fixer.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/generator.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/graph.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/inheritance.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/lexicon.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/measure.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/parsing.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/planner.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/policy.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/propagate.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/propagator.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/registry.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/history.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair/verify_runner.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/repair_slice.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/require.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/restore.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/scanner.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/synth.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/traceability.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/validator.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/watch/events.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd/wiring.py +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.10.0 → codd_dev-2.11.0}/tests/integration/standalone_repair_skeleton/README.md +0 -0
codd_dev-2.11.0/PKG-INFO
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: codd-dev
|
|
3
|
+
Version: 2.11.0
|
|
4
|
+
Summary: CoDD: Coherence-Driven Development — cross-artifact change impact analysis
|
|
5
|
+
Project-URL: Homepage, https://github.com/yohey-w/codd-dev
|
|
6
|
+
Project-URL: Repository, https://github.com/yohey-w/codd-dev
|
|
7
|
+
Project-URL: Issues, https://github.com/yohey-w/codd-dev/issues
|
|
8
|
+
Author-email: Yohei Watanabe <yohey-w@users.noreply.github.com>
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: change-impact,claude-code,dependency-graph,plugin,software-engineering
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Requires-Dist: click>=8.0
|
|
19
|
+
Requires-Dist: jinja2>=3.1.0
|
|
20
|
+
Requires-Dist: pyyaml>=6.0
|
|
21
|
+
Requires-Dist: tomli>=2.0.1; python_version < '3.11'
|
|
22
|
+
Requires-Dist: watchdog>=4.0.0
|
|
23
|
+
Requires-Dist: websocket-client>=1.8.0
|
|
24
|
+
Provides-Extra: ai
|
|
25
|
+
Provides-Extra: api-parsers
|
|
26
|
+
Requires-Dist: graphql-core>=3.2.0; extra == 'api-parsers'
|
|
27
|
+
Provides-Extra: infra
|
|
28
|
+
Requires-Dist: python-hcl2>=7.0.0; extra == 'infra'
|
|
29
|
+
Provides-Extra: mcp
|
|
30
|
+
Provides-Extra: scan
|
|
31
|
+
Requires-Dist: tree-sitter-java>=0.22; extra == 'scan'
|
|
32
|
+
Requires-Dist: tree-sitter-python>=0.22; extra == 'scan'
|
|
33
|
+
Requires-Dist: tree-sitter-typescript>=0.22; extra == 'scan'
|
|
34
|
+
Requires-Dist: tree-sitter>=0.22; extra == 'scan'
|
|
35
|
+
Provides-Extra: tree-sitter
|
|
36
|
+
Requires-Dist: tree-sitter-python<0.26.0,>=0.25.0; extra == 'tree-sitter'
|
|
37
|
+
Requires-Dist: tree-sitter-typescript<0.24.0,>=0.23.0; extra == 'tree-sitter'
|
|
38
|
+
Requires-Dist: tree-sitter<0.26.0,>=0.25.0; extra == 'tree-sitter'
|
|
39
|
+
Description-Content-Type: text/markdown
|
|
40
|
+
|
|
41
|
+
<p align="center">
|
|
42
|
+
<strong>CoDD — Coherence-Driven Development</strong>
|
|
43
|
+
</p>
|
|
44
|
+
|
|
45
|
+
<p align="center">
|
|
46
|
+
<a href="https://pypi.org/project/codd-dev/"><img src="https://img.shields.io/pypi/v/codd-dev?style=flat-square&color=blue" alt="PyPI"></a>
|
|
47
|
+
<a href="https://pypi.org/project/codd-dev/"><img src="https://img.shields.io/pypi/pyversions/codd-dev?style=flat-square" alt="Python"></a>
|
|
48
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="License"></a>
|
|
49
|
+
<a href="https://github.com/yohey-w/codd-dev/stargazers"><img src="https://img.shields.io/github/stars/yohey-w/codd-dev?style=flat-square" alt="Stars"></a>
|
|
50
|
+
</p>
|
|
51
|
+
|
|
52
|
+
<p align="center">
|
|
53
|
+
<a href="README_ja.md">日本語</a> | English | <a href="README_zh.md">中文</a>
|
|
54
|
+
</p>
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 🚀 Get started in 60 seconds
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pip install codd-dev
|
|
62
|
+
|
|
63
|
+
# Inside your project root
|
|
64
|
+
codd init --suggest-lexicons --llm-enhanced # AI picks the lexicons that fit
|
|
65
|
+
codd elicit # AI finds gaps in your requirements
|
|
66
|
+
codd dag verify --auto-repair --max-attempts 10 # AI fixes coherence violations
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
That's it. Three commands, three feedback loops, one coherent project.
|
|
70
|
+
|
|
71
|
+
> Real-world: dogfooded against a Next.js + Prisma + PostgreSQL LMS. See [Case study](#-case-study-real-world-lms).
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## ✨ What it does
|
|
76
|
+
|
|
77
|
+
| Command | One-line summary |
|
|
78
|
+
| --- | --- |
|
|
79
|
+
| 🔍 **`codd elicit`** | LLM finds **specification holes** in your requirements, scoped against industry-standard lexicons (BABOK, OWASP, WCAG, PCI DSS, ISO 25010, …). |
|
|
80
|
+
| 🔄 **`codd diff`** | Detects **drift** between requirements and the actual implementation (brownfield-friendly). |
|
|
81
|
+
| 🛠️ **`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. |
|
|
82
|
+
| 📦 **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
|
+
| 🌐 **`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
|
+
| 🎯 **`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). |
|
|
85
|
+
| 📊 **`codd lexicon list/install/diff` + `codd coverage report`** | Manage plug-ins and produce JSON / Markdown / self-contained HTML coverage matrices. |
|
|
86
|
+
| 🛡️ CI gate | `.github/workflows/codd_coverage.yml` template + `codd coverage check` exit code make coverage regressions block merges. |
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 🎨 Visual flow
|
|
91
|
+
|
|
92
|
+
```mermaid
|
|
93
|
+
flowchart LR
|
|
94
|
+
R["Requirements (.md)"] --> E["codd elicit"]
|
|
95
|
+
E -->|gap findings| H{HITL: approve / reject}
|
|
96
|
+
H -->|[x]| L["project_lexicon.yaml + requirements TODOs"]
|
|
97
|
+
H -->|[r]| I["ignored_findings.yaml"]
|
|
98
|
+
L --> V["codd dag verify --auto-repair"]
|
|
99
|
+
V -->|violation| AR["LLM patch propose → apply"]
|
|
100
|
+
AR --> V
|
|
101
|
+
V -->|SUCCESS| D["✅ deploy gate passes"]
|
|
102
|
+
AR -->|max attempts| P["PARTIAL_SUCCESS: unrepairable surfaced honestly"]
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Brownfield path:
|
|
106
|
+
|
|
107
|
+
```mermaid
|
|
108
|
+
flowchart LR
|
|
109
|
+
Code["Existing codebase"] --> X["codd extract"]
|
|
110
|
+
X --> DIFF["codd diff (drift)"]
|
|
111
|
+
DIFF --> EL["codd elicit (coverage gaps)"]
|
|
112
|
+
EL --> H{HITL gate}
|
|
113
|
+
H --> Apply["codd elicit apply"]
|
|
114
|
+
Apply --> V["codd dag verify"]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 📊 Case study: real-world LMS
|
|
120
|
+
|
|
121
|
+
A Next.js + Prisma + PostgreSQL multi-tenant LMS (≈30 design docs, 12 DB tables, RLS-enforced isolation):
|
|
122
|
+
|
|
123
|
+
| Stage | Result |
|
|
124
|
+
| --- | --- |
|
|
125
|
+
| `codd init --suggest-lexicons --llm-enhanced` | LLM detected **data types** (PII / payment / video) and **function traits** (auth / payment / public REST), recommended 15 lexicons, 9 of which the human had already chosen — confirming the heuristic. |
|
|
126
|
+
| `codd elicit` (10 lexicons loaded, scope=`system_implementation`, phase=`mvp`) | **70 findings** across web a11y / data governance / SQL / security / Web Vitals / WebAuthn / API / process. Business-tier dimensions (KPI, UAT detail, risk register) auto-filtered out. |
|
|
127
|
+
| `codd dag verify --auto-repair` | Started with 16 unrepairable violations; through targeted core fixes (deployment chain auto-discovery, runtime-state auto-binding, mock harness no-op, scope/phase filter) the same project now reaches **PASS or amber-WARN** with deploy allowed. |
|
|
128
|
+
| VPS smoke (`/`, `/login`, `/api/health`) | All 3 endpoints **200 OK**. |
|
|
129
|
+
|
|
130
|
+
The full pipeline change is **zero lines of CoDD core changes per project** — every project-specific concern lives in `project_lexicon.yaml` or in `codd_plugins/` (Generality Gate, Layer A / B / C).
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 🌟 Why CoDD exists
|
|
135
|
+
|
|
136
|
+
> **"Write only functional requirements and constraints. Code is generated, repaired, and verified automatically."**
|
|
137
|
+
|
|
138
|
+
Most "AI-assisted dev" tools focus on the **generation** side. CoDD focuses on the **constraint** side: the LLM is most useful when it has a precise picture of what *must* be true. CoDD provides that picture as a DAG that links every artifact, plus a plug-in surface that lets industry standards (BABOK / WCAG / OWASP / PCI / ISO …) supply the constraints mechanically.
|
|
139
|
+
|
|
140
|
+
When something breaks the DAG, an LLM proposes a patch, the loop re-verifies, and either reaches SUCCESS or surfaces what is structurally unrepairable — honestly.
|
|
141
|
+
|
|
142
|
+
### Generality Gate (three-layer architecture)
|
|
143
|
+
|
|
144
|
+
| Layer | Where stack-specific names live | Examples |
|
|
145
|
+
| --- | --- | --- |
|
|
146
|
+
| **A — Core** | **Nowhere.** Zero `react`, `django`, `Stripe`, `LMS` literals. | `codd/elicit/`, `codd/dag/`, `codd/lexicon_cli/` |
|
|
147
|
+
| **B — Templates** | Generic placeholders only. | `codd/templates/*.j2`, `codd/templates/lexicon_schema.yaml` |
|
|
148
|
+
| **C — Plug-ins** | Free to name anything. | `codd_plugins/lexicons/*/`, `codd_plugins/stack_map.yaml` |
|
|
149
|
+
|
|
150
|
+
This is what lets CoDD ship one core that works for Next.js, Django, FastAPI, Rails, Go services, mobile apps, ML model cards — and that lets contributors add a lexicon without touching the core.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 🧭 Roadmap
|
|
155
|
+
|
|
156
|
+
- **v2.10.0 (current)** — Lexicon-driven completeness, 38 plug-ins, LLM-enhanced init, scope/phase filter, auto-repair across the full DAG.
|
|
157
|
+
- **v2.11.0 (next)** — Sprint-less `codd implement` (`--design <path> --output <dir>` directly; `implementation_plan.md` parser removed). See [migration guide](docs/migrations/v2.11.0-sprintless.md).
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 🤝 Contributing
|
|
162
|
+
|
|
163
|
+
CoDD is shaped by the following people:
|
|
164
|
+
|
|
165
|
+
- **[@yohey-w](https://github.com/yohey-w)** — Maintainer / Architect
|
|
166
|
+
- **[@Seika86](https://github.com/Seika86)** — Sprint regex insight (PR #11)
|
|
167
|
+
- **[@v-kato](https://github.com/v-kato)** — Brownfield reproduction reports (Issues #17 / #18 / #19)
|
|
168
|
+
- **[@dev-komenzar](https://github.com/dev-komenzar)** — `source_dirs` bug reproduction (Issue #13)
|
|
169
|
+
|
|
170
|
+
External issues, PRs, and lexicon proposals are welcome — see [Issues](https://github.com/yohey-w/codd-dev/issues).
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 📚 Documentation
|
|
175
|
+
|
|
176
|
+
- [CHANGELOG.md](CHANGELOG.md) — every release with quality metrics
|
|
177
|
+
- [docs/](docs/) — architecture notes
|
|
178
|
+
- `codd --help` — full CLI reference
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## 📦 Hook Integration
|
|
183
|
+
|
|
184
|
+
CoDD ships hook recipes for editor and Git workflows:
|
|
185
|
+
|
|
186
|
+
- Claude Code `PostToolUse` hook recipe for running CoDD checks after file edits
|
|
187
|
+
- Git `pre-commit` hook recipe for blocking commits when coherence checks fail
|
|
188
|
+
|
|
189
|
+
Recipes live under `codd/hooks/recipes/`.
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## License
|
|
194
|
+
|
|
195
|
+
MIT — see [LICENSE](LICENSE).
|
|
196
|
+
|
|
197
|
+
## Links
|
|
198
|
+
|
|
199
|
+
- [PyPI](https://pypi.org/project/codd-dev/)
|
|
200
|
+
- [GitHub Sponsors](https://github.com/sponsors/yohey-w) — support development
|
|
201
|
+
- [Issues](https://github.com/yohey-w/codd-dev/issues)
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
> When code changes, CoDD traces the impact, detects violations, and produces evidence for merge decisions.
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<strong>CoDD — Coherence-Driven Development</strong>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://pypi.org/project/codd-dev/"><img src="https://img.shields.io/pypi/v/codd-dev?style=flat-square&color=blue" alt="PyPI"></a>
|
|
7
|
+
<a href="https://pypi.org/project/codd-dev/"><img src="https://img.shields.io/pypi/pyversions/codd-dev?style=flat-square" alt="Python"></a>
|
|
8
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="License"></a>
|
|
9
|
+
<a href="https://github.com/yohey-w/codd-dev/stargazers"><img src="https://img.shields.io/github/stars/yohey-w/codd-dev?style=flat-square" alt="Stars"></a>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="README_ja.md">日本語</a> | English | <a href="README_zh.md">中文</a>
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 🚀 Get started in 60 seconds
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
pip install codd-dev
|
|
22
|
+
|
|
23
|
+
# Inside your project root
|
|
24
|
+
codd init --suggest-lexicons --llm-enhanced # AI picks the lexicons that fit
|
|
25
|
+
codd elicit # AI finds gaps in your requirements
|
|
26
|
+
codd dag verify --auto-repair --max-attempts 10 # AI fixes coherence violations
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
That's it. Three commands, three feedback loops, one coherent project.
|
|
30
|
+
|
|
31
|
+
> Real-world: dogfooded against a Next.js + Prisma + PostgreSQL LMS. See [Case study](#-case-study-real-world-lms).
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## ✨ What it does
|
|
36
|
+
|
|
37
|
+
| Command | One-line summary |
|
|
38
|
+
| --- | --- |
|
|
39
|
+
| 🔍 **`codd elicit`** | LLM finds **specification holes** in your requirements, scoped against industry-standard lexicons (BABOK, OWASP, WCAG, PCI DSS, ISO 25010, …). |
|
|
40
|
+
| 🔄 **`codd diff`** | Detects **drift** between requirements and the actual implementation (brownfield-friendly). |
|
|
41
|
+
| 🛠️ **`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. |
|
|
42
|
+
| 📦 **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
|
+
| 🌐 **`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
|
+
| 🎯 **`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). |
|
|
45
|
+
| 📊 **`codd lexicon list/install/diff` + `codd coverage report`** | Manage plug-ins and produce JSON / Markdown / self-contained HTML coverage matrices. |
|
|
46
|
+
| 🛡️ CI gate | `.github/workflows/codd_coverage.yml` template + `codd coverage check` exit code make coverage regressions block merges. |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 🎨 Visual flow
|
|
51
|
+
|
|
52
|
+
```mermaid
|
|
53
|
+
flowchart LR
|
|
54
|
+
R["Requirements (.md)"] --> E["codd elicit"]
|
|
55
|
+
E -->|gap findings| H{HITL: approve / reject}
|
|
56
|
+
H -->|[x]| L["project_lexicon.yaml + requirements TODOs"]
|
|
57
|
+
H -->|[r]| I["ignored_findings.yaml"]
|
|
58
|
+
L --> V["codd dag verify --auto-repair"]
|
|
59
|
+
V -->|violation| AR["LLM patch propose → apply"]
|
|
60
|
+
AR --> V
|
|
61
|
+
V -->|SUCCESS| D["✅ deploy gate passes"]
|
|
62
|
+
AR -->|max attempts| P["PARTIAL_SUCCESS: unrepairable surfaced honestly"]
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Brownfield path:
|
|
66
|
+
|
|
67
|
+
```mermaid
|
|
68
|
+
flowchart LR
|
|
69
|
+
Code["Existing codebase"] --> X["codd extract"]
|
|
70
|
+
X --> DIFF["codd diff (drift)"]
|
|
71
|
+
DIFF --> EL["codd elicit (coverage gaps)"]
|
|
72
|
+
EL --> H{HITL gate}
|
|
73
|
+
H --> Apply["codd elicit apply"]
|
|
74
|
+
Apply --> V["codd dag verify"]
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 📊 Case study: real-world LMS
|
|
80
|
+
|
|
81
|
+
A Next.js + Prisma + PostgreSQL multi-tenant LMS (≈30 design docs, 12 DB tables, RLS-enforced isolation):
|
|
82
|
+
|
|
83
|
+
| Stage | Result |
|
|
84
|
+
| --- | --- |
|
|
85
|
+
| `codd init --suggest-lexicons --llm-enhanced` | LLM detected **data types** (PII / payment / video) and **function traits** (auth / payment / public REST), recommended 15 lexicons, 9 of which the human had already chosen — confirming the heuristic. |
|
|
86
|
+
| `codd elicit` (10 lexicons loaded, scope=`system_implementation`, phase=`mvp`) | **70 findings** across web a11y / data governance / SQL / security / Web Vitals / WebAuthn / API / process. Business-tier dimensions (KPI, UAT detail, risk register) auto-filtered out. |
|
|
87
|
+
| `codd dag verify --auto-repair` | Started with 16 unrepairable violations; through targeted core fixes (deployment chain auto-discovery, runtime-state auto-binding, mock harness no-op, scope/phase filter) the same project now reaches **PASS or amber-WARN** with deploy allowed. |
|
|
88
|
+
| VPS smoke (`/`, `/login`, `/api/health`) | All 3 endpoints **200 OK**. |
|
|
89
|
+
|
|
90
|
+
The full pipeline change is **zero lines of CoDD core changes per project** — every project-specific concern lives in `project_lexicon.yaml` or in `codd_plugins/` (Generality Gate, Layer A / B / C).
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 🌟 Why CoDD exists
|
|
95
|
+
|
|
96
|
+
> **"Write only functional requirements and constraints. Code is generated, repaired, and verified automatically."**
|
|
97
|
+
|
|
98
|
+
Most "AI-assisted dev" tools focus on the **generation** side. CoDD focuses on the **constraint** side: the LLM is most useful when it has a precise picture of what *must* be true. CoDD provides that picture as a DAG that links every artifact, plus a plug-in surface that lets industry standards (BABOK / WCAG / OWASP / PCI / ISO …) supply the constraints mechanically.
|
|
99
|
+
|
|
100
|
+
When something breaks the DAG, an LLM proposes a patch, the loop re-verifies, and either reaches SUCCESS or surfaces what is structurally unrepairable — honestly.
|
|
101
|
+
|
|
102
|
+
### Generality Gate (three-layer architecture)
|
|
103
|
+
|
|
104
|
+
| Layer | Where stack-specific names live | Examples |
|
|
105
|
+
| --- | --- | --- |
|
|
106
|
+
| **A — Core** | **Nowhere.** Zero `react`, `django`, `Stripe`, `LMS` literals. | `codd/elicit/`, `codd/dag/`, `codd/lexicon_cli/` |
|
|
107
|
+
| **B — Templates** | Generic placeholders only. | `codd/templates/*.j2`, `codd/templates/lexicon_schema.yaml` |
|
|
108
|
+
| **C — Plug-ins** | Free to name anything. | `codd_plugins/lexicons/*/`, `codd_plugins/stack_map.yaml` |
|
|
109
|
+
|
|
110
|
+
This is what lets CoDD ship one core that works for Next.js, Django, FastAPI, Rails, Go services, mobile apps, ML model cards — and that lets contributors add a lexicon without touching the core.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 🧭 Roadmap
|
|
115
|
+
|
|
116
|
+
- **v2.10.0 (current)** — Lexicon-driven completeness, 38 plug-ins, LLM-enhanced init, scope/phase filter, auto-repair across the full DAG.
|
|
117
|
+
- **v2.11.0 (next)** — Sprint-less `codd implement` (`--design <path> --output <dir>` directly; `implementation_plan.md` parser removed). See [migration guide](docs/migrations/v2.11.0-sprintless.md).
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 🤝 Contributing
|
|
122
|
+
|
|
123
|
+
CoDD is shaped by the following people:
|
|
124
|
+
|
|
125
|
+
- **[@yohey-w](https://github.com/yohey-w)** — Maintainer / Architect
|
|
126
|
+
- **[@Seika86](https://github.com/Seika86)** — Sprint regex insight (PR #11)
|
|
127
|
+
- **[@v-kato](https://github.com/v-kato)** — Brownfield reproduction reports (Issues #17 / #18 / #19)
|
|
128
|
+
- **[@dev-komenzar](https://github.com/dev-komenzar)** — `source_dirs` bug reproduction (Issue #13)
|
|
129
|
+
|
|
130
|
+
External issues, PRs, and lexicon proposals are welcome — see [Issues](https://github.com/yohey-w/codd-dev/issues).
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 📚 Documentation
|
|
135
|
+
|
|
136
|
+
- [CHANGELOG.md](CHANGELOG.md) — every release with quality metrics
|
|
137
|
+
- [docs/](docs/) — architecture notes
|
|
138
|
+
- `codd --help` — full CLI reference
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 📦 Hook Integration
|
|
143
|
+
|
|
144
|
+
CoDD ships hook recipes for editor and Git workflows:
|
|
145
|
+
|
|
146
|
+
- Claude Code `PostToolUse` hook recipe for running CoDD checks after file edits
|
|
147
|
+
- Git `pre-commit` hook recipe for blocking commits when coherence checks fail
|
|
148
|
+
|
|
149
|
+
Recipes live under `codd/hooks/recipes/`.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## License
|
|
154
|
+
|
|
155
|
+
MIT — see [LICENSE](LICENSE).
|
|
156
|
+
|
|
157
|
+
## Links
|
|
158
|
+
|
|
159
|
+
- [PyPI](https://pypi.org/project/codd-dev/)
|
|
160
|
+
- [GitHub Sponsors](https://github.com/sponsors/yohey-w) — support development
|
|
161
|
+
- [Issues](https://github.com/yohey-w/codd-dev/issues)
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
> When code changes, CoDD traces the impact, detects violations, and produces evidence for merge decisions.
|
|
@@ -85,8 +85,10 @@ def _collect_design_documents(project_root: Path, config: dict[str, Any]) -> lis
|
|
|
85
85
|
def _collect_generated_fragments(project_root: Path, config: dict[str, Any]) -> list[dict[str, str]]:
|
|
86
86
|
"""Collect all generated code fragments from src/generated/.
|
|
87
87
|
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
Uses a flat layout (`src/generated/<task>/`). Orphan directories — those
|
|
89
|
+
whose name does not match a known design-node slug — are excluded with a
|
|
90
|
+
warning. The legacy `sprint_N/` layout shipped before v2.11.0 is no
|
|
91
|
+
longer supported (cmd_444).
|
|
90
92
|
"""
|
|
91
93
|
source_dirs = config.get("scan", {}).get("source_dirs", ["src/"])
|
|
92
94
|
generated_base = None
|
|
@@ -110,11 +112,11 @@ def _collect_generated_fragments(project_root: Path, config: dict[str, Any]) ->
|
|
|
110
112
|
orphan_dirs: set[str] = set()
|
|
111
113
|
if valid_slugs:
|
|
112
114
|
for child in generated_base.iterdir():
|
|
113
|
-
if child.is_dir() and
|
|
115
|
+
if child.is_dir() and child.name not in valid_slugs:
|
|
114
116
|
orphan_dirs.add(child.name)
|
|
115
117
|
warnings.warn(
|
|
116
118
|
f"Orphan fragment directory 'generated/{child.name}' "
|
|
117
|
-
f"does not match any
|
|
119
|
+
f"does not match any known design node. Skipping.",
|
|
118
120
|
stacklevel=2,
|
|
119
121
|
)
|
|
120
122
|
|
|
@@ -1825,21 +1825,10 @@ def propagate_from(project_path: str, files: tuple[str, ...], source: str, edito
|
|
|
1825
1825
|
|
|
1826
1826
|
@main.group(invoke_without_command=True)
|
|
1827
1827
|
@click.option("--path", default=".", help="Project root directory")
|
|
1828
|
-
@click.option("--
|
|
1828
|
+
@click.option("--design", default=None, help="Design document path or design node id to implement")
|
|
1829
|
+
@click.option("--output", "outputs", multiple=True, help="Output path. May be repeated.")
|
|
1830
|
+
@click.option("--depends-on", "depends_on", multiple=True, help="Dependency design document path or node id. May be repeated.")
|
|
1829
1831
|
@click.option("--clean", is_flag=True, default=False, help="Remove existing generated output before re-generating")
|
|
1830
|
-
@click.option(
|
|
1831
|
-
"--max-tasks",
|
|
1832
|
-
default=30,
|
|
1833
|
-
type=click.IntRange(min=1),
|
|
1834
|
-
show_default=True,
|
|
1835
|
-
help="Maximum number of tasks to process per session. Abort if plan exceeds this limit.",
|
|
1836
|
-
)
|
|
1837
|
-
@click.option(
|
|
1838
|
-
"--wave",
|
|
1839
|
-
default=None,
|
|
1840
|
-
type=click.IntRange(min=1),
|
|
1841
|
-
help="Execute only tasks belonging to this wave number.",
|
|
1842
|
-
)
|
|
1843
1832
|
@click.option(
|
|
1844
1833
|
"--ai-cmd",
|
|
1845
1834
|
default=None,
|
|
@@ -1850,32 +1839,32 @@ def propagate_from(project_path: str, files: tuple[str, ...], source: str, edito
|
|
|
1850
1839
|
def implement(
|
|
1851
1840
|
ctx,
|
|
1852
1841
|
path: str,
|
|
1853
|
-
|
|
1842
|
+
design: str | None,
|
|
1843
|
+
outputs: tuple[str, ...],
|
|
1844
|
+
depends_on: tuple[str, ...],
|
|
1854
1845
|
clean: bool,
|
|
1855
|
-
max_tasks: int,
|
|
1856
|
-
wave: int | None,
|
|
1857
1846
|
ai_cmd: str | None,
|
|
1858
1847
|
use_derived_steps: str | None,
|
|
1859
1848
|
):
|
|
1860
|
-
"""Generate implementation code from
|
|
1849
|
+
"""Generate implementation code from one design document."""
|
|
1861
1850
|
if ctx.invoked_subcommand is not None:
|
|
1862
1851
|
return
|
|
1863
1852
|
|
|
1864
1853
|
from codd.implementer import implement_tasks
|
|
1865
1854
|
|
|
1866
1855
|
project_root = Path(path).resolve()
|
|
1867
|
-
|
|
1856
|
+
_require_codd_dir(project_root)
|
|
1868
1857
|
|
|
1869
1858
|
if clean:
|
|
1870
|
-
click.echo("Cleaning
|
|
1859
|
+
click.echo("Cleaning requested output paths ...")
|
|
1871
1860
|
|
|
1872
1861
|
try:
|
|
1873
1862
|
implement_kwargs = {
|
|
1874
|
-
"
|
|
1863
|
+
"design": design,
|
|
1864
|
+
"output_paths": list(outputs),
|
|
1865
|
+
"dependency_design_nodes": list(depends_on),
|
|
1875
1866
|
"ai_command": ai_cmd,
|
|
1876
1867
|
"clean": clean,
|
|
1877
|
-
"max_tasks": max_tasks,
|
|
1878
|
-
"wave": wave,
|
|
1879
1868
|
}
|
|
1880
1869
|
parsed_use_derived_steps = _optional_bool(use_derived_steps)
|
|
1881
1870
|
if parsed_use_derived_steps is not None:
|
|
@@ -4023,13 +4012,27 @@ def _optional_bool(value: str | bool | None) -> bool | None:
|
|
|
4023
4012
|
|
|
4024
4013
|
|
|
4025
4014
|
def _implement_task_for_cli(project_root: Path, config: dict[str, Any], task_id: str):
|
|
4026
|
-
from codd.implementer import
|
|
4015
|
+
from codd.implementer import ImplementSpec
|
|
4016
|
+
|
|
4017
|
+
output_paths = _implement_output_paths_for_cli(config, task_id)
|
|
4018
|
+
return ImplementSpec(design_node=task_id, output_paths=output_paths)
|
|
4027
4019
|
|
|
4028
|
-
|
|
4029
|
-
|
|
4030
|
-
if
|
|
4031
|
-
|
|
4032
|
-
|
|
4020
|
+
|
|
4021
|
+
def _implement_output_paths_for_cli(config: dict[str, Any], design_node: str) -> list[str]:
|
|
4022
|
+
implement = config.get("implement") if isinstance(config.get("implement"), dict) else {}
|
|
4023
|
+
for key in ("default_output_paths", "implement_targets"):
|
|
4024
|
+
mapping = implement.get(key) if isinstance(implement, dict) else None
|
|
4025
|
+
if not isinstance(mapping, dict) or design_node not in mapping:
|
|
4026
|
+
continue
|
|
4027
|
+
value = mapping[design_node]
|
|
4028
|
+
if isinstance(value, str):
|
|
4029
|
+
return [value]
|
|
4030
|
+
if isinstance(value, list):
|
|
4031
|
+
paths = [str(item) for item in value if str(item).strip()]
|
|
4032
|
+
if paths:
|
|
4033
|
+
return paths
|
|
4034
|
+
slug = re.sub(r"[^a-zA-Z0-9]+", "_", design_node).strip("_").lower() or "implement"
|
|
4035
|
+
return [f"src/{slug}"]
|
|
4033
4036
|
|
|
4034
4037
|
|
|
4035
4038
|
def _nested_config_value(config: dict[str, Any], path: tuple[str, ...]) -> Any:
|
|
@@ -130,7 +130,9 @@ def load_dag_settings(project_root: Path, settings: dict[str, Any] | None = None
|
|
|
130
130
|
merged.setdefault("design_doc_patterns", [])
|
|
131
131
|
merged.setdefault("impl_file_patterns", [])
|
|
132
132
|
merged.setdefault("test_file_patterns", [])
|
|
133
|
-
|
|
133
|
+
# cmd_444 v2.11.0: implementation_plan.md is no longer the entry point.
|
|
134
|
+
# `codd implement` now takes design_node + output_paths directly. Any
|
|
135
|
+
# `plan_task_file` value present in legacy codd.yaml is silently ignored.
|
|
134
136
|
merged.setdefault("lexicon_file", "project_lexicon.yaml")
|
|
135
137
|
return merged
|
|
136
138
|
|
|
@@ -91,15 +91,15 @@ def _requirements_path(project_root: Path) -> Path:
|
|
|
91
91
|
|
|
92
92
|
|
|
93
93
|
def _plan_path(project_root: Path) -> Path:
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
return
|
|
94
|
+
"""Return the destination for plan-style entries (TODO checklist).
|
|
95
|
+
|
|
96
|
+
cmd_444 v2.11.0: implementation_plan.md is no longer the entry point.
|
|
97
|
+
Plan entries (`requirement_only` findings that need a TODO row) are
|
|
98
|
+
appended to the project's requirements.md alongside requirement-side
|
|
99
|
+
findings; the heading distinguishes them.
|
|
100
|
+
"""
|
|
101
|
+
|
|
102
|
+
return _requirements_path(project_root)
|
|
103
103
|
|
|
104
104
|
|
|
105
105
|
def _requirements_entry(finding: Finding) -> str:
|
|
@@ -158,8 +158,6 @@ def _append_raw_findings(path: Path, entries: list[str]) -> None:
|
|
|
158
158
|
def _heading_for_path(path: Path) -> str:
|
|
159
159
|
if path.name == "requirements.md":
|
|
160
160
|
return "## 暗黙要件確認 (codd comparison proposal)"
|
|
161
|
-
if path.name == "impl_plan.md" or path.name == "implementation_plan.md":
|
|
162
|
-
return "## Gap Resolution Candidates (codd comparison)"
|
|
163
161
|
return "# Resolution Candidates"
|
|
164
162
|
|
|
165
163
|
|