codd-dev 2.89.0__tar.gz → 2.91.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.89.0 → codd_dev-2.91.0}/PKG-INFO +1 -1
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/__init__.py +1 -1
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/cli.py +63 -6
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/greenfield/pipeline.py +165 -5
- codd_dev-2.91.0/codd/stack/command_plan.py +385 -0
- codd_dev-2.91.0/codd/stack/lock.py +366 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/pyproject.toml +1 -1
- codd_dev-2.89.0/codd/stack/lock.py +0 -133
- {codd_dev-2.89.0 → codd_dev-2.91.0}/.gitignore +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/LICENSE +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/README.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/bench_fixture/README.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/__main__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/action_outcome.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/ai_invoke.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/ai_patch.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/artifact_contract.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/artifact_ids.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/assembler.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/bridge.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/capability_completeness.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/claude_cli.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/clustering.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/confidence.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/config.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/config_schema.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/contracts.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/contracts_registry/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/contracts_registry/__main__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/contracts_registry/certify.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/contracts_registry/generate_matrix.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/contracts_registry/registry.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/coverage_execution_coherence.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/auto_repair.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/builder.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/impact.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/defaults.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/dependency_lock_coherence.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployer.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/verification/pytest_http.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/deployment/providers/verification/vitest.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/design_md.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/diff/apply.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/discovery.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/drift.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/e2e_generator.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/e2e_harness.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/env_refs.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/extract_paths.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/extractor.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fix/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fix/design_updater.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fix/templates_loader.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fixer.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/frontmatter.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/generator.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/git_evidence.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/graph.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/greenfield/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/iac_nfr.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/implement_oracle.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/implement_oracle_scope.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/implement_oracle_types.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/implementer.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/import_coherence.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/inheritance.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/adapters/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/adapters/implement_oracle.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/adapters/oracle_go.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/adapters/oracle_python.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/adapters/oracle_typescript.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/adapters/runner_report.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/builtin_adapters.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/compat.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/contract.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/loader.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/oracle_executor.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/path_planner.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/profile.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/profiles/go.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/profiles/python.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/profiles/typescript.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/registry.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/verify_executor.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/languages/verify_plan.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/lexicon.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/measure.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/operational_e2e_audit.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/operations_derive.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/parsing/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/parsing/_shared.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/parsing/api_specs.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/parsing/extractor_registry.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/parsing/iac.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/parsing/python_ast.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/parsing/regex_strategies.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/parsing/schemas.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/parsing/treesitter.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/planner.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/policy.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/project_types.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/propagate.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/propagation_common.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/propagator.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/reference_resolution.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/registry.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/history.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair/verify_runner.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/repair_slice.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/require.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/requirements_meta.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/restoration_report.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/restore.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/scanner.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/skills_cli/manager.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/skills_cli/paths.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/adapters/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/adapters/_base.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/adapters/nextjs.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/adapters/playwright.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/compose.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/loader.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/obligations.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/profile.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/project.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/registry.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/stack/resolve.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/surface_reconciliation.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/synth.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/test_detection.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/test_import_coherence.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/traceability.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/validator.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/vb_marker_authenticity.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/vb_rerun_scope.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/verifiable_behavior_audit.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/watch/events.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd/wiring.py +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/dogfood/README.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/examples/README.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.0}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-2.89.0 → codd_dev-2.91.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.91.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
|
|
@@ -5023,11 +5023,13 @@ def verify(
|
|
|
5023
5023
|
if not runtime:
|
|
5024
5024
|
return
|
|
5025
5025
|
|
|
5026
|
-
# Stack contract intake (Contract Kernel v2.77a) —
|
|
5027
|
-
# framework-stack contract into the live verify
|
|
5028
|
-
#
|
|
5029
|
-
#
|
|
5030
|
-
#
|
|
5026
|
+
# Stack contract intake + lock enforcement (Contract Kernel v2.77a/v2.77b) —
|
|
5027
|
+
# bring the project's declared framework-stack contract into the live verify
|
|
5028
|
+
# run's trace (v2.77a, mirroring the greenfield intake), then ENFORCE the stack
|
|
5029
|
+
# lock as a gate (v2.77b): a stack project whose committed lock has drifted from
|
|
5030
|
+
# the resolved contract — or that has no committed lock at all — is RED. A
|
|
5031
|
+
# project with no `stack:` block is unaffected; a declared-but-broken stack
|
|
5032
|
+
# fails HONESTLY (anti-false-green), never a silent skip.
|
|
5031
5033
|
_intake_stack_contract_for_verify(Path(path).resolve())
|
|
5032
5034
|
|
|
5033
5035
|
verify_kwargs: dict[str, Any] = {"path": path, "prefer_standalone": True}
|
|
@@ -7598,7 +7600,7 @@ def _load_optional_project_config(project_root: Path) -> dict[str, Any]:
|
|
|
7598
7600
|
return {}
|
|
7599
7601
|
|
|
7600
7602
|
|
|
7601
|
-
def _intake_stack_contract_for_verify(project_root: Path) -> None:
|
|
7603
|
+
def _intake_stack_contract_for_verify(project_root: Path, *, stack_command_executor=None) -> None:
|
|
7602
7604
|
"""Resolve the project's declared stack contract into the verify run trace.
|
|
7603
7605
|
|
|
7604
7606
|
Contract Kernel v2.77a (intake only) — the verify-path mirror of the greenfield
|
|
@@ -7607,6 +7609,11 @@ def _intake_stack_contract_for_verify(project_root: Path) -> None:
|
|
|
7607
7609
|
the run trace), WITHOUT enforcing any obligation or changing the verify verdict
|
|
7608
7610
|
(obligation enforcement is v2.77b-e).
|
|
7609
7611
|
|
|
7612
|
+
``stack_command_executor`` is the v2.77c materialization seam (default: the real
|
|
7613
|
+
subprocess executor): an injectable executor that invokes each composed stack
|
|
7614
|
+
command slot (exit-code only). Tests pass a recording/sentinel executor so the
|
|
7615
|
+
declared slots are provably invoked without real Next.js/Playwright.
|
|
7616
|
+
|
|
7610
7617
|
* No ``stack:`` block → no-op (the opt-in framework layer is unused; the vast
|
|
7611
7618
|
majority of projects — emits a single trace line, no behaviour change).
|
|
7612
7619
|
* A declared stack → its ``stack_contract_hash`` is echoed to the run trace.
|
|
@@ -7627,6 +7634,15 @@ def _intake_stack_contract_for_verify(project_root: Path) -> None:
|
|
|
7627
7634
|
raise SystemExit(1) from exc
|
|
7628
7635
|
|
|
7629
7636
|
if contract is None:
|
|
7637
|
+
# No `stack:` block → byte-identical, UNLESS a committed lock still exists
|
|
7638
|
+
# (a removed stack declaration on a still-pinned project = RED; closes the
|
|
7639
|
+
# "drop stack: to dodge the gate" bypass — v2.77b anti-false-green).
|
|
7640
|
+
from codd.stack.lock import orphan_stack_lock
|
|
7641
|
+
|
|
7642
|
+
orphan = orphan_stack_lock(project_root)
|
|
7643
|
+
if orphan is not None and orphan.red:
|
|
7644
|
+
click.echo(f"[verify] stack lock gate: {orphan.message}", err=True)
|
|
7645
|
+
raise SystemExit(1)
|
|
7630
7646
|
return
|
|
7631
7647
|
trace = stack_contract_trace(contract)
|
|
7632
7648
|
click.echo(
|
|
@@ -7634,6 +7650,47 @@ def _intake_stack_contract_for_verify(project_root: Path) -> None:
|
|
|
7634
7650
|
f"stack_contract_hash={trace['stack_contract_hash']}"
|
|
7635
7651
|
)
|
|
7636
7652
|
|
|
7653
|
+
# Stack lock ENFORCEMENT (Contract Kernel v2.77b) — verify is always an
|
|
7654
|
+
# enforcement context (it never CREATES a project), so it uses the strictly
|
|
7655
|
+
# READ-ONLY gate: a stack project with no committed lock, or a lock that has
|
|
7656
|
+
# drifted from (or cannot be parsed against) the resolved contract, is RED
|
|
7657
|
+
# (honest non-zero exit). The gate never writes or refreshes the lock, so a
|
|
7658
|
+
# drift cannot be silenced on the verify path.
|
|
7659
|
+
from codd.stack.lock import enforce_stack_lock
|
|
7660
|
+
|
|
7661
|
+
gate = enforce_stack_lock(contract, project_root)
|
|
7662
|
+
click.echo(f"[verify] stack lock gate: {gate.message}", err=gate.red)
|
|
7663
|
+
if gate.red:
|
|
7664
|
+
raise SystemExit(1)
|
|
7665
|
+
|
|
7666
|
+
# Stack command MATERIALIZATION (Contract Kernel v2.77c) — the verify-path mirror
|
|
7667
|
+
# of the greenfield pipeline's :meth:`_materialize_stack_commands`. (1) CONFLICT
|
|
7668
|
+
# GATE: a composition conflict (command collision / unproved replace / weakened
|
|
7669
|
+
# obligation / exclusive / deny) is RED (honest non-zero exit) — the composer
|
|
7670
|
+
# already refuses a silent last-wins merge by recording a Conflict; this makes it
|
|
7671
|
+
# a gate. (2) PLAN + EXECUTE: build a deterministic, contract-driven command plan
|
|
7672
|
+
# (NO framework literal) and INVOKE each composed slot by exit code, so a declared
|
|
7673
|
+
# framework_build/e2e_test is genuinely run on verify (not silently skipped while
|
|
7674
|
+
# the language verify greens alone). Exit-code ONLY here; command AUTHENTICITY is
|
|
7675
|
+
# v2.77d and the obligation-checker gate is v2.77e (out of lane).
|
|
7676
|
+
from codd.stack.command_plan import (
|
|
7677
|
+
StackCommandMaterializationError,
|
|
7678
|
+
StackContractConflictError,
|
|
7679
|
+
materialize_stack_command_plan,
|
|
7680
|
+
)
|
|
7681
|
+
|
|
7682
|
+
try:
|
|
7683
|
+
plan, _result = materialize_stack_command_plan(
|
|
7684
|
+
contract, project_root, executor=stack_command_executor
|
|
7685
|
+
)
|
|
7686
|
+
except (StackContractConflictError, StackCommandMaterializationError) as exc:
|
|
7687
|
+
click.echo(f"[verify] stack command materialization: {exc}", err=True)
|
|
7688
|
+
raise SystemExit(1) from exc
|
|
7689
|
+
click.echo(
|
|
7690
|
+
f"[verify] stack command materialization: {len(plan.slots)} slot(s) invoked "
|
|
7691
|
+
f"({', '.join(plan.command_ids)})"
|
|
7692
|
+
)
|
|
7693
|
+
|
|
7637
7694
|
|
|
7638
7695
|
def _run_verify_once(
|
|
7639
7696
|
path: str,
|
|
@@ -313,6 +313,11 @@ CiScaffoldRunner = Callable[..., str]
|
|
|
313
313
|
PropagateRunner = Callable[..., str]
|
|
314
314
|
CheckRunner = Callable[[Path], str]
|
|
315
315
|
Notifier = Callable[[str, str], bool]
|
|
316
|
+
#: Injectable seam for the v2.77c stack-command materialization executor (a slot →
|
|
317
|
+
#: exit-code outcome). Default (None) uses the real subprocess executor in
|
|
318
|
+
#: ``codd.stack.command_plan``; tests inject a recording/sentinel executor so the
|
|
319
|
+
#: declared stack command slots are provably invoked without real Next.js/Playwright.
|
|
320
|
+
StackCommandExecutor = Callable[..., Any]
|
|
316
321
|
|
|
317
322
|
|
|
318
323
|
class GreenfieldPipeline:
|
|
@@ -351,6 +356,7 @@ class GreenfieldPipeline:
|
|
|
351
356
|
propagate_runner: PropagateRunner | None = None,
|
|
352
357
|
check_runner: CheckRunner | None = None,
|
|
353
358
|
notifier: Notifier | None = None,
|
|
359
|
+
stack_command_executor: StackCommandExecutor | None = None,
|
|
354
360
|
echo: Callable[[str], None] = print,
|
|
355
361
|
) -> None:
|
|
356
362
|
self.project_name = project_name
|
|
@@ -380,6 +386,7 @@ class GreenfieldPipeline:
|
|
|
380
386
|
self.propagate_runner = propagate_runner
|
|
381
387
|
self.check_runner = check_runner
|
|
382
388
|
self.notifier = notifier
|
|
389
|
+
self.stack_command_executor = stack_command_executor
|
|
383
390
|
self.echo = echo
|
|
384
391
|
|
|
385
392
|
def _restore_session_options(self, session: dict[str, Any]) -> None:
|
|
@@ -452,14 +459,80 @@ class GreenfieldPipeline:
|
|
|
452
459
|
# failed GreenfieldResult instead of raising to the caller. Its own
|
|
453
460
|
# pseudo-stage name (not a real STAGES entry) so the failure is attributed
|
|
454
461
|
# honestly to intake, not to ``init``.
|
|
462
|
+
# Whether THIS run is a genuine first generation (the project is being
|
|
463
|
+
# created now) vs a re-run/resume of an already-progressed project. This is
|
|
464
|
+
# the ONLY context in which the stack-lock gate may bootstrap a missing lock
|
|
465
|
+
# (anti-gaming). It is read from the ON-DISK session INDEPENDENTLY of the
|
|
466
|
+
# ``resume`` flag — because a re-run WITHOUT ``--resume`` builds a fresh
|
|
467
|
+
# in-memory ``session`` (all-pending), which must NOT be mistaken for a first
|
|
468
|
+
# generation on an already-built project (GPT-consult leak: "absence of
|
|
469
|
+
# session ≠ first generation"). Fail-closed: any persisted completed stage ⇒
|
|
470
|
+
# not first-gen, so a deleted lock on a built project is RED, never silently
|
|
471
|
+
# re-bootstrapped to green.
|
|
472
|
+
on_disk = load_session(project_root)
|
|
473
|
+
first_generation = on_disk is None or not any(
|
|
474
|
+
rec.get("status") in _COMPLETE_STATUSES
|
|
475
|
+
for rec in on_disk.get("stages", {}).values()
|
|
476
|
+
)
|
|
477
|
+
|
|
455
478
|
try:
|
|
456
|
-
self._intake_stack_contract(project_root, session)
|
|
479
|
+
contract = self._intake_stack_contract(project_root, session)
|
|
457
480
|
except StageError as exc:
|
|
458
481
|
return self._fail(
|
|
459
482
|
project_root, session, options, "stack_intake",
|
|
460
483
|
{"status": STATUS_PENDING, "detail": ""}, str(exc),
|
|
461
484
|
)
|
|
462
485
|
|
|
486
|
+
# Stack lock ENFORCEMENT (Contract Kernel v2.77b) — turn the already-live
|
|
487
|
+
# stack contract into a red/green GATE. For stack-declared projects
|
|
488
|
+
# (contract is not None): drift / missing-in-resume = RED (anti-false-green);
|
|
489
|
+
# a first-generation missing lock is bootstrapped once (never overwritten —
|
|
490
|
+
# anti-gaming). For projects with NO stack block: byte-identical UNLESS a
|
|
491
|
+
# committed lock still exists (a removed declaration on a still-pinned
|
|
492
|
+
# project = RED, closing the "drop stack: to dodge the gate" bypass).
|
|
493
|
+
# Routed through _fail like intake so the autopilot reports it honestly.
|
|
494
|
+
try:
|
|
495
|
+
if contract is not None:
|
|
496
|
+
self._enforce_stack_lock(project_root, session, contract, first_generation)
|
|
497
|
+
else:
|
|
498
|
+
from codd.stack.lock import orphan_stack_lock
|
|
499
|
+
|
|
500
|
+
orphan = orphan_stack_lock(project_root)
|
|
501
|
+
if orphan is not None and orphan.red:
|
|
502
|
+
self.echo(f"[greenfield] stack lock gate: {orphan.message}")
|
|
503
|
+
raise StageError(orphan.message)
|
|
504
|
+
except StageError as exc:
|
|
505
|
+
return self._fail(
|
|
506
|
+
project_root, session, options, "stack_lock",
|
|
507
|
+
{"status": STATUS_PENDING, "detail": ""}, str(exc),
|
|
508
|
+
)
|
|
509
|
+
|
|
510
|
+
# Stack command MATERIALIZATION (Contract Kernel v2.77c) — connect the
|
|
511
|
+
# composed stack commands (and thus the stack obligations) to the run's
|
|
512
|
+
# ACTUAL verify/build/test command plan. Two parts (both RED-routed through
|
|
513
|
+
# _fail, like intake/lock):
|
|
514
|
+
# 1. CONFLICT GATE — a composition conflict (command collision / unproved
|
|
515
|
+
# replace / weakened obligation / exclusive / deny) is RED. The composer
|
|
516
|
+
# already records these (it refuses last-wins); this makes that a gate.
|
|
517
|
+
# 2. PLAN + EXECUTE — build a deterministic, contract-driven command plan
|
|
518
|
+
# from contract.commands (NO framework literal) and INVOKE each slot by
|
|
519
|
+
# exit code, so a declared framework_build/e2e_test is genuinely run (not
|
|
520
|
+
# silently skipped while the language verify greens alone — the false
|
|
521
|
+
# green this step closes). Exit-code ONLY here; command AUTHENTICITY
|
|
522
|
+
# (no-op/"build":"true"/observed-no-tests) is v2.77d and the obligation-
|
|
523
|
+
# checker gate is v2.77e — both deliberately out of lane.
|
|
524
|
+
# Only for stack-declared projects (contract is not None) — a non-stack run
|
|
525
|
+
# never reaches here, so it is byte-identical (no plan, no execution, no new
|
|
526
|
+
# trace keys).
|
|
527
|
+
try:
|
|
528
|
+
if contract is not None:
|
|
529
|
+
self._materialize_stack_commands(project_root, session, contract)
|
|
530
|
+
except StageError as exc:
|
|
531
|
+
return self._fail(
|
|
532
|
+
project_root, session, options, "stack_commands",
|
|
533
|
+
{"status": STATUS_PENDING, "detail": ""}, str(exc),
|
|
534
|
+
)
|
|
535
|
+
|
|
463
536
|
runners: dict[str, Callable[[Path, dict[str, Any], dict[str, Any]], None]] = {
|
|
464
537
|
"init": self._stage_init,
|
|
465
538
|
"elicit": self._stage_elicit,
|
|
@@ -544,7 +617,7 @@ class GreenfieldPipeline:
|
|
|
544
617
|
|
|
545
618
|
# ── stack contract intake (Contract Kernel v2.77a, intake only) ──
|
|
546
619
|
|
|
547
|
-
def _intake_stack_contract(self, project_root: Path, session: dict[str, Any])
|
|
620
|
+
def _intake_stack_contract(self, project_root: Path, session: dict[str, Any]):
|
|
548
621
|
"""Resolve the project's declared stack contract into the live run record + trace.
|
|
549
622
|
|
|
550
623
|
See the call site in :meth:`run`. INTAKE ONLY — proves the framework-stack
|
|
@@ -554,10 +627,11 @@ class GreenfieldPipeline:
|
|
|
554
627
|
|
|
555
628
|
* No ``stack:`` block → no-op: nothing is added to the record and only a
|
|
556
629
|
single debug ``self.echo`` is emitted, so a non-stack project (the vast
|
|
557
|
-
majority) is behaviour-preserving.
|
|
630
|
+
majority) is behaviour-preserving. Returns ``None``.
|
|
558
631
|
* A declared stack → its :func:`stack_contract_trace` payload (incl.
|
|
559
632
|
``stack_contract_hash``) is written to ``session["stack_contract"]`` and
|
|
560
|
-
echoed to the run trace.
|
|
633
|
+
echoed to the run trace. Returns the resolved ``ResolvedStackContract`` so
|
|
634
|
+
the v2.77b lock-enforcement gate (run after intake) can pin it.
|
|
561
635
|
* A declared-but-BROKEN stack → :class:`StageError` (honest error), never a
|
|
562
636
|
silent skip (anti-false-green / no-silent-fallback).
|
|
563
637
|
"""
|
|
@@ -577,7 +651,7 @@ class GreenfieldPipeline:
|
|
|
577
651
|
if contract is None:
|
|
578
652
|
# The opt-in framework layer is unused — byte-identical behaviour.
|
|
579
653
|
self.echo("[greenfield] stack contract intake: no `stack:` block (framework layer opt-out)")
|
|
580
|
-
return
|
|
654
|
+
return None
|
|
581
655
|
|
|
582
656
|
trace = stack_contract_trace(contract)
|
|
583
657
|
session["stack_contract"] = dict(trace)
|
|
@@ -586,6 +660,92 @@ class GreenfieldPipeline:
|
|
|
586
660
|
f"{trace['resolved_stack_id']} "
|
|
587
661
|
f"stack_contract_hash={trace['stack_contract_hash']}"
|
|
588
662
|
)
|
|
663
|
+
return contract
|
|
664
|
+
|
|
665
|
+
# ── stack lock enforcement (Contract Kernel v2.77b) ──
|
|
666
|
+
|
|
667
|
+
def _enforce_stack_lock(self, project_root: Path, session: dict[str, Any], contract, first_generation: bool) -> None:
|
|
668
|
+
"""Enforce the project's stack lock as a red/green gate (v2.77b).
|
|
669
|
+
|
|
670
|
+
Only called for stack-declared projects (``contract is not None``); non-stack
|
|
671
|
+
projects never reach here, so they are byte-identical (no lock gate at all).
|
|
672
|
+
|
|
673
|
+
Design B′ (split read-only gate vs. creation-path bootstrap):
|
|
674
|
+
|
|
675
|
+
* genuine FIRST GENERATION (``first_generation`` True — no prior completed
|
|
676
|
+
stage) → :func:`bootstrap_stack_lock` writes the first lock (exclusive
|
|
677
|
+
create) and immediately enforces it read-only; ``generated`` is traced.
|
|
678
|
+
* otherwise (RESUME / already-progressed project) → read-only
|
|
679
|
+
:func:`enforce_stack_lock`: a missing lock is RED (an already-progressed
|
|
680
|
+
stack project with no committed pin is unverifiable; a deleted lock cannot
|
|
681
|
+
be silently regenerated), drift is RED, a valid lock is GREEN.
|
|
682
|
+
|
|
683
|
+
Anti-gaming (exit gate 3): the read-only gate NEVER writes/refreshes a lock;
|
|
684
|
+
``bootstrap_stack_lock`` writes only when the lock is ABSENT (exclusive
|
|
685
|
+
create) on this creation path, so a drift cannot be silenced by regenerating
|
|
686
|
+
the lock. See :func:`enforce_stack_lock` / :func:`bootstrap_stack_lock`.
|
|
687
|
+
"""
|
|
688
|
+
from codd.stack.lock import bootstrap_stack_lock, enforce_stack_lock
|
|
689
|
+
|
|
690
|
+
if first_generation:
|
|
691
|
+
gate = bootstrap_stack_lock(contract, project_root)
|
|
692
|
+
else:
|
|
693
|
+
gate = enforce_stack_lock(contract, project_root)
|
|
694
|
+
# Record the lock verdict in the run trace (observable, like the intake hash).
|
|
695
|
+
record = session.get("stack_contract")
|
|
696
|
+
if isinstance(record, dict):
|
|
697
|
+
record["stack_lock_status"] = gate.status
|
|
698
|
+
record["stack_lock_path"] = gate.lock_path
|
|
699
|
+
self.echo(f"[greenfield] stack lock gate: {gate.message}")
|
|
700
|
+
if gate.red:
|
|
701
|
+
raise StageError(gate.message)
|
|
702
|
+
|
|
703
|
+
# ── stack command materialization (Contract Kernel v2.77c) ──
|
|
704
|
+
|
|
705
|
+
def _materialize_stack_commands(self, project_root: Path, session: dict[str, Any], contract) -> None:
|
|
706
|
+
"""Conflict-gate + materialize the composed stack commands into the run plan (v2.77c).
|
|
707
|
+
|
|
708
|
+
See the call site in :meth:`run`. Only invoked for stack-declared projects.
|
|
709
|
+
|
|
710
|
+
1. CONFLICT GATE — :func:`assert_stack_contract_clean` (inside
|
|
711
|
+
:func:`stack_command_plan`) raises :class:`StackContractConflictError` on
|
|
712
|
+
ANY composition conflict (command collision / unproved replace / weakened
|
|
713
|
+
obligation / exclusive / deny). That is RED — the composer already refuses
|
|
714
|
+
a silent last-wins merge by recording a ``Conflict``; this makes it a gate.
|
|
715
|
+
2. MATERIALIZE — build a deterministic, contract-driven command plan and
|
|
716
|
+
INVOKE each composed slot by exit code (via the injectable
|
|
717
|
+
``stack_command_executor`` seam). A failing slot raises
|
|
718
|
+
:class:`StackCommandMaterializationError`. Both domain errors become a
|
|
719
|
+
:class:`StageError` so the autopilot reports them honestly (the run does
|
|
720
|
+
NOT advance to the stage loop with a conflicted/failing stack plan).
|
|
721
|
+
|
|
722
|
+
The materialized plan + executed slot ids are recorded in the run trace
|
|
723
|
+
(observable, like the intake hash + lock verdict) so "the declared stack
|
|
724
|
+
command slots were invoked" is provable. Exit-code only — authenticity is
|
|
725
|
+
v2.77d, the obligation-checker gate is v2.77e.
|
|
726
|
+
"""
|
|
727
|
+
from codd.stack.command_plan import (
|
|
728
|
+
StackCommandMaterializationError,
|
|
729
|
+
StackContractConflictError,
|
|
730
|
+
materialize_stack_command_plan,
|
|
731
|
+
)
|
|
732
|
+
|
|
733
|
+
try:
|
|
734
|
+
plan, result = materialize_stack_command_plan(
|
|
735
|
+
contract, project_root, executor=self.stack_command_executor
|
|
736
|
+
)
|
|
737
|
+
except (StackContractConflictError, StackCommandMaterializationError) as exc:
|
|
738
|
+
self.echo(f"[greenfield] stack command materialization: {exc}")
|
|
739
|
+
raise StageError(str(exc)) from exc
|
|
740
|
+
|
|
741
|
+
record = session.get("stack_contract")
|
|
742
|
+
if isinstance(record, dict):
|
|
743
|
+
record["stack_command_plan"] = plan.to_record()
|
|
744
|
+
record["stack_commands_executed"] = list(result.executed_slot_ids)
|
|
745
|
+
self.echo(
|
|
746
|
+
"[greenfield] stack command materialization: "
|
|
747
|
+
f"{len(plan.slots)} slot(s) invoked ({', '.join(plan.command_ids)})"
|
|
748
|
+
)
|
|
589
749
|
|
|
590
750
|
# ── option resolution ───────────────────────────────────
|
|
591
751
|
|