codd-dev 2.87.0__tar.gz → 2.89.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.87.0 → codd_dev-2.89.0}/PKG-INFO +1 -1
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/__init__.py +1 -1
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/cli.py +44 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/e2e_harness.py +6 -1
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/greenfield/pipeline.py +65 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/implementer.py +38 -4
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/parsing/regex_strategies.py +93 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair_slice.py +36 -20
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/project.py +42 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/vb_marker_authenticity.py +17 -1
- {codd_dev-2.87.0 → codd_dev-2.89.0}/pyproject.toml +1 -1
- {codd_dev-2.87.0 → codd_dev-2.89.0}/.gitignore +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/LICENSE +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/README.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/bench_fixture/README.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/__main__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/action_outcome.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/ai_invoke.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/ai_patch.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/artifact_contract.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/artifact_ids.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/assembler.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/bridge.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/capability_completeness.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/claude_cli.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/clustering.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/confidence.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/config.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/config_schema.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/contracts.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/contracts_registry/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/contracts_registry/__main__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/contracts_registry/certify.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/contracts_registry/generate_matrix.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/contracts_registry/registry.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/coverage_execution_coherence.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/auto_repair.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/builder.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/impact.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/defaults.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/dependency_lock_coherence.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployer.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/verification/pytest_http.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/deployment/providers/verification/vitest.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/design_md.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/diff/apply.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/discovery.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/drift.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/e2e_generator.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/env_refs.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/extract_paths.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/extractor.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fix/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fix/design_updater.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fix/templates_loader.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fixer.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/frontmatter.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/generator.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/git_evidence.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/graph.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/greenfield/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/iac_nfr.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/implement_oracle.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/implement_oracle_scope.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/implement_oracle_types.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/import_coherence.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/inheritance.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/adapters/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/adapters/implement_oracle.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/adapters/oracle_go.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/adapters/oracle_python.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/adapters/oracle_typescript.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/adapters/runner_report.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/builtin_adapters.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/compat.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/contract.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/loader.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/oracle_executor.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/path_planner.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/profile.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/profiles/go.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/profiles/python.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/profiles/typescript.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/registry.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/verify_executor.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/languages/verify_plan.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/lexicon.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/measure.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/operational_e2e_audit.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/operations_derive.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/parsing/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/parsing/_shared.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/parsing/api_specs.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/parsing/extractor_registry.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/parsing/iac.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/parsing/python_ast.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/parsing/schemas.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/parsing/treesitter.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/planner.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/policy.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/project_types.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/propagate.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/propagation_common.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/propagator.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/reference_resolution.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/registry.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/history.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/repair/verify_runner.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/require.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/requirements_meta.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/restoration_report.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/restore.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/scanner.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/skills_cli/manager.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/skills_cli/paths.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/adapters/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/adapters/_base.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/adapters/nextjs.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/adapters/playwright.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/compose.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/loader.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/lock.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/obligations.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/profile.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/registry.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/stack/resolve.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/surface_reconciliation.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/synth.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/test_detection.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/test_import_coherence.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/traceability.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/validator.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/vb_rerun_scope.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/verifiable_behavior_audit.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/watch/events.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd/wiring.py +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/dogfood/README.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/examples/README.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.0}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-2.87.0 → codd_dev-2.89.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.89.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,6 +5023,13 @@ def verify(
|
|
|
5023
5023
|
if not runtime:
|
|
5024
5024
|
return
|
|
5025
5025
|
|
|
5026
|
+
# Stack contract intake (Contract Kernel v2.77a) — bring the project's declared
|
|
5027
|
+
# framework-stack contract into the live verify run's trace, mirroring the
|
|
5028
|
+
# greenfield intake. INTAKE ONLY: no obligation is enforced and NO verdict
|
|
5029
|
+
# changes (that is v2.77b-e). A project with no `stack:` block is unaffected; a
|
|
5030
|
+
# declared-but-broken stack fails HONESTLY (anti-false-green), never a silent skip.
|
|
5031
|
+
_intake_stack_contract_for_verify(Path(path).resolve())
|
|
5032
|
+
|
|
5026
5033
|
verify_kwargs: dict[str, Any] = {"path": path, "prefer_standalone": True}
|
|
5027
5034
|
if runtime_skip:
|
|
5028
5035
|
verify_kwargs["runtime_skip"] = runtime_skip
|
|
@@ -7591,6 +7598,43 @@ def _load_optional_project_config(project_root: Path) -> dict[str, Any]:
|
|
|
7591
7598
|
return {}
|
|
7592
7599
|
|
|
7593
7600
|
|
|
7601
|
+
def _intake_stack_contract_for_verify(project_root: Path) -> None:
|
|
7602
|
+
"""Resolve the project's declared stack contract into the verify run trace.
|
|
7603
|
+
|
|
7604
|
+
Contract Kernel v2.77a (intake only) — the verify-path mirror of the greenfield
|
|
7605
|
+
pipeline's :meth:`GreenfieldPipeline._intake_stack_contract`. Proves the
|
|
7606
|
+
framework-stack contract is LIVE-consumed by the verify path (the hash enters
|
|
7607
|
+
the run trace), WITHOUT enforcing any obligation or changing the verify verdict
|
|
7608
|
+
(obligation enforcement is v2.77b-e).
|
|
7609
|
+
|
|
7610
|
+
* No ``stack:`` block → no-op (the opt-in framework layer is unused; the vast
|
|
7611
|
+
majority of projects — emits a single trace line, no behaviour change).
|
|
7612
|
+
* A declared stack → its ``stack_contract_hash`` is echoed to the run trace.
|
|
7613
|
+
* A declared-but-BROKEN stack → honest failure (``SystemExit`` non-zero), never
|
|
7614
|
+
a silent skip (anti-false-green / no-silent-fallback).
|
|
7615
|
+
"""
|
|
7616
|
+
from codd.stack.project import stack_contract_intake, stack_contract_trace
|
|
7617
|
+
|
|
7618
|
+
try:
|
|
7619
|
+
contract = stack_contract_intake(project_root)
|
|
7620
|
+
except Exception as exc: # noqa: BLE001 — a declared-but-broken stack must fail HONESTLY.
|
|
7621
|
+
click.echo(
|
|
7622
|
+
"stack contract intake failed: the project declares a `stack:` block in "
|
|
7623
|
+
f"codd.yaml but it could not be resolved ({type(exc).__name__}: {exc}). "
|
|
7624
|
+
"A declared-but-unresolvable stack is an honest error, never a silent skip.",
|
|
7625
|
+
err=True,
|
|
7626
|
+
)
|
|
7627
|
+
raise SystemExit(1) from exc
|
|
7628
|
+
|
|
7629
|
+
if contract is None:
|
|
7630
|
+
return
|
|
7631
|
+
trace = stack_contract_trace(contract)
|
|
7632
|
+
click.echo(
|
|
7633
|
+
f"[verify] stack contract intake: {trace['resolved_stack_id']} "
|
|
7634
|
+
f"stack_contract_hash={trace['stack_contract_hash']}"
|
|
7635
|
+
)
|
|
7636
|
+
|
|
7637
|
+
|
|
7594
7638
|
def _run_verify_once(
|
|
7595
7639
|
path: str,
|
|
7596
7640
|
*,
|
|
@@ -40,6 +40,7 @@ from collections.abc import Mapping
|
|
|
40
40
|
from dataclasses import dataclass
|
|
41
41
|
from typing import Any, Literal
|
|
42
42
|
|
|
43
|
+
from codd.parsing.regex_strategies import language_extensions
|
|
43
44
|
from codd.project_types import ProjectCapabilities
|
|
44
45
|
|
|
45
46
|
|
|
@@ -234,7 +235,11 @@ def resolve_e2e_harness(
|
|
|
234
235
|
"""
|
|
235
236
|
|
|
236
237
|
lang = (project_language or "").strip().lower()
|
|
237
|
-
|
|
238
|
+
# "host language is Python" is driven from the language's declared source
|
|
239
|
+
# extensions (registry DATA: ``regex_strategies.language_extensions`` is
|
|
240
|
+
# canonical-keyed — it does NOT resolve aliases — so this is byte-identical
|
|
241
|
+
# to the former ``lang == "python"``), not a language-name branch in core.
|
|
242
|
+
is_python = ".py" in language_extensions(lang)
|
|
238
243
|
modality = capabilities.e2e_modality
|
|
239
244
|
|
|
240
245
|
if modality == "cli":
|
|
@@ -440,6 +440,26 @@ class GreenfieldPipeline:
|
|
|
440
440
|
|
|
441
441
|
self._notify(options, f"greenfield start: {project_root.name}")
|
|
442
442
|
|
|
443
|
+
# Stack contract intake (Contract Kernel v2.77a) — bring the project's
|
|
444
|
+
# declared framework-stack contract into the LIVE run (in the run record +
|
|
445
|
+
# trace) so the framework layer is consumed by production, not only tests.
|
|
446
|
+
# INTAKE ONLY: no obligation is enforced here and NO verdict changes (that
|
|
447
|
+
# is v2.77b-e). A project with no ``stack:`` block is byte-identical (the
|
|
448
|
+
# opt-in framework layer is unused). A declared-but-broken stack is an
|
|
449
|
+
# HONEST failure (anti-false-green), never a silent skip. Done once, early,
|
|
450
|
+
# before the stage loop, so the hash covers the whole run. Routed through
|
|
451
|
+
# _fail (like every stage) so the autopilot REPORTS the honest error via a
|
|
452
|
+
# failed GreenfieldResult instead of raising to the caller. Its own
|
|
453
|
+
# pseudo-stage name (not a real STAGES entry) so the failure is attributed
|
|
454
|
+
# honestly to intake, not to ``init``.
|
|
455
|
+
try:
|
|
456
|
+
self._intake_stack_contract(project_root, session)
|
|
457
|
+
except StageError as exc:
|
|
458
|
+
return self._fail(
|
|
459
|
+
project_root, session, options, "stack_intake",
|
|
460
|
+
{"status": STATUS_PENDING, "detail": ""}, str(exc),
|
|
461
|
+
)
|
|
462
|
+
|
|
443
463
|
runners: dict[str, Callable[[Path, dict[str, Any], dict[str, Any]], None]] = {
|
|
444
464
|
"init": self._stage_init,
|
|
445
465
|
"elicit": self._stage_elicit,
|
|
@@ -522,6 +542,51 @@ class GreenfieldPipeline:
|
|
|
522
542
|
self._notify(options, f"greenfield {project_root.name}: FAILED at {stage_name} — {error}")
|
|
523
543
|
return result
|
|
524
544
|
|
|
545
|
+
# ── stack contract intake (Contract Kernel v2.77a, intake only) ──
|
|
546
|
+
|
|
547
|
+
def _intake_stack_contract(self, project_root: Path, session: dict[str, Any]) -> None:
|
|
548
|
+
"""Resolve the project's declared stack contract into the live run record + trace.
|
|
549
|
+
|
|
550
|
+
See the call site in :meth:`run`. INTAKE ONLY — proves the framework-stack
|
|
551
|
+
contract is LIVE-consumed (it enters the run record and the trace); it does
|
|
552
|
+
NOT enforce any obligation and does NOT change any pass/fail verdict
|
|
553
|
+
(obligation enforcement is v2.77b-e).
|
|
554
|
+
|
|
555
|
+
* No ``stack:`` block → no-op: nothing is added to the record and only a
|
|
556
|
+
single debug ``self.echo`` is emitted, so a non-stack project (the vast
|
|
557
|
+
majority) is behaviour-preserving.
|
|
558
|
+
* A declared stack → its :func:`stack_contract_trace` payload (incl.
|
|
559
|
+
``stack_contract_hash``) is written to ``session["stack_contract"]`` and
|
|
560
|
+
echoed to the run trace.
|
|
561
|
+
* A declared-but-BROKEN stack → :class:`StageError` (honest error), never a
|
|
562
|
+
silent skip (anti-false-green / no-silent-fallback).
|
|
563
|
+
"""
|
|
564
|
+
from codd.stack.project import stack_contract_intake, stack_contract_trace
|
|
565
|
+
|
|
566
|
+
try:
|
|
567
|
+
contract = stack_contract_intake(project_root)
|
|
568
|
+
except Exception as exc: # noqa: BLE001 — a declared-but-broken stack must fail HONESTLY.
|
|
569
|
+
raise StageError(
|
|
570
|
+
"stack contract intake failed: the project declares a `stack:` block in "
|
|
571
|
+
f"codd.yaml but it could not be resolved ({type(exc).__name__}: {exc}). "
|
|
572
|
+
"A declared-but-unresolvable stack is an honest error, never a silent skip "
|
|
573
|
+
"(check the language / frameworks / addons ids against the curated stack "
|
|
574
|
+
"profiles, or remove the `stack:` block to opt out of the framework layer)."
|
|
575
|
+
) from exc
|
|
576
|
+
|
|
577
|
+
if contract is None:
|
|
578
|
+
# The opt-in framework layer is unused — byte-identical behaviour.
|
|
579
|
+
self.echo("[greenfield] stack contract intake: no `stack:` block (framework layer opt-out)")
|
|
580
|
+
return
|
|
581
|
+
|
|
582
|
+
trace = stack_contract_trace(contract)
|
|
583
|
+
session["stack_contract"] = dict(trace)
|
|
584
|
+
self.echo(
|
|
585
|
+
"[greenfield] stack contract intake: "
|
|
586
|
+
f"{trace['resolved_stack_id']} "
|
|
587
|
+
f"stack_contract_hash={trace['stack_contract_hash']}"
|
|
588
|
+
)
|
|
589
|
+
|
|
525
590
|
# ── option resolution ───────────────────────────────────
|
|
526
591
|
|
|
527
592
|
def _resolve_options(self, project_root: Path) -> dict[str, Any]:
|
|
@@ -747,7 +747,10 @@ def _confusable_code_error(relative_path: str, content: str, *, language: str) -
|
|
|
747
747
|
deterministic, no LLM calls.
|
|
748
748
|
"""
|
|
749
749
|
suffix = PurePosixPath(relative_path).suffix.lower()
|
|
750
|
-
|
|
750
|
+
# "is this a Python payload" is driven from the language's declared
|
|
751
|
+
# extensions (DATA), not a ``language == "python"`` branch: a .py suffix, or
|
|
752
|
+
# an extensionless payload whose language declares .py as a source extension.
|
|
753
|
+
is_python = suffix == ".py" or (suffix == "" and ".py" in _implementation_language_extensions(language))
|
|
751
754
|
if not is_python:
|
|
752
755
|
return None
|
|
753
756
|
findings = _confusable_findings(content)
|
|
@@ -1754,7 +1757,7 @@ def _candidate_generated_paths(spec: ImplementSpec, language: Any, design_conten
|
|
|
1754
1757
|
candidates.append(PurePosixPath(output_path) / f"index{default_extension}")
|
|
1755
1758
|
|
|
1756
1759
|
normalized_language = _normalize_implementation_language(language)
|
|
1757
|
-
if normalized_language
|
|
1760
|
+
if _ui_variant_extension(normalized_language) is not None and _spec_looks_ui_facing(spec, design_content):
|
|
1758
1761
|
extensions = _implementation_language_extensions(normalized_language)
|
|
1759
1762
|
if len(extensions) > 1:
|
|
1760
1763
|
for output_path in spec.output_paths:
|
|
@@ -1883,7 +1886,7 @@ def _build_implementation_prompt(
|
|
|
1883
1886
|
else:
|
|
1884
1887
|
framework_guidance = f"- Use idiomatic {language_name} patterns for the target project."
|
|
1885
1888
|
|
|
1886
|
-
if language
|
|
1889
|
+
if _ui_variant_extension(language) is not None and len(preferred_extensions) > 1:
|
|
1887
1890
|
jsx_extension = preferred_extensions[1]
|
|
1888
1891
|
extension_guidance = (
|
|
1889
1892
|
f"- If the work needs JSX-style UI components, emit {jsx_extension} files. "
|
|
@@ -2581,10 +2584,41 @@ def _implementation_language_extensions(language: Any) -> tuple[str, ...]:
|
|
|
2581
2584
|
return LANGUAGE_EXT_MAP.get(normalized, LANGUAGE_EXT_MAP["typescript"])
|
|
2582
2585
|
|
|
2583
2586
|
|
|
2587
|
+
#: Registry DATA (Contract Kernel Cut Condition A — implementer.py): the SECOND
|
|
2588
|
+
#: extension some language families carry is a JSX/UI-COMPONENT variant
|
|
2589
|
+
#: (TypeScript's ``.tsx``, JavaScript's ``.jsx``) rather than just "another file
|
|
2590
|
+
#: type" (e.g. C++'s ``.cc``/``.h``). Only a family whose alt extension is a UI
|
|
2591
|
+
#: variant should route UI-facing work to ``extensions[1]``. This is a
|
|
2592
|
+
#: language→capability DATA table (the analogue of a profile/registry entry — a
|
|
2593
|
+
#: declared capability, NOT a core ``language in (...)`` branch); core code asks
|
|
2594
|
+
#: ``_ui_variant_extension(language) is not None`` (a capability flag), never a
|
|
2595
|
+
#: language name. Byte-identical to the former ``in {"typescript","javascript"}``
|
|
2596
|
+
#: guards: those two families are exactly the ones whose ``extensions[1]`` is the
|
|
2597
|
+
#: UI/JSX variant.
|
|
2598
|
+
_UI_VARIANT_EXTENSION_BY_LANGUAGE: dict[str, str] = {
|
|
2599
|
+
"typescript": ".tsx",
|
|
2600
|
+
"javascript": ".jsx",
|
|
2601
|
+
}
|
|
2602
|
+
|
|
2603
|
+
|
|
2604
|
+
def _ui_variant_extension(language: Any) -> str | None:
|
|
2605
|
+
"""The language's JSX/UI-component variant extension, or ``None`` (data lookup).
|
|
2606
|
+
|
|
2607
|
+
A capability flag in DATA form: a language family declares whether it has a
|
|
2608
|
+
dedicated UI-component extension (``.tsx``/``.jsx``). ``None`` means the
|
|
2609
|
+
family has no UI variant (its ``extensions[1]``, if any, is just another file
|
|
2610
|
+
type), so UI-facing routing must NOT use the alternate extension. Replaces
|
|
2611
|
+
the former ``language in {"typescript","javascript"}`` dispatch.
|
|
2612
|
+
"""
|
|
2613
|
+
normalized = _normalize_implementation_language(language)
|
|
2614
|
+
return _UI_VARIANT_EXTENSION_BY_LANGUAGE.get(normalized)
|
|
2615
|
+
|
|
2616
|
+
|
|
2584
2617
|
def _default_generated_extension(language: Any, content: str | None = None) -> str:
|
|
2585
2618
|
normalized = _normalize_implementation_language(language)
|
|
2586
2619
|
extensions = _implementation_language_extensions(normalized)
|
|
2587
|
-
|
|
2620
|
+
ui_variant = _ui_variant_extension(normalized)
|
|
2621
|
+
if ui_variant is not None and len(extensions) > 1 and content and _looks_like_tsx(content):
|
|
2588
2622
|
return extensions[1]
|
|
2589
2623
|
return extensions[0]
|
|
2590
2624
|
|
|
@@ -529,6 +529,99 @@ def strategy_for(language: str) -> RegexLanguageStrategy:
|
|
|
529
529
|
return _STRATEGIES.get((language or "").lower(), GENERIC_STRATEGY)
|
|
530
530
|
|
|
531
531
|
|
|
532
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
533
|
+
# Repair-slice analyzer registry DATA (Contract Kernel Cut Condition A —
|
|
534
|
+
# repair_slice.py de-literalization). ``codd/repair_slice.py``'s function
|
|
535
|
+
# line-range + raises analyzer used to branch on ``language in
|
|
536
|
+
# ("typescript","javascript")`` (tree-sitter func node-type set) and
|
|
537
|
+
# ``language == "python"`` (regex def-vs-function pattern + group index, and the
|
|
538
|
+
# python-only raises regex). Those per-language facts live HERE as registry DATA
|
|
539
|
+
# (the analogue of a profile/adapter — an analyzer impl legitimately names its
|
|
540
|
+
# own language), so the core analyzer dispatches by a data lookup, NOT a
|
|
541
|
+
# language-name branch. Byte-identical to the former inline ladders; the
|
|
542
|
+
# ``tests/languages/test_contract_kernel_cut_a_parity.py`` oracle pins this.
|
|
543
|
+
#
|
|
544
|
+
# Repair-slice extraction (like all extraction) is ANALYSIS input for patch
|
|
545
|
+
# context, never a green/red GATE verdict — so an unknown language degrading to
|
|
546
|
+
# the GENERIC profile (empty func-node set, the function-keyword regex, no raises)
|
|
547
|
+
# is legitimate best-effort analysis, not a false-green.
|
|
548
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
@dataclass(frozen=True)
|
|
552
|
+
class RepairSliceLanguageProfile:
|
|
553
|
+
"""Per-language repair-slice analyzer DATA (one language; not dispatch).
|
|
554
|
+
|
|
555
|
+
* ``function_node_types`` — the tree-sitter named-node types that are a
|
|
556
|
+
function/method definition for this language (walked for line ranges).
|
|
557
|
+
* ``line_range_pattern`` — the regex (with ``re.MULTILINE``) that matches a
|
|
558
|
+
function definition in the regex FALLBACK path.
|
|
559
|
+
* ``line_range_name_group`` — which regex group holds the function name.
|
|
560
|
+
* ``raises_def_pattern`` / ``raises_stmt_pattern`` — the regex pair for the
|
|
561
|
+
regex-fallback raises analyzer; ``None`` (the GENERIC default) means this
|
|
562
|
+
language contributes NO raises in the fallback (byte-identical to the
|
|
563
|
+
former ``if language != "python": return {}``).
|
|
564
|
+
"""
|
|
565
|
+
|
|
566
|
+
function_node_types: frozenset[str] = frozenset({"function_definition"})
|
|
567
|
+
line_range_pattern: re.Pattern[str] = field(
|
|
568
|
+
default_factory=lambda: re.compile(
|
|
569
|
+
r"^\s*(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\(", re.MULTILINE
|
|
570
|
+
)
|
|
571
|
+
)
|
|
572
|
+
line_range_name_group: int = 1
|
|
573
|
+
raises_def_pattern: re.Pattern[str] | None = None
|
|
574
|
+
raises_stmt_pattern: re.Pattern[str] | None = None
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
#: The python repair-slice profile: tree-sitter walks only ``function_definition``
|
|
578
|
+
#: (methods are ``function_definition`` inside a class in the python grammar); the
|
|
579
|
+
#: regex fallback uses the ``def`` pattern with the NAME in group 2; and python is
|
|
580
|
+
#: the ONLY language with a regex raises analyzer.
|
|
581
|
+
_REPAIR_PYTHON = RepairSliceLanguageProfile(
|
|
582
|
+
function_node_types=frozenset({"function_definition"}),
|
|
583
|
+
line_range_pattern=re.compile(r"^(\s*)(?:async\s+)?def\s+(\w+)\s*\(", re.MULTILINE),
|
|
584
|
+
line_range_name_group=2,
|
|
585
|
+
raises_def_pattern=re.compile(r"\s*(?:async\s+)?def\s+(\w+)\s*\("),
|
|
586
|
+
raises_stmt_pattern=re.compile(r"\s+raise\s+(\w+)"),
|
|
587
|
+
)
|
|
588
|
+
|
|
589
|
+
#: The ts/js repair-slice profile: tree-sitter additionally walks
|
|
590
|
+
#: ``method_definition`` + ``function_declaration`` (the former ``language in
|
|
591
|
+
#: ("typescript","javascript")`` set); the regex fallback uses the
|
|
592
|
+
#: ``function`` pattern with the NAME in group 1; no regex raises analyzer.
|
|
593
|
+
_REPAIR_TS_JS = RepairSliceLanguageProfile(
|
|
594
|
+
function_node_types=frozenset(
|
|
595
|
+
{"function_definition", "method_definition", "function_declaration"}
|
|
596
|
+
),
|
|
597
|
+
line_range_pattern=re.compile(
|
|
598
|
+
r"^\s*(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\(", re.MULTILINE
|
|
599
|
+
),
|
|
600
|
+
line_range_name_group=1,
|
|
601
|
+
)
|
|
602
|
+
|
|
603
|
+
#: The GENERIC repair-slice profile for any other/unknown language — byte-identical
|
|
604
|
+
#: to the former ``else`` branches: tree-sitter walks only ``function_definition``;
|
|
605
|
+
#: the regex fallback uses the ``function`` pattern with the name in group 1; and
|
|
606
|
+
#: no raises (the former ``if language != "python": return {}``).
|
|
607
|
+
GENERIC_REPAIR_PROFILE = RepairSliceLanguageProfile()
|
|
608
|
+
|
|
609
|
+
_REPAIR_PROFILES: dict[str, RepairSliceLanguageProfile] = {
|
|
610
|
+
"python": _REPAIR_PYTHON,
|
|
611
|
+
"typescript": _REPAIR_TS_JS,
|
|
612
|
+
"javascript": _REPAIR_TS_JS,
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
def repair_slice_profile_for(language: str) -> RepairSliceLanguageProfile:
|
|
617
|
+
"""Repair-slice analyzer profile for *language* (registry-data lookup).
|
|
618
|
+
|
|
619
|
+
Unknown languages resolve to :data:`GENERIC_REPAIR_PROFILE` (the former
|
|
620
|
+
non-python / non-ts-js ``else`` behavior); analysis input, never a gate.
|
|
621
|
+
"""
|
|
622
|
+
return _REPAIR_PROFILES.get((language or "").lower(), GENERIC_REPAIR_PROFILE)
|
|
623
|
+
|
|
624
|
+
|
|
532
625
|
def language_extensions(language: str) -> set[str]:
|
|
533
626
|
"""Source-file extensions for *language* (registry-data lookup)."""
|
|
534
627
|
return set(strategy_for(language).extensions)
|
|
@@ -60,9 +60,8 @@ def extract_function_line_ranges(
|
|
|
60
60
|
ext = get_extractor(language)
|
|
61
61
|
if not isinstance(ext, TreeSitterExtractor):
|
|
62
62
|
return _extract_line_ranges_regex(content, language)
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return _walk_functions_for_ranges(tree.root_node, content, language)
|
|
63
|
+
root = ext._parse(content)
|
|
64
|
+
return _walk_functions_for_ranges(root, content, language)
|
|
66
65
|
except Exception:
|
|
67
66
|
return _extract_line_ranges_regex(content, language)
|
|
68
67
|
|
|
@@ -72,12 +71,14 @@ def _walk_functions_for_ranges(
|
|
|
72
71
|
) -> dict[str, tuple[int, int]]:
|
|
73
72
|
"""Walk AST to find all function definitions with their line ranges."""
|
|
74
73
|
from codd.parsing import _iter_named_nodes, _field_text
|
|
74
|
+
from codd.parsing.regex_strategies import repair_slice_profile_for
|
|
75
75
|
content_bytes = content.encode("utf-8", errors="ignore")
|
|
76
76
|
ranges: dict[str, tuple[int, int]] = {}
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
# The set of tree-sitter function/method node types for this language is
|
|
79
|
+
# registry DATA (the analogue of a profile/adapter), not a language-name
|
|
80
|
+
# branch in core. ts/js add method_definition + function_declaration.
|
|
81
|
+
func_types = repair_slice_profile_for(language).function_node_types
|
|
81
82
|
|
|
82
83
|
for node in _iter_named_nodes(root):
|
|
83
84
|
if node.type not in func_types:
|
|
@@ -105,18 +106,24 @@ def _parent_class_name(content_bytes: bytes, node: Any) -> str:
|
|
|
105
106
|
|
|
106
107
|
|
|
107
108
|
def _extract_line_ranges_regex(content: str, language: str) -> dict[str, tuple[int, int]]:
|
|
108
|
-
"""Fallback: regex-based line range extraction.
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
109
|
+
"""Fallback: regex-based line range extraction.
|
|
110
|
+
|
|
111
|
+
The def-vs-function regex and the name-capture group are registry DATA per
|
|
112
|
+
language (python uses ``def`` with name in group 2; every other language uses
|
|
113
|
+
``function`` with name in group 1), so this core fallback dispatches by a
|
|
114
|
+
data lookup, not a ``language == "python"`` branch.
|
|
115
|
+
"""
|
|
116
|
+
from codd.parsing.regex_strategies import repair_slice_profile_for
|
|
117
|
+
profile = repair_slice_profile_for(language)
|
|
118
|
+
pattern = profile.line_range_pattern
|
|
119
|
+
name_group = profile.line_range_name_group
|
|
114
120
|
|
|
121
|
+
ranges: dict[str, tuple[int, int]] = {}
|
|
115
122
|
lines = content.split("\n")
|
|
116
123
|
matches = list(pattern.finditer(content))
|
|
117
124
|
for i, m in enumerate(matches):
|
|
118
125
|
line_no = content[:m.start()].count("\n") + 1
|
|
119
|
-
name = m.group(
|
|
126
|
+
name = m.group(name_group)
|
|
120
127
|
# Estimate end: next function or end of file
|
|
121
128
|
if i + 1 < len(matches):
|
|
122
129
|
end_line = content[:matches[i + 1].start()].count("\n")
|
|
@@ -137,9 +144,8 @@ def extract_raises(content: str, file_path: str, language: str) -> dict[str, lis
|
|
|
137
144
|
ext = get_extractor(language)
|
|
138
145
|
if not isinstance(ext, TreeSitterExtractor):
|
|
139
146
|
return _extract_raises_regex(content, language)
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
return _walk_raises(tree.root_node, content, language)
|
|
147
|
+
root = ext._parse(content)
|
|
148
|
+
return _walk_raises(root, content, language)
|
|
143
149
|
except Exception:
|
|
144
150
|
return _extract_raises_regex(content, language)
|
|
145
151
|
|
|
@@ -193,17 +199,27 @@ def _enclosing_function(content_bytes: bytes, node: Any) -> str:
|
|
|
193
199
|
|
|
194
200
|
|
|
195
201
|
def _extract_raises_regex(content: str, language: str) -> dict[str, list[str]]:
|
|
196
|
-
"""Fallback regex for raises extraction.
|
|
202
|
+
"""Fallback regex for raises extraction.
|
|
203
|
+
|
|
204
|
+
The def/raise regex pair is registry DATA per language; a language without a
|
|
205
|
+
declared raises analyzer (every language except python today) yields no
|
|
206
|
+
raises — a data lookup, not a ``language != "python"`` branch.
|
|
207
|
+
"""
|
|
208
|
+
from codd.parsing.regex_strategies import repair_slice_profile_for
|
|
209
|
+
profile = repair_slice_profile_for(language)
|
|
210
|
+
def_pattern = profile.raises_def_pattern
|
|
211
|
+
stmt_pattern = profile.raises_stmt_pattern
|
|
212
|
+
|
|
197
213
|
result: dict[str, list[str]] = {}
|
|
198
|
-
if
|
|
214
|
+
if def_pattern is None or stmt_pattern is None:
|
|
199
215
|
return result
|
|
200
216
|
current_func = ""
|
|
201
217
|
for line in content.split("\n"):
|
|
202
|
-
m =
|
|
218
|
+
m = def_pattern.match(line)
|
|
203
219
|
if m:
|
|
204
220
|
current_func = m.group(1)
|
|
205
221
|
if current_func:
|
|
206
|
-
rm =
|
|
222
|
+
rm = stmt_pattern.match(line)
|
|
207
223
|
if rm:
|
|
208
224
|
exc = rm.group(1)
|
|
209
225
|
result.setdefault(current_func, [])
|
|
@@ -68,3 +68,45 @@ def verify_project_stack(
|
|
|
68
68
|
if contract is None:
|
|
69
69
|
return None
|
|
70
70
|
return enforce_obligations(contract, project_root=project_root, **checker_inputs)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def stack_contract_trace(contract: ResolvedStackContract) -> dict[str, Any]:
|
|
74
|
+
"""Run-trace fields proving a run consumed the resolved stack contract.
|
|
75
|
+
|
|
76
|
+
Mirrors :meth:`codd.languages.contract.ResolvedLanguageContract.to_trace`: the
|
|
77
|
+
minimal, deterministic facts a run record / trace records so the live-consumption
|
|
78
|
+
of the framework-stack contract is observable (the v2.77a intake exit gate).
|
|
79
|
+
``stack_contract_hash`` is the deterministic :attr:`ResolvedStackContract.content_hash`;
|
|
80
|
+
``resolved_stack_id`` / ``resolved_stack_layers`` make "changing the profile changes
|
|
81
|
+
the plan" visible in the record itself.
|
|
82
|
+
"""
|
|
83
|
+
return {
|
|
84
|
+
"resolved_stack_id": contract.stack_id,
|
|
85
|
+
"stack_contract_hash": contract.content_hash,
|
|
86
|
+
"resolved_stack_layers": [f"{ref.kind}:{ref.id}" for ref in contract.layers],
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def stack_contract_intake(project_root: str | Path) -> ResolvedStackContract | None:
|
|
91
|
+
"""Resolve a project's declared stack contract for LIVE consumption (intake only).
|
|
92
|
+
|
|
93
|
+
This is the production seam the greenfield/verify pipeline calls EARLY in a run
|
|
94
|
+
to bring the (previously dormant) framework-stack contract into the live run —
|
|
95
|
+
*without* enforcing any obligation yet (enforcement is v2.77b-e). It is exactly
|
|
96
|
+
:func:`resolve_project_stack`, named for the intake call-site so the
|
|
97
|
+
"no non-test caller = 0 state" is eliminated by an unambiguous production caller.
|
|
98
|
+
|
|
99
|
+
Contract:
|
|
100
|
+
|
|
101
|
+
* No ``stack:`` block (the opt-in framework layer is unused) → ``None``. The
|
|
102
|
+
vast majority of projects; behaviour is byte-identical, never an error.
|
|
103
|
+
* A declared ``stack:`` block → the :class:`ResolvedStackContract` (its
|
|
104
|
+
``content_hash`` is the run-trace hash; see :func:`stack_contract_trace`).
|
|
105
|
+
* A declared-but-BROKEN block (unknown language/framework/addon, malformed
|
|
106
|
+
mapping) → the resolver RAISES (``ValueError`` / ``UnknownLanguageError`` /
|
|
107
|
+
``UnknownLayerError``). The intake NEVER swallows this: anti-false-green
|
|
108
|
+
forbids a declared-but-unresolvable stack from silently proceeding as if no
|
|
109
|
+
stack were declared. The pipeline call-site turns the raise into an honest
|
|
110
|
+
stage/command failure.
|
|
111
|
+
"""
|
|
112
|
+
return resolve_project_stack(project_root)
|
|
@@ -1235,6 +1235,18 @@ def _python_body_assigned_names(body_text: str) -> set[str]:
|
|
|
1235
1235
|
return names
|
|
1236
1236
|
|
|
1237
1237
|
|
|
1238
|
+
#: Poetry MANIFEST-FORMAT reserved keys that appear under
|
|
1239
|
+
#: ``[tool.poetry.dependencies]`` but are NOT third-party packages. Poetry stores
|
|
1240
|
+
#: the interpreter version constraint as a pseudo-dependency named ``python``
|
|
1241
|
+
#: (``python = "^3.11"``); it is the interpreter pin, not a distribution to
|
|
1242
|
+
#: import. This is a poetry FILE-FORMAT fact (the analogue of registry/profile
|
|
1243
|
+
#: DATA), NOT a target-language gate dispatch — the surrounding parser is already
|
|
1244
|
+
#: unconditionally Python-specific. Excluding it keeps the third-party set exact;
|
|
1245
|
+
#: membership here is byte-identical to the former inline ``k.lower() != "python"``
|
|
1246
|
+
#: filter (Contract Kernel Cut Condition A — vb_marker_authenticity.py).
|
|
1247
|
+
_POETRY_RESERVED_NON_DEPENDENCY_KEYS = frozenset({"python"})
|
|
1248
|
+
|
|
1249
|
+
|
|
1238
1250
|
def _python_manifest_top_dependencies(project_root: Path | None) -> frozenset[str]:
|
|
1239
1251
|
"""Declared third-party dependency names from ``pyproject.toml`` (PEP 621 +
|
|
1240
1252
|
poetry), normalized for top-module matching. Empty when absent/unparseable —
|
|
@@ -1268,7 +1280,11 @@ def _python_manifest_top_dependencies(project_root: Path | None) -> frozenset[st
|
|
|
1268
1280
|
if isinstance(poetry, dict):
|
|
1269
1281
|
pdeps = poetry.get("dependencies", {})
|
|
1270
1282
|
if isinstance(pdeps, dict):
|
|
1271
|
-
reqs.extend(
|
|
1283
|
+
reqs.extend(
|
|
1284
|
+
k
|
|
1285
|
+
for k in pdeps
|
|
1286
|
+
if isinstance(k, str) and k.lower() not in _POETRY_RESERVED_NON_DEPENDENCY_KEYS
|
|
1287
|
+
)
|
|
1272
1288
|
names: set[str] = set()
|
|
1273
1289
|
for req in reqs:
|
|
1274
1290
|
m = re.match(r"\s*([A-Za-z0-9._-]+)", req)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|