codd-dev 2.24.0__tar.gz → 2.26.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.24.0 → codd_dev-2.26.0}/PKG-INFO +1 -1
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/__init__.py +1 -1
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/__init__.py +10 -2
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/verification/cdp_browser.py +6 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/verification/curl.py +2 -1
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/verification/playwright.py +2 -1
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/verification/vitest.py +2 -1
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/greenfield/pipeline.py +260 -19
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/implement_oracle.py +199 -8
- codd_dev-2.26.0/codd/implement_oracle_scope.py +1106 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/verify_runner.py +9 -1
- {codd_dev-2.24.0 → codd_dev-2.26.0}/pyproject.toml +1 -1
- {codd_dev-2.24.0 → codd_dev-2.26.0}/.gitignore +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/LICENSE +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/README.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/bench_fixture/README.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/__main__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/action_outcome.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/ai_invoke.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/ai_patch.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/artifact_contract.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/artifact_ids.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/assembler.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/bridge.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/capability_completeness.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/claude_cli.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/cli.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/clustering.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/confidence.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/config.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/config_schema.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/contracts.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/auto_repair.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/builder.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/impact.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/defaults.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployer.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/design_md.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/diff/apply.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/discovery.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/drift.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/e2e_generator.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/env_refs.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/extract_paths.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/extractor.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fix/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fix/design_updater.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fix/templates_loader.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fixer.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/frontmatter.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/generator.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/git_evidence.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/graph.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/greenfield/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/iac_nfr.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/implementer.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/import_coherence.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/inheritance.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/lexicon.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/measure.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/operational_e2e_audit.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/operations_derive.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/parsing/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/parsing/_shared.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/parsing/api_specs.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/parsing/iac.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/parsing/python_ast.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/parsing/schemas.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/parsing/treesitter.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/planner.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/policy.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/project_types.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/propagate.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/propagation_common.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/propagator.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/registry.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/history.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/repair_slice.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/require.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/requirements_meta.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/restoration_report.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/restore.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/scanner.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/skills_cli/manager.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/skills_cli/paths.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/surface_reconciliation.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/synth.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/test_detection.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/test_import_coherence.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/traceability.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/validator.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/verifiable_behavior_audit.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/watch/events.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd/wiring.py +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/dogfood/README.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/examples/README.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.0}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-2.24.0 → codd_dev-2.26.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.26.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
|
|
@@ -67,8 +67,16 @@ class VerificationTemplate(ABC):
|
|
|
67
67
|
"""Generate the command used to verify ``runtime_state``."""
|
|
68
68
|
|
|
69
69
|
@abstractmethod
|
|
70
|
-
def execute(self, command: str) -> "VerificationResult":
|
|
71
|
-
"""Execute a verification command and return its result.
|
|
70
|
+
def execute(self, command: str, cwd: Path | None = None) -> "VerificationResult":
|
|
71
|
+
"""Execute a verification command and return its result.
|
|
72
|
+
|
|
73
|
+
``cwd`` is the project root the command must run in. A test runner like
|
|
74
|
+
``vitest`` roots its config/collection at the process working directory,
|
|
75
|
+
so executing it from the orchestrator's cwd (e.g. the CoDD install tree)
|
|
76
|
+
makes it load the WRONG ``vitest.config.ts`` and collect 0 tests. Pass
|
|
77
|
+
the generated project root here so every runner roots at the project.
|
|
78
|
+
``None`` keeps the caller's current working directory (legacy behaviour).
|
|
79
|
+
"""
|
|
72
80
|
|
|
73
81
|
|
|
74
82
|
VERIFICATION_TEMPLATES: dict[str, type[VerificationTemplate]] = {}
|
|
@@ -83,7 +83,13 @@ class CdpBrowser(VerificationTemplate):
|
|
|
83
83
|
self,
|
|
84
84
|
command: str,
|
|
85
85
|
axis_overrides: Mapping[str, str] | None = None,
|
|
86
|
+
cwd: Path | None = None,
|
|
86
87
|
) -> VerificationResult:
|
|
88
|
+
# ``cwd`` is accepted for interface uniformity (the verify runner passes
|
|
89
|
+
# it to every template) but is intentionally unused here: this template
|
|
90
|
+
# drives a CDP browser session, not a cwd-rooted subprocess, and already
|
|
91
|
+
# resolves the project root from the execution plan itself
|
|
92
|
+
# (``generate_test_command`` stamps ``plan["project_root"]``).
|
|
87
93
|
started_at = time.monotonic()
|
|
88
94
|
wire: CdpWire | None = None
|
|
89
95
|
result: VerificationResult | None = None
|
|
@@ -65,7 +65,7 @@ class CurlTemplate(VerificationTemplate):
|
|
|
65
65
|
return f"curl -s -o /dev/null -w '%{{http_code}}' -X POST {target}"
|
|
66
66
|
return f"curl -s -o /dev/null -w '%{{http_code}}' {target}"
|
|
67
67
|
|
|
68
|
-
def execute(self, command: str) -> VerificationResult:
|
|
68
|
+
def execute(self, command: str, cwd: Path | None = None) -> VerificationResult:
|
|
69
69
|
if self.dry_run:
|
|
70
70
|
return VerificationResult(passed=True, output=command, duration=0.0)
|
|
71
71
|
|
|
@@ -74,6 +74,7 @@ class CurlTemplate(VerificationTemplate):
|
|
|
74
74
|
completed = subprocess.run(
|
|
75
75
|
command,
|
|
76
76
|
shell=True,
|
|
77
|
+
cwd=cwd,
|
|
77
78
|
capture_output=True,
|
|
78
79
|
text=True,
|
|
79
80
|
timeout=self.timeout,
|
|
@@ -70,12 +70,13 @@ class PlaywrightTemplate(VerificationTemplate):
|
|
|
70
70
|
|
|
71
71
|
return " ".join(parts)
|
|
72
72
|
|
|
73
|
-
def execute(self, command: str) -> VerificationResult:
|
|
73
|
+
def execute(self, command: str, cwd: Path | None = None) -> VerificationResult:
|
|
74
74
|
started_at = time.monotonic()
|
|
75
75
|
try:
|
|
76
76
|
completed = subprocess.run(
|
|
77
77
|
command,
|
|
78
78
|
shell=True,
|
|
79
|
+
cwd=cwd,
|
|
79
80
|
capture_output=True,
|
|
80
81
|
text=True,
|
|
81
82
|
timeout=self.timeout,
|
|
@@ -101,12 +101,13 @@ class VitestTemplate(VerificationTemplate):
|
|
|
101
101
|
command = ["npx", "vitest", "run", shlex.quote(test_target)]
|
|
102
102
|
return " ".join(command)
|
|
103
103
|
|
|
104
|
-
def execute(self, command: str) -> VerificationResult:
|
|
104
|
+
def execute(self, command: str, cwd: Path | None = None) -> VerificationResult:
|
|
105
105
|
started_at = time.monotonic()
|
|
106
106
|
try:
|
|
107
107
|
completed = subprocess.run(
|
|
108
108
|
command,
|
|
109
109
|
shell=True,
|
|
110
|
+
cwd=cwd,
|
|
110
111
|
capture_output=True,
|
|
111
112
|
text=True,
|
|
112
113
|
timeout=self.timeout,
|
|
@@ -741,14 +741,16 @@ class GreenfieldPipeline:
|
|
|
741
741
|
Ensures the stack topology is scaffolded first (idempotent — the same
|
|
742
742
|
``_ensure_test_runner`` verify uses), so the oracle's config (tsconfig)
|
|
743
743
|
exists to certify and run against AT implement-time. Then runs the gate
|
|
744
|
-
with a ``rerun(feedback)`` callback
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
744
|
+
with a SCOPED ``rerun(feedback, scope)`` callback: on an oracle failure
|
|
745
|
+
the gate derives the both-ends-of-the-broken-edge scope and re-implements
|
|
746
|
+
ONLY the owning tasks (under a write-fence), escalating
|
|
747
|
+
narrow→expanded→broad only when the diagnostic signature fails to move
|
|
748
|
+
(see ``codd.implement_oracle_scope`` + ``run_implement_oracle_gate``).
|
|
749
|
+
``scope is None`` ⇒ the broad fallback (re-implement every task — the
|
|
750
|
+
legacy shape the VB coverage gate uses). A non-passing final result is a
|
|
751
|
+
StageError; an uncertifiable oracle scope (OracleScopeError) propagates
|
|
752
|
+
as a hard failure. The whole gate is a NO-OP for a stack without a
|
|
753
|
+
declared implement-time oracle.
|
|
752
754
|
"""
|
|
753
755
|
from codd.implement_oracle import (
|
|
754
756
|
OracleScopeError,
|
|
@@ -776,8 +778,14 @@ class GreenfieldPipeline:
|
|
|
776
778
|
# clobbering, so verify's re-scaffold is a no-op.
|
|
777
779
|
self._ensure_test_runner(project_root)
|
|
778
780
|
|
|
779
|
-
|
|
780
|
-
|
|
781
|
+
# The path→owning-task index for the SCOPED rerun: declared task outputs
|
|
782
|
+
# UNION the config-derived output paths. Built once; the gate consults it
|
|
783
|
+
# to localize each rerun to the diagnostics' owners.
|
|
784
|
+
scope_index = self._build_oracle_scope_index(project_root, tasks, config)
|
|
785
|
+
manifest_paths = self._oracle_manifest_paths(project_root)
|
|
786
|
+
|
|
787
|
+
def _rerun(feedback: str, scope: Any = None) -> None:
|
|
788
|
+
self._rerun_tasks_with_feedback(project_root, tasks, feedback, options, scope=scope)
|
|
781
789
|
|
|
782
790
|
try:
|
|
783
791
|
result = run_implement_oracle_gate(
|
|
@@ -789,6 +797,8 @@ class GreenfieldPipeline:
|
|
|
789
797
|
config=config,
|
|
790
798
|
rerun=_rerun,
|
|
791
799
|
echo=self.echo,
|
|
800
|
+
scope_index=scope_index,
|
|
801
|
+
manifest_paths=manifest_paths,
|
|
792
802
|
)
|
|
793
803
|
except OracleScopeError as exc:
|
|
794
804
|
raise StageError(str(exc)) from exc
|
|
@@ -802,29 +812,122 @@ class GreenfieldPipeline:
|
|
|
802
812
|
f"{result.category_counts()}. {result.detail}"
|
|
803
813
|
)
|
|
804
814
|
|
|
815
|
+
def _build_oracle_scope_index(
|
|
816
|
+
self,
|
|
817
|
+
project_root: Path,
|
|
818
|
+
tasks: list[ImplementTaskRef],
|
|
819
|
+
config: dict[str, Any],
|
|
820
|
+
) -> Any:
|
|
821
|
+
"""Build the path→owning-task index used to scope an oracle rerun.
|
|
822
|
+
|
|
823
|
+
Unions each task's DECLARED ``output_paths`` with its CONFIG-derived
|
|
824
|
+
output paths (``_output_paths_for_task`` — the same resolution the rerun
|
|
825
|
+
itself uses), so a diagnostic on any owned file/dir maps back to the task
|
|
826
|
+
that wrote it. A failure to build the index degrades the gate to the
|
|
827
|
+
broad rerun (``None`` → ``scope_index`` unset), never aborts.
|
|
828
|
+
"""
|
|
829
|
+
try:
|
|
830
|
+
from codd.implement_oracle_scope import build_path_owner_index
|
|
831
|
+
|
|
832
|
+
config_output_paths: dict[str, list[str]] = {}
|
|
833
|
+
for task in tasks:
|
|
834
|
+
try:
|
|
835
|
+
config_output_paths[task.task_id] = (
|
|
836
|
+
list(task.output_paths)
|
|
837
|
+
if task.output_paths
|
|
838
|
+
else _output_paths_for_task(config, task)
|
|
839
|
+
)
|
|
840
|
+
except Exception: # noqa: BLE001 — a task whose paths fail just falls to broad.
|
|
841
|
+
config_output_paths[task.task_id] = list(task.output_paths or ())
|
|
842
|
+
return build_path_owner_index(
|
|
843
|
+
tasks,
|
|
844
|
+
project_root=project_root,
|
|
845
|
+
config=config,
|
|
846
|
+
config_output_paths=config_output_paths,
|
|
847
|
+
)
|
|
848
|
+
except Exception as exc: # noqa: BLE001 — index build is best-effort.
|
|
849
|
+
self.echo(f"[greenfield] implement-oracle: scope index unavailable ({exc}); rerun stays broad.")
|
|
850
|
+
return None
|
|
851
|
+
|
|
852
|
+
def _oracle_manifest_paths(self, project_root: Path) -> tuple[str, ...]:
|
|
853
|
+
"""Manifest/config files the write-fence always permits (they are shared).
|
|
854
|
+
|
|
855
|
+
A scoped rerun may legitimately touch the build manifest/config even when
|
|
856
|
+
no task "owns" it (e.g. adding a dependency the fix needs). Only files
|
|
857
|
+
that actually exist are listed, project-relative.
|
|
858
|
+
"""
|
|
859
|
+
candidates = (
|
|
860
|
+
"package.json",
|
|
861
|
+
"tsconfig.json",
|
|
862
|
+
"package-lock.json",
|
|
863
|
+
"pnpm-lock.yaml",
|
|
864
|
+
"yarn.lock",
|
|
865
|
+
)
|
|
866
|
+
present: list[str] = []
|
|
867
|
+
for name in candidates:
|
|
868
|
+
if (project_root / name).is_file():
|
|
869
|
+
present.append(name)
|
|
870
|
+
return tuple(present)
|
|
871
|
+
|
|
805
872
|
def _rerun_tasks_with_feedback(
|
|
806
873
|
self,
|
|
807
874
|
project_root: Path,
|
|
808
875
|
tasks: list[ImplementTaskRef],
|
|
809
876
|
feedback: str,
|
|
810
877
|
options: dict[str, Any],
|
|
878
|
+
*,
|
|
879
|
+
scope: Any = None,
|
|
811
880
|
) -> None:
|
|
812
|
-
"""Re-invoke implementation
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
the
|
|
818
|
-
|
|
819
|
-
|
|
881
|
+
"""Re-invoke implementation under ``feedback`` — SCOPED when ``scope`` set.
|
|
882
|
+
|
|
883
|
+
``scope is None`` (or a broad scope) → re-implement EVERY task (the
|
|
884
|
+
legacy broad rerun). A scoped :class:`~codd.implement_oracle_scope.OracleRerunScope`
|
|
885
|
+
→ re-implement ONLY its ``task_ids``, under a WRITE-FENCE: out-of-scope
|
|
886
|
+
files the SUT writes during the scoped rerun are reverted afterwards (an
|
|
887
|
+
out-of-scope CREATE is removed, an out-of-scope MODIFY is restored), so a
|
|
888
|
+
"targeted" rerun cannot silently regenerate the whole tree. The fence is
|
|
889
|
+
OFF for a broad rerun (broad legitimately rewrites everything).
|
|
890
|
+
|
|
891
|
+
Routes through the SAME implement path the stage uses (``implement_tasks``
|
|
892
|
+
with the resolved output paths), threading the normalized oracle feedback
|
|
893
|
+
so the SUT regenerates coherent files.
|
|
820
894
|
"""
|
|
821
895
|
from codd.config import load_project_config
|
|
822
|
-
from codd.implementer import implement_tasks
|
|
823
896
|
|
|
824
897
|
try:
|
|
825
898
|
config = load_project_config(project_root)
|
|
826
899
|
except (FileNotFoundError, ValueError):
|
|
827
900
|
config = {}
|
|
901
|
+
|
|
902
|
+
scoped = scope is not None and not bool(getattr(scope, "is_broad", lambda: False)())
|
|
903
|
+
if not scoped:
|
|
904
|
+
self._reimplement_tasks(project_root, tasks, feedback, config)
|
|
905
|
+
return
|
|
906
|
+
|
|
907
|
+
# Scoped rerun: only the scope's tasks, fenced to its allowed paths.
|
|
908
|
+
target_ids = set(getattr(scope, "task_ids", ()) or ())
|
|
909
|
+
scoped_tasks = [task for task in tasks if task.task_id in target_ids]
|
|
910
|
+
if not scoped_tasks:
|
|
911
|
+
# Nothing resolvable in this scope (defensive) → broad, never a no-op.
|
|
912
|
+
self.echo("[greenfield] implement-oracle: scoped task set empty — re-running broad.")
|
|
913
|
+
self._reimplement_tasks(project_root, tasks, feedback, config)
|
|
914
|
+
return
|
|
915
|
+
|
|
916
|
+
allowed = tuple(getattr(scope, "allowed_paths", ()) or ())
|
|
917
|
+
with _OracleWriteFence(project_root, allowed_paths=allowed, echo=self.echo) as fence:
|
|
918
|
+
self._reimplement_tasks(project_root, scoped_tasks, feedback, config)
|
|
919
|
+
fence.enforce()
|
|
920
|
+
|
|
921
|
+
def _reimplement_tasks(
|
|
922
|
+
self,
|
|
923
|
+
project_root: Path,
|
|
924
|
+
tasks: list[ImplementTaskRef],
|
|
925
|
+
feedback: str,
|
|
926
|
+
config: dict[str, Any],
|
|
927
|
+
) -> None:
|
|
928
|
+
"""Re-run ``implement_tasks`` for each given task carrying ``feedback``."""
|
|
929
|
+
from codd.implementer import implement_tasks
|
|
930
|
+
|
|
828
931
|
for task in tasks:
|
|
829
932
|
output_paths = (
|
|
830
933
|
list(task.output_paths)
|
|
@@ -1253,6 +1356,144 @@ def _default_generate_wave_runner(project_root: Path, wave: int, *, ai_command:
|
|
|
1253
1356
|
return f"{generated} generated, {len(results) - generated} skipped"
|
|
1254
1357
|
|
|
1255
1358
|
|
|
1359
|
+
#: Directories never snapshotted/fenced — vendored deps, VCS, the codd cache,
|
|
1360
|
+
#: build output. A write here is not a SUT source-write the fence governs.
|
|
1361
|
+
_FENCE_EXCLUDE_DIRS = frozenset(
|
|
1362
|
+
{"node_modules", ".git", ".codd", ".hg", ".svn", "dist", "build", "__pycache__", ".pytest_cache"}
|
|
1363
|
+
)
|
|
1364
|
+
#: Source/test file suffixes the fence tracks. Restricting to code keeps the
|
|
1365
|
+
#: snapshot cheap and avoids fighting tooling that touches caches/logs.
|
|
1366
|
+
_FENCE_TRACKED_SUFFIXES = frozenset(
|
|
1367
|
+
{".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs", ".py", ".json"}
|
|
1368
|
+
)
|
|
1369
|
+
|
|
1370
|
+
|
|
1371
|
+
class _OracleWriteFence:
|
|
1372
|
+
"""Restrict a SCOPED oracle rerun's writes to the scope's ``allowed_paths``.
|
|
1373
|
+
|
|
1374
|
+
Re-implementing only the scoped tasks does NOT stop the SUT from writing
|
|
1375
|
+
OUT-of-scope files (the design's #1 implementation note). The fence snapshots
|
|
1376
|
+
the tracked source/test tree on entry; on :meth:`enforce` it reverts every
|
|
1377
|
+
out-of-scope change made during the rerun — an out-of-scope CREATE is deleted,
|
|
1378
|
+
an out-of-scope MODIFY is restored to its pre-rerun bytes. In-scope writes
|
|
1379
|
+
(under an allowed file/dir, or a manifest/config) pass untouched. This makes
|
|
1380
|
+
a "targeted" rerun genuinely local: it cannot silently regenerate the tree.
|
|
1381
|
+
|
|
1382
|
+
``allowed_paths`` entries are matched as exact files OR directory prefixes
|
|
1383
|
+
(a task that owns ``src/`` may write any file under ``src/``). An EMPTY
|
|
1384
|
+
allow-set means "no fence" (the broad rerun's signal) and the caller does not
|
|
1385
|
+
construct a fence in that case.
|
|
1386
|
+
"""
|
|
1387
|
+
|
|
1388
|
+
def __init__(self, project_root: Path, *, allowed_paths: tuple[str, ...], echo: Callable[[str], str]):
|
|
1389
|
+
self._root = Path(project_root).resolve()
|
|
1390
|
+
self._allowed_files, self._allowed_dirs = self._split_allowed(allowed_paths)
|
|
1391
|
+
self._echo = echo
|
|
1392
|
+
self._snapshot: dict[str, bytes] = {}
|
|
1393
|
+
|
|
1394
|
+
def __enter__(self) -> "_OracleWriteFence":
|
|
1395
|
+
self._snapshot = self._capture()
|
|
1396
|
+
return self
|
|
1397
|
+
|
|
1398
|
+
def __exit__(self, *_exc: Any) -> None:
|
|
1399
|
+
# The fence does not suppress exceptions; enforce() is called explicitly
|
|
1400
|
+
# by the caller on the SUCCESS path so a failing rerun's exception still
|
|
1401
|
+
# propagates with the tree left for the caller's error handling.
|
|
1402
|
+
return None
|
|
1403
|
+
|
|
1404
|
+
def enforce(self) -> None:
|
|
1405
|
+
"""Revert every out-of-scope create/modify made since entry."""
|
|
1406
|
+
current = self._capture()
|
|
1407
|
+
reverted_modified: list[str] = []
|
|
1408
|
+
reverted_created: list[str] = []
|
|
1409
|
+
|
|
1410
|
+
# Reverts for modified/created files.
|
|
1411
|
+
for rel, content in current.items():
|
|
1412
|
+
if self._is_allowed(rel):
|
|
1413
|
+
continue
|
|
1414
|
+
if rel in self._snapshot:
|
|
1415
|
+
if self._snapshot[rel] != content:
|
|
1416
|
+
self._restore(rel, self._snapshot[rel])
|
|
1417
|
+
reverted_modified.append(rel)
|
|
1418
|
+
else:
|
|
1419
|
+
self._remove(rel)
|
|
1420
|
+
reverted_created.append(rel)
|
|
1421
|
+
|
|
1422
|
+
# Re-create any tracked file the scoped rerun DELETED out of scope (a
|
|
1423
|
+
# deletion is also an out-of-scope mutation we must undo).
|
|
1424
|
+
reverted_deleted: list[str] = []
|
|
1425
|
+
for rel, content in self._snapshot.items():
|
|
1426
|
+
if rel in current or self._is_allowed(rel):
|
|
1427
|
+
continue
|
|
1428
|
+
self._restore(rel, content)
|
|
1429
|
+
reverted_deleted.append(rel)
|
|
1430
|
+
|
|
1431
|
+
total = len(reverted_modified) + len(reverted_created) + len(reverted_deleted)
|
|
1432
|
+
if total:
|
|
1433
|
+
self._echo(
|
|
1434
|
+
"[greenfield] implement-oracle: write-fence reverted "
|
|
1435
|
+
f"{total} out-of-scope change(s) "
|
|
1436
|
+
f"(modified={len(reverted_modified)}, created={len(reverted_created)}, "
|
|
1437
|
+
f"deleted={len(reverted_deleted)}); the scoped rerun is kept local."
|
|
1438
|
+
)
|
|
1439
|
+
|
|
1440
|
+
# ── internals ──
|
|
1441
|
+
@staticmethod
|
|
1442
|
+
def _split_allowed(allowed_paths: tuple[str, ...]) -> tuple[set[str], list[str]]:
|
|
1443
|
+
files: set[str] = set()
|
|
1444
|
+
dirs: list[str] = []
|
|
1445
|
+
for raw in allowed_paths:
|
|
1446
|
+
norm = str(raw).strip().replace("\\", "/").strip("/")
|
|
1447
|
+
if not norm:
|
|
1448
|
+
continue
|
|
1449
|
+
if PurePosixPath(norm).suffix:
|
|
1450
|
+
files.add(norm)
|
|
1451
|
+
else:
|
|
1452
|
+
dirs.append(norm)
|
|
1453
|
+
return files, dirs
|
|
1454
|
+
|
|
1455
|
+
def _is_allowed(self, rel: str) -> bool:
|
|
1456
|
+
if rel in self._allowed_files:
|
|
1457
|
+
return True
|
|
1458
|
+
for directory in self._allowed_dirs:
|
|
1459
|
+
if rel == directory or rel.startswith(directory + "/"):
|
|
1460
|
+
return True
|
|
1461
|
+
return False
|
|
1462
|
+
|
|
1463
|
+
def _capture(self) -> dict[str, bytes]:
|
|
1464
|
+
out: dict[str, bytes] = {}
|
|
1465
|
+
for path in self._iter_tracked_files():
|
|
1466
|
+
try:
|
|
1467
|
+
out[path.relative_to(self._root).as_posix()] = path.read_bytes()
|
|
1468
|
+
except OSError:
|
|
1469
|
+
continue
|
|
1470
|
+
return out
|
|
1471
|
+
|
|
1472
|
+
def _iter_tracked_files(self):
|
|
1473
|
+
import os
|
|
1474
|
+
|
|
1475
|
+
for dirpath, dirnames, filenames in os.walk(self._root):
|
|
1476
|
+
dirnames[:] = [d for d in dirnames if d not in _FENCE_EXCLUDE_DIRS]
|
|
1477
|
+
for name in filenames:
|
|
1478
|
+
if PurePosixPath(name).suffix in _FENCE_TRACKED_SUFFIXES:
|
|
1479
|
+
yield Path(dirpath) / name
|
|
1480
|
+
|
|
1481
|
+
def _restore(self, rel: str, content: bytes) -> None:
|
|
1482
|
+
target = self._root / rel
|
|
1483
|
+
try:
|
|
1484
|
+
target.parent.mkdir(parents=True, exist_ok=True)
|
|
1485
|
+
target.write_bytes(content)
|
|
1486
|
+
except OSError as exc:
|
|
1487
|
+
self._echo(f"[greenfield] implement-oracle: write-fence could not restore {rel} ({exc}).")
|
|
1488
|
+
|
|
1489
|
+
def _remove(self, rel: str) -> None:
|
|
1490
|
+
target = self._root / rel
|
|
1491
|
+
try:
|
|
1492
|
+
target.unlink()
|
|
1493
|
+
except OSError as exc:
|
|
1494
|
+
self._echo(f"[greenfield] implement-oracle: write-fence could not remove {rel} ({exc}).")
|
|
1495
|
+
|
|
1496
|
+
|
|
1256
1497
|
def _default_task_lister(project_root: Path) -> list[ImplementTaskRef]:
|
|
1257
1498
|
from codd.implementer import list_implement_tasks
|
|
1258
1499
|
|