codd-dev 2.25.0__tar.gz → 2.27.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.25.0 → codd_dev-2.27.0}/PKG-INFO +1 -1
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/__init__.py +1 -1
- codd_dev-2.27.0/codd/dependency_lock_coherence.py +447 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/greenfield/pipeline.py +335 -19
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/implement_oracle.py +199 -8
- codd_dev-2.27.0/codd/implement_oracle_scope.py +1106 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/project_types.py +165 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/pyproject.toml +1 -1
- {codd_dev-2.25.0 → codd_dev-2.27.0}/.gitignore +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/LICENSE +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/README.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/bench_fixture/README.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/__main__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/action_outcome.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/ai_invoke.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/ai_patch.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/artifact_contract.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/artifact_ids.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/assembler.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/bridge.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/capability_completeness.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/claude_cli.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/cli.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/clustering.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/confidence.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/config.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/config_schema.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/contracts.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/auto_repair.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/builder.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/impact.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/defaults.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployer.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/deployment/providers/verification/vitest.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/design_md.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/diff/apply.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/discovery.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/drift.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/e2e_generator.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/env_refs.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/extract_paths.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/extractor.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fix/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fix/design_updater.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fix/templates_loader.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fixer.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/frontmatter.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/generator.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/git_evidence.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/graph.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/greenfield/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/iac_nfr.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/implementer.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/import_coherence.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/inheritance.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/lexicon.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/measure.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/operational_e2e_audit.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/operations_derive.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/parsing/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/parsing/_shared.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/parsing/api_specs.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/parsing/iac.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/parsing/python_ast.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/parsing/schemas.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/parsing/treesitter.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/planner.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/policy.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/propagate.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/propagation_common.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/propagator.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/registry.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/history.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair/verify_runner.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/repair_slice.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/require.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/requirements_meta.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/restoration_report.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/restore.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/scanner.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/skills_cli/manager.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/skills_cli/paths.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/surface_reconciliation.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/synth.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/test_detection.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/test_import_coherence.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/traceability.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/validator.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/verifiable_behavior_audit.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/watch/events.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd/wiring.py +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/dogfood/README.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/examples/README.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.0}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-2.25.0 → codd_dev-2.27.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.27.0
|
|
4
4
|
Summary: CoDD: Coherence-Driven Development — cross-artifact change impact analysis
|
|
5
5
|
Project-URL: Homepage, https://github.com/yohey-w/codd-dev
|
|
6
6
|
Project-URL: Repository, https://github.com/yohey-w/codd-dev
|
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
"""Implement-end manifest↔lock coherence finalization (design:
|
|
2
|
+
/tmp/gpt_result_dep.txt, GPT-5.5 Pro consult 2026-06-15; verdict (b) primary +
|
|
3
|
+
(a) finalization + (c) forbidden).
|
|
4
|
+
|
|
5
|
+
WHAT
|
|
6
|
+
====
|
|
7
|
+
After the greenfield IMPLEMENT stage (the SUT has finished authoring source,
|
|
8
|
+
tests, AND ``package.json``) and BEFORE verify, this module:
|
|
9
|
+
|
|
10
|
+
1. RECONCILES the harness-owned test-toolchain dependency versions in the SUT's
|
|
11
|
+
manifest back to the profile's pins (verdict (b): vitest/typescript/
|
|
12
|
+
@types/node are the VERIFIER's tooling, not the app's business deps — the
|
|
13
|
+
harness recovers its OWN property; app/domain deps are never touched).
|
|
14
|
+
2. REFRESHES the lock deterministically to match the reconciled manifest
|
|
15
|
+
(verdict (a): ``npm install --package-lock-only`` updates ONLY
|
|
16
|
+
``package-lock.json``, no frozen check, no SUT feedback loop — a harness
|
|
17
|
+
FINALIZATION).
|
|
18
|
+
3. optionally MATERIALIZES node_modules with a FROZEN install (``npm ci``) so a
|
|
19
|
+
same-process implement-oracle typecheck has its deps against the now-coherent
|
|
20
|
+
lock.
|
|
21
|
+
|
|
22
|
+
WHY (the bug it closes)
|
|
23
|
+
=======================
|
|
24
|
+
verify's install preflight is a FROZEN install (``npm ci`` — see
|
|
25
|
+
``codd/repair/verify_runner.py`` + ``codd.project_types.node_install_command``).
|
|
26
|
+
That is CORRECT and stays (verdict (c): loosening ``npm ci`` → ``npm install``
|
|
27
|
+
would make verify a repair, not verification). The bug is that the SUT writes
|
|
28
|
+
``package.json`` with an OLD toolchain dep (``"vitest": "^1.6.0"``) while the
|
|
29
|
+
scaffold/gate install already produced a lock with the LATEST resolution
|
|
30
|
+
(``@vitest/expect@3.2.6``); ``npm ci`` then hard-fails on the lock↔manifest
|
|
31
|
+
mismatch. This module makes the manifest+lock COHERENT before verify, so the
|
|
32
|
+
frozen ``npm ci`` passes HONESTLY.
|
|
33
|
+
|
|
34
|
+
PROFILE-DRIVEN + GENERAL (design section D)
|
|
35
|
+
===========================================
|
|
36
|
+
This is the language-independent manifest↔lock coherence contract
|
|
37
|
+
(package-lock.json / uv.lock / poetry.lock / Cargo.lock / go.sum). The commands +
|
|
38
|
+
the reconcile RULE come from
|
|
39
|
+
:class:`codd.project_types.ToolchainDependencyProfile` on the stack's
|
|
40
|
+
:class:`~codd.project_types.LayoutProfile`. TS/npm is implemented now; Python/
|
|
41
|
+
Rust/Go are added as a profile entry + a reconcile-adapter entry here — never a
|
|
42
|
+
core edit. A stack whose profile declares ``toolchain_dependencies=None`` (Python
|
|
43
|
+
today) makes the whole finalization a strict NO-OP.
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
from __future__ import annotations
|
|
47
|
+
|
|
48
|
+
import json
|
|
49
|
+
import subprocess
|
|
50
|
+
from collections.abc import Callable, Mapping
|
|
51
|
+
from dataclasses import dataclass, field
|
|
52
|
+
from pathlib import Path
|
|
53
|
+
from typing import Any
|
|
54
|
+
|
|
55
|
+
from codd.project_types import (
|
|
56
|
+
LayoutProfile,
|
|
57
|
+
ToolchainDependency,
|
|
58
|
+
ToolchainDependencyProfile,
|
|
59
|
+
resolve_layout_profile,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
__all__ = [
|
|
64
|
+
"DependencyLockResult",
|
|
65
|
+
"finalize_dependency_lock_coherence",
|
|
66
|
+
"reconcile_manifest_toolchain_deps",
|
|
67
|
+
"resolve_toolchain_profile",
|
|
68
|
+
]
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
#: Lock refresh + materialize can pull a tree on a cold cache. Bounded; the same
|
|
72
|
+
#: magnitude verify's preflight + the implement-oracle install use (override via
|
|
73
|
+
#: ``implement.lock_refresh_timeout_seconds``).
|
|
74
|
+
DEFAULT_LOCK_REFRESH_TIMEOUT_SECONDS = 900.0
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
@dataclass
|
|
78
|
+
class DependencyLockResult:
|
|
79
|
+
"""Outcome of the implement-end manifest↔lock finalization.
|
|
80
|
+
|
|
81
|
+
``applied`` is True when the finalization actually ran for a stack that has a
|
|
82
|
+
toolchain profile (even if no dep needed changing — the lock was still
|
|
83
|
+
refreshed). ``skipped`` is True for a NO-OP (no toolchain profile, opted out,
|
|
84
|
+
or no manifest present). ``ok`` is False ONLY on a hard failure (a lock
|
|
85
|
+
refresh that exited non-zero / timed out) — an honest ``environment_build_error``
|
|
86
|
+
the caller surfaces.
|
|
87
|
+
"""
|
|
88
|
+
|
|
89
|
+
ok: bool = True
|
|
90
|
+
applied: bool = False
|
|
91
|
+
skipped: bool = False
|
|
92
|
+
reconciled: dict[str, tuple[str | None, str]] = field(default_factory=dict)
|
|
93
|
+
lock_refresh_command: str | None = None
|
|
94
|
+
materialize_command: str | None = None
|
|
95
|
+
detail: str = ""
|
|
96
|
+
|
|
97
|
+
@property
|
|
98
|
+
def reconciled_count(self) -> int:
|
|
99
|
+
return len(self.reconciled)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
# ── opt-out + timeout config ─────────────────────────────────
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def _opt_out(config: Mapping[str, Any] | None) -> bool:
|
|
106
|
+
"""``implement.dependency_lock_coherence: false`` — the explicit opt-out.
|
|
107
|
+
|
|
108
|
+
Default OFF (the finalization runs). Opting out re-opens the npm-ci-vs-lock
|
|
109
|
+
false-fail the contract closes, so it is never the default and never silent.
|
|
110
|
+
"""
|
|
111
|
+
section = (config or {}).get("implement") if isinstance(config, Mapping) else None
|
|
112
|
+
if isinstance(section, Mapping) and "dependency_lock_coherence" in section:
|
|
113
|
+
return section["dependency_lock_coherence"] is False
|
|
114
|
+
return False
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def _timeout_seconds(config: Mapping[str, Any] | None) -> float:
|
|
118
|
+
section = (config or {}).get("implement") if isinstance(config, Mapping) else None
|
|
119
|
+
if isinstance(section, Mapping):
|
|
120
|
+
raw = section.get("lock_refresh_timeout_seconds")
|
|
121
|
+
try:
|
|
122
|
+
value = float(raw)
|
|
123
|
+
if value > 0:
|
|
124
|
+
return value
|
|
125
|
+
except (TypeError, ValueError):
|
|
126
|
+
pass
|
|
127
|
+
return DEFAULT_LOCK_REFRESH_TIMEOUT_SECONDS
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
# ── resolution ───────────────────────────────────────────────
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def resolve_toolchain_profile(
|
|
134
|
+
project_root: Path,
|
|
135
|
+
*,
|
|
136
|
+
language: str | None,
|
|
137
|
+
project_name: str | None,
|
|
138
|
+
source_dirs: Any = None,
|
|
139
|
+
test_dirs: Any = None,
|
|
140
|
+
config: Mapping[str, Any] | None = None,
|
|
141
|
+
profile: LayoutProfile | None = None,
|
|
142
|
+
) -> tuple[LayoutProfile, ToolchainDependencyProfile] | None:
|
|
143
|
+
"""Resolve the (layout, toolchain) profiles for a stack, or ``None`` (NO-OP).
|
|
144
|
+
|
|
145
|
+
``None`` when: the gate is opted out, the stack has no layout profile, or the
|
|
146
|
+
profile declares no ``toolchain_dependencies`` (Python today). The caller
|
|
147
|
+
treats ``None`` as "this stack has no manifest↔lock contract — skip silently".
|
|
148
|
+
"""
|
|
149
|
+
if _opt_out(config):
|
|
150
|
+
return None
|
|
151
|
+
if profile is None:
|
|
152
|
+
profile = resolve_layout_profile(
|
|
153
|
+
language=language,
|
|
154
|
+
project_name=project_name,
|
|
155
|
+
source_dirs=source_dirs,
|
|
156
|
+
test_dirs=test_dirs,
|
|
157
|
+
config=config,
|
|
158
|
+
project_root=project_root,
|
|
159
|
+
)
|
|
160
|
+
if profile is None or profile.toolchain_dependencies is None:
|
|
161
|
+
return None
|
|
162
|
+
return profile, profile.toolchain_dependencies
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
# ── manifest reconciliation (npm adapter; the per-ecosystem seam) ──
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def reconcile_manifest_toolchain_deps(
|
|
169
|
+
project_root: Path,
|
|
170
|
+
toolchain: ToolchainDependencyProfile,
|
|
171
|
+
) -> dict[str, tuple[str | None, str]]:
|
|
172
|
+
"""Reconcile the SUT manifest's HARNESS-OWNED toolchain dep versions in place.
|
|
173
|
+
|
|
174
|
+
Dispatches on the manifest filename (the per-ecosystem seam). TS/npm
|
|
175
|
+
(``package.json``) is implemented now: every dep in ``toolchain.deps`` is
|
|
176
|
+
written into the dev/prod-deps section with EXACTLY the profile's version
|
|
177
|
+
spec — overriding a SUT-authored version (the incoherence we recover from) and
|
|
178
|
+
ADDING any the SUT omitted (the scaffold's scripts need them). The SUT's app/
|
|
179
|
+
domain deps are NEVER in ``toolchain.deps`` and are left byte-for-byte.
|
|
180
|
+
|
|
181
|
+
Returns ``{name: (old_spec_or_None, new_spec)}`` for every dep that CHANGED
|
|
182
|
+
(added or overridden); an empty dict means the manifest was already coherent.
|
|
183
|
+
A manifest that does not exist, or whose filename has no adapter, is a no-op
|
|
184
|
+
(returns ``{}``) — the caller still refreshes the lock so a stale lock from a
|
|
185
|
+
prior install is reconciled to whatever the manifest actually declares.
|
|
186
|
+
"""
|
|
187
|
+
manifest = project_root / toolchain.manifest_filename
|
|
188
|
+
if not manifest.is_file():
|
|
189
|
+
return {}
|
|
190
|
+
if toolchain.manifest_filename == "package.json":
|
|
191
|
+
return _reconcile_package_json(manifest, toolchain)
|
|
192
|
+
# No adapter for this manifest format yet (pyproject.toml / Cargo.toml are
|
|
193
|
+
# DEFERRED): do not guess an edit for a manifest we cannot reason about.
|
|
194
|
+
return {}
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def _reconcile_package_json(
|
|
198
|
+
manifest: Path,
|
|
199
|
+
toolchain: ToolchainDependencyProfile,
|
|
200
|
+
) -> dict[str, tuple[str | None, str]]:
|
|
201
|
+
"""npm adapter: force each harness-owned toolchain dep to the profile version.
|
|
202
|
+
|
|
203
|
+
Reads ``package.json`` as JSON (a non-JSON/unreadable manifest is left
|
|
204
|
+
untouched — the verify honesty/parse gates are the backstop). Each toolchain
|
|
205
|
+
dep is written to ``devDependencies`` (``dev=True``) or ``dependencies``,
|
|
206
|
+
de-duplicating: if the SUT placed the same dep in the OTHER section, that
|
|
207
|
+
stale entry is removed so the lock cannot resolve two ranges for one name.
|
|
208
|
+
Re-serializes with 2-space indent + trailing newline (matching the scaffold's
|
|
209
|
+
own ``package.json`` writes), preserving every other field and key order.
|
|
210
|
+
"""
|
|
211
|
+
try:
|
|
212
|
+
payload = json.loads(manifest.read_text(encoding="utf-8"))
|
|
213
|
+
except (OSError, json.JSONDecodeError):
|
|
214
|
+
return {}
|
|
215
|
+
if not isinstance(payload, dict):
|
|
216
|
+
return {}
|
|
217
|
+
|
|
218
|
+
changed: dict[str, tuple[str | None, str]] = {}
|
|
219
|
+
for dep in toolchain.deps:
|
|
220
|
+
old = _current_dep_spec(payload, dep.name)
|
|
221
|
+
if _apply_dep(payload, dep):
|
|
222
|
+
changed[dep.name] = (old, dep.version)
|
|
223
|
+
|
|
224
|
+
if changed:
|
|
225
|
+
manifest.write_text(json.dumps(payload, indent=2) + "\n", encoding="utf-8")
|
|
226
|
+
return changed
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
_DEP_SECTIONS = ("dependencies", "devDependencies")
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
def _current_dep_spec(payload: dict[str, Any], name: str) -> str | None:
|
|
233
|
+
"""The version spec the manifest currently declares for ``name`` (any section)."""
|
|
234
|
+
for section in _DEP_SECTIONS:
|
|
235
|
+
block = payload.get(section)
|
|
236
|
+
if isinstance(block, dict) and name in block:
|
|
237
|
+
return str(block.get(name))
|
|
238
|
+
return None
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
def _apply_dep(payload: dict[str, Any], dep: ToolchainDependency) -> bool:
|
|
242
|
+
"""Write ``dep`` at the profile's version into the correct section.
|
|
243
|
+
|
|
244
|
+
Returns True when the manifest CHANGED (the dep was absent, was at a different
|
|
245
|
+
version, or lived in the wrong section). Removes a same-named entry from the
|
|
246
|
+
other section so one toolchain dep never has two competing ranges.
|
|
247
|
+
"""
|
|
248
|
+
target_section = "devDependencies" if dep.dev else "dependencies"
|
|
249
|
+
other_section = "dependencies" if dep.dev else "devDependencies"
|
|
250
|
+
|
|
251
|
+
changed = False
|
|
252
|
+
|
|
253
|
+
# Drop a stale entry in the WRONG section (a SUT that put vitest in
|
|
254
|
+
# dependencies, say) so the refreshed lock resolves a single range.
|
|
255
|
+
other = payload.get(other_section)
|
|
256
|
+
if isinstance(other, dict) and dep.name in other:
|
|
257
|
+
del other[dep.name]
|
|
258
|
+
if not other:
|
|
259
|
+
del payload[other_section]
|
|
260
|
+
changed = True
|
|
261
|
+
|
|
262
|
+
block = payload.get(target_section)
|
|
263
|
+
if not isinstance(block, dict):
|
|
264
|
+
block = {}
|
|
265
|
+
payload[target_section] = block
|
|
266
|
+
if block.get(dep.name) != dep.version:
|
|
267
|
+
block[dep.name] = dep.version
|
|
268
|
+
changed = True
|
|
269
|
+
return changed
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
# ── lock refresh + materialization (deterministic finalization) ──
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
def _run(command: str, project_root: Path, timeout: float) -> subprocess.CompletedProcess[str] | None:
|
|
276
|
+
"""Run a finalization command from the project root; ``None`` on timeout."""
|
|
277
|
+
try:
|
|
278
|
+
return subprocess.run(
|
|
279
|
+
command,
|
|
280
|
+
shell=True,
|
|
281
|
+
cwd=project_root,
|
|
282
|
+
capture_output=True,
|
|
283
|
+
text=True,
|
|
284
|
+
timeout=timeout,
|
|
285
|
+
)
|
|
286
|
+
except subprocess.TimeoutExpired:
|
|
287
|
+
return None
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
def _output_tail(stdout: str | None, stderr: str | None, limit: int = 4000) -> str:
|
|
291
|
+
combined = "\n".join(part.strip() for part in (stdout, stderr) if part and part.strip())
|
|
292
|
+
if len(combined) <= limit:
|
|
293
|
+
return combined
|
|
294
|
+
return f"... (truncated) ...\n{combined[-limit:]}"
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
# ── public entry: the stage-level finalization ──
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
def finalize_dependency_lock_coherence(
|
|
301
|
+
project_root: Path | str,
|
|
302
|
+
*,
|
|
303
|
+
language: str | None,
|
|
304
|
+
project_name: str | None,
|
|
305
|
+
source_dirs: Any = None,
|
|
306
|
+
test_dirs: Any = None,
|
|
307
|
+
config: Mapping[str, Any] | None = None,
|
|
308
|
+
echo: Callable[[str], None] = print,
|
|
309
|
+
profile: LayoutProfile | None = None,
|
|
310
|
+
) -> DependencyLockResult:
|
|
311
|
+
"""Reconcile harness-owned toolchain deps + refresh the lock, at implement-end.
|
|
312
|
+
|
|
313
|
+
Sequence (TS/npm; profile-driven so other ecosystems slot in):
|
|
314
|
+
|
|
315
|
+
1. Resolve the stack's toolchain profile. None declared → a NO-OP
|
|
316
|
+
(``skipped=True``) so Python/bash are untouched.
|
|
317
|
+
2. RECONCILE the manifest's harness-owned toolchain dep versions to the
|
|
318
|
+
profile (verdict (b)). App/domain deps are never touched.
|
|
319
|
+
3. REFRESH the lock to match the reconciled manifest with the profile's
|
|
320
|
+
deterministic ``lock_refresh_command`` (``npm install
|
|
321
|
+
--package-lock-only`` — verdict (a)). A non-zero/timeout is an honest
|
|
322
|
+
``environment_build_error`` → ``ok=False``.
|
|
323
|
+
4. optionally MATERIALIZE node_modules with the FROZEN
|
|
324
|
+
``materialize_command`` (``npm ci``) so a same-process implement-oracle
|
|
325
|
+
typecheck has its deps against the now-coherent lock. A materialize
|
|
326
|
+
failure here is the SAME honest failure verify would report (the lock is
|
|
327
|
+
coherent, so this should succeed); surfaced as ``ok=False``.
|
|
328
|
+
|
|
329
|
+
verify's OWN install stays a FROZEN ``npm ci`` (verdict (c)) — this function
|
|
330
|
+
never touches that path; it only makes the lock MATCH first.
|
|
331
|
+
"""
|
|
332
|
+
root = Path(project_root)
|
|
333
|
+
resolved = resolve_toolchain_profile(
|
|
334
|
+
root,
|
|
335
|
+
language=language,
|
|
336
|
+
project_name=project_name,
|
|
337
|
+
source_dirs=source_dirs,
|
|
338
|
+
test_dirs=test_dirs,
|
|
339
|
+
config=config,
|
|
340
|
+
profile=profile,
|
|
341
|
+
)
|
|
342
|
+
if resolved is None:
|
|
343
|
+
return DependencyLockResult(
|
|
344
|
+
ok=True,
|
|
345
|
+
skipped=True,
|
|
346
|
+
detail=f"no manifest↔lock toolchain contract for language {language!r} (skipped)",
|
|
347
|
+
)
|
|
348
|
+
_profile, toolchain = resolved
|
|
349
|
+
|
|
350
|
+
manifest = root / toolchain.manifest_filename
|
|
351
|
+
if not manifest.is_file():
|
|
352
|
+
# No manifest authored (an unusual node build, or implement produced none):
|
|
353
|
+
# nothing to reconcile and no lock to anchor — skip, never fail.
|
|
354
|
+
return DependencyLockResult(
|
|
355
|
+
ok=True,
|
|
356
|
+
skipped=True,
|
|
357
|
+
detail=f"no {toolchain.manifest_filename} present; manifest↔lock finalization skipped",
|
|
358
|
+
)
|
|
359
|
+
|
|
360
|
+
# 2. Reconcile harness-owned toolchain dep versions (verdict (b)).
|
|
361
|
+
reconciled = reconcile_manifest_toolchain_deps(root, toolchain)
|
|
362
|
+
if reconciled:
|
|
363
|
+
summary = ", ".join(
|
|
364
|
+
f"{name}: {old or '<absent>'} → {new}" for name, (old, new) in sorted(reconciled.items())
|
|
365
|
+
)
|
|
366
|
+
echo(
|
|
367
|
+
f"[greenfield] dependency-lock: reconciled {len(reconciled)} harness-owned "
|
|
368
|
+
f"toolchain dep(s) in {toolchain.manifest_filename} ({summary})"
|
|
369
|
+
)
|
|
370
|
+
else:
|
|
371
|
+
echo(
|
|
372
|
+
f"[greenfield] dependency-lock: toolchain deps in {toolchain.manifest_filename} "
|
|
373
|
+
"already at profile versions"
|
|
374
|
+
)
|
|
375
|
+
|
|
376
|
+
timeout = _timeout_seconds(config)
|
|
377
|
+
|
|
378
|
+
# 3. Refresh the lock to match the reconciled manifest (verdict (a)).
|
|
379
|
+
refresh_cmd = toolchain.lock_refresh_command
|
|
380
|
+
completed = _run(refresh_cmd, root, timeout)
|
|
381
|
+
if completed is None:
|
|
382
|
+
detail = f"lock refresh timed out after {timeout:g}s: {refresh_cmd}"
|
|
383
|
+
echo(f"[greenfield] dependency-lock: {detail}")
|
|
384
|
+
return DependencyLockResult(
|
|
385
|
+
ok=False,
|
|
386
|
+
applied=True,
|
|
387
|
+
reconciled=reconciled,
|
|
388
|
+
lock_refresh_command=refresh_cmd,
|
|
389
|
+
detail=detail,
|
|
390
|
+
)
|
|
391
|
+
if completed.returncode != 0:
|
|
392
|
+
tail = _output_tail(completed.stdout, completed.stderr)
|
|
393
|
+
detail = f"lock refresh failed (exit {completed.returncode}): {refresh_cmd}\n{tail}".rstrip()
|
|
394
|
+
echo(f"[greenfield] dependency-lock: {detail}")
|
|
395
|
+
return DependencyLockResult(
|
|
396
|
+
ok=False,
|
|
397
|
+
applied=True,
|
|
398
|
+
reconciled=reconciled,
|
|
399
|
+
lock_refresh_command=refresh_cmd,
|
|
400
|
+
detail=detail,
|
|
401
|
+
)
|
|
402
|
+
echo(f"[greenfield] dependency-lock: lock refreshed to match manifest ({refresh_cmd})")
|
|
403
|
+
|
|
404
|
+
# 4. Optionally materialize node_modules with a FROZEN install so a
|
|
405
|
+
# same-process implement-oracle typecheck has its deps (verdict: keep frozen).
|
|
406
|
+
materialize_cmd = toolchain.materialize_command
|
|
407
|
+
if materialize_cmd:
|
|
408
|
+
completed = _run(materialize_cmd, root, timeout)
|
|
409
|
+
if completed is None:
|
|
410
|
+
detail = f"dependency materialize timed out after {timeout:g}s: {materialize_cmd}"
|
|
411
|
+
echo(f"[greenfield] dependency-lock: {detail}")
|
|
412
|
+
return DependencyLockResult(
|
|
413
|
+
ok=False,
|
|
414
|
+
applied=True,
|
|
415
|
+
reconciled=reconciled,
|
|
416
|
+
lock_refresh_command=refresh_cmd,
|
|
417
|
+
materialize_command=materialize_cmd,
|
|
418
|
+
detail=detail,
|
|
419
|
+
)
|
|
420
|
+
if completed.returncode != 0:
|
|
421
|
+
tail = _output_tail(completed.stdout, completed.stderr)
|
|
422
|
+
detail = (
|
|
423
|
+
f"dependency materialize failed (exit {completed.returncode}): "
|
|
424
|
+
f"{materialize_cmd}\n{tail}"
|
|
425
|
+
).rstrip()
|
|
426
|
+
echo(f"[greenfield] dependency-lock: {detail}")
|
|
427
|
+
return DependencyLockResult(
|
|
428
|
+
ok=False,
|
|
429
|
+
applied=True,
|
|
430
|
+
reconciled=reconciled,
|
|
431
|
+
lock_refresh_command=refresh_cmd,
|
|
432
|
+
materialize_command=materialize_cmd,
|
|
433
|
+
detail=detail,
|
|
434
|
+
)
|
|
435
|
+
echo(f"[greenfield] dependency-lock: node_modules materialized (frozen: {materialize_cmd})")
|
|
436
|
+
|
|
437
|
+
return DependencyLockResult(
|
|
438
|
+
ok=True,
|
|
439
|
+
applied=True,
|
|
440
|
+
reconciled=reconciled,
|
|
441
|
+
lock_refresh_command=refresh_cmd,
|
|
442
|
+
materialize_command=materialize_cmd,
|
|
443
|
+
detail=(
|
|
444
|
+
f"reconciled {len(reconciled)} toolchain dep(s); lock refreshed via {refresh_cmd}"
|
|
445
|
+
+ (f"; materialized via {materialize_cmd}" if materialize_cmd else "")
|
|
446
|
+
),
|
|
447
|
+
)
|