codd-dev 2.85.0__tar.gz → 2.86.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.85.0 → codd_dev-2.86.0}/PKG-INFO +1 -1
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/__init__.py +1 -1
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/profiles/python.yaml +19 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/profiles/typescript.yaml +11 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/project_types.py +284 -63
- {codd_dev-2.85.0 → codd_dev-2.86.0}/pyproject.toml +1 -1
- {codd_dev-2.85.0 → codd_dev-2.86.0}/.gitignore +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/LICENSE +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/README.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/bench_fixture/README.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/__main__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/action_outcome.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/ai_invoke.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/ai_patch.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/artifact_contract.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/artifact_ids.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/assembler.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/bridge.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/capability_completeness.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/claude_cli.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/cli.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/clustering.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/confidence.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/config.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/config_schema.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/contracts.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/contracts_registry/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/contracts_registry/__main__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/contracts_registry/certify.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/contracts_registry/generate_matrix.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/contracts_registry/registry.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/coverage_execution_coherence.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/auto_repair.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/builder.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/impact.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/defaults.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dependency_lock_coherence.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployer.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/pytest_http.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/vitest.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/design_md.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/diff/apply.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/discovery.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/drift.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/e2e_generator.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/e2e_harness.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/env_refs.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/extract_paths.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/extractor.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/design_updater.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/templates_loader.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fixer.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/frontmatter.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/generator.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/git_evidence.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/graph.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/greenfield/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/greenfield/pipeline.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/iac_nfr.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/implement_oracle.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/implement_oracle_scope.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/implement_oracle_types.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/implementer.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/import_coherence.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/inheritance.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/adapters/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/adapters/implement_oracle.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/adapters/oracle_go.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/adapters/oracle_python.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/adapters/oracle_typescript.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/adapters/runner_report.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/builtin_adapters.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/compat.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/contract.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/loader.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/oracle_executor.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/path_planner.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/profile.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/profiles/go.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/registry.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/verify_executor.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/verify_plan.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/measure.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/operational_e2e_audit.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/operations_derive.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/_shared.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/api_specs.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/iac.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/python_ast.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/schemas.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/treesitter.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/planner.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/policy.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/propagate.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/propagation_common.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/propagator.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/reference_resolution.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/registry.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/history.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/verify_runner.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair_slice.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/require.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirements_meta.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/restoration_report.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/restore.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/scanner.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/skills_cli/manager.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/skills_cli/paths.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/adapters/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/adapters/_base.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/adapters/nextjs.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/adapters/playwright.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/compose.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/loader.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/lock.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/obligations.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/profile.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/project.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/registry.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/resolve.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/surface_reconciliation.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/synth.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/test_detection.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/test_import_coherence.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/traceability.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/validator.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/vb_marker_authenticity.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/vb_rerun_scope.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/verifiable_behavior_audit.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/watch/events.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/wiring.py +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/dogfood/README.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/examples/README.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-2.85.0 → codd_dev-2.86.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.86.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
|
|
@@ -143,6 +143,25 @@ scaffold:
|
|
|
143
143
|
- "src/{package_name}/__main__.py"
|
|
144
144
|
- "tests/__init__.py"
|
|
145
145
|
|
|
146
|
+
# Legacy project-types bridge (Contract Kernel v2.71): the declarative seam that
|
|
147
|
+
# lets the language-free core route the LEGACY codd.project_types builders /
|
|
148
|
+
# scaffolder / test-runner ensurer WITHOUT a language-name literal in core code.
|
|
149
|
+
# * accepted_names — the EXACT set of runtime language names the legacy
|
|
150
|
+
# ``resolve_layout_profile`` / ``ensure_test_runner_config`` accept for this
|
|
151
|
+
# stack (preserves byte-identical support: Python accepts only ``python``,
|
|
152
|
+
# NOT every registry alias like ``py``/``python3``). Language names live in
|
|
153
|
+
# the PROFILE (an allowed zone), never in core .py.
|
|
154
|
+
# * realizer ids — HARNESS-POLICY capability names (not language names) the core
|
|
155
|
+
# maps to the concrete legacy builder/scaffolder/ensurer. They carry the
|
|
156
|
+
# runner/install/oracle/toolchain/verify POLICY the YAML does not yet model
|
|
157
|
+
# (that full externalization is the v3.0.0 gate; this increment only removes
|
|
158
|
+
# the language-name DISPATCH).
|
|
159
|
+
legacy_project_types:
|
|
160
|
+
accepted_names: ["python"]
|
|
161
|
+
layout_builder: "src-package-pytest-editable-layout-v1"
|
|
162
|
+
scaffolder: "pyproject-src-package-scaffold-v1"
|
|
163
|
+
test_runner_ensurer: "pyproject-pytest-runner-v1"
|
|
164
|
+
|
|
146
165
|
artifacts:
|
|
147
166
|
harness_root: ".codd"
|
|
148
167
|
|
|
@@ -154,6 +154,17 @@ scaffold:
|
|
|
154
154
|
- "tsconfig.json"
|
|
155
155
|
- "vitest.config.ts"
|
|
156
156
|
|
|
157
|
+
# Legacy project-types bridge (Contract Kernel v2.71) — see python.yaml for the
|
|
158
|
+
# rationale. TypeScript accepts EXACTLY ``typescript`` + ``node`` (the historical
|
|
159
|
+
# legacy-dict keys), NOT the wider registry aliases ``ts``/``js``/``javascript`` —
|
|
160
|
+
# preserving byte-identical support. The realizer ids are harness-policy capability
|
|
161
|
+
# names (npm/vitest/tsc), not language names.
|
|
162
|
+
legacy_project_types:
|
|
163
|
+
accepted_names: ["typescript", "node"]
|
|
164
|
+
layout_builder: "npm-vitest-tsc-layout-v1"
|
|
165
|
+
scaffolder: "npm-tsconfig-vitest-scaffold-v1"
|
|
166
|
+
test_runner_ensurer: "npm-vitest-runner-v1"
|
|
167
|
+
|
|
157
168
|
artifacts:
|
|
158
169
|
harness_root: ".codd"
|
|
159
170
|
|
|
@@ -262,6 +262,113 @@ def _as_choice(value: Any, allowed: set[str], fallback: str) -> str:
|
|
|
262
262
|
_VALID_TEST_IMPORT_POLICIES = {"package_absolute", "flat", "relative"}
|
|
263
263
|
|
|
264
264
|
|
|
265
|
+
# ═══════════════════════════════════════════════════════════
|
|
266
|
+
# Contract-Kernel language resolution seam (v2.71: de-literalize the dispatch)
|
|
267
|
+
# ═══════════════════════════════════════════════════════════
|
|
268
|
+
#
|
|
269
|
+
# The Contract Kernel rule (Cut Condition A): the core branches on a RESOLVED
|
|
270
|
+
# language contract + registered adapter capability, NEVER on a language-NAME
|
|
271
|
+
# literal. The functions below resolve a runtime language VALUE (a string the
|
|
272
|
+
# caller already holds — allowed) to the declarative ``LanguageProfile`` (loaded
|
|
273
|
+
# from ``codd/languages/profiles/*.yaml``) so layout/scaffold/test-block
|
|
274
|
+
# decisions read profile DATA instead of ``self.language == "python"`` dispatch.
|
|
275
|
+
#
|
|
276
|
+
# Anti-false-green: a declared-but-UNKNOWN language degrades to ``None`` (the
|
|
277
|
+
# conservative non-stack behaviour — no scaffolder engages, no stack paths are
|
|
278
|
+
# declared), mirroring ``codd.repair.verify_runner._declared_language_profile``.
|
|
279
|
+
# It is NEVER coerced to a wrong-layout default (that would be a silent green).
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
def _resolve_kernel_language_profile(language: str | None) -> Any:
|
|
283
|
+
"""Resolve a runtime language value to its declarative ``LanguageProfile``.
|
|
284
|
+
|
|
285
|
+
Returns the loaded profile (matched by id OR alias, case-insensitively
|
|
286
|
+
through :data:`codd.languages.registry.default_registry`) or ``None`` when
|
|
287
|
+
the language is blank/unknown. The language string is a RUNTIME VALUE the
|
|
288
|
+
caller already holds (not a hardcoded literal), so this is the language-free
|
|
289
|
+
resolution seam — it replaces the removed ``self.language == "<name>"`` /
|
|
290
|
+
language-name-keyed builder-dict dispatch. Import is lazy so the language
|
|
291
|
+
package is not pulled in at ``project_types`` import time / on the hot path.
|
|
292
|
+
"""
|
|
293
|
+
if not language or not str(language).strip():
|
|
294
|
+
return None
|
|
295
|
+
try:
|
|
296
|
+
from codd.languages.registry import UnknownLanguageError, default_registry
|
|
297
|
+
except Exception: # noqa: BLE001 — registry optional; degrade (never crash).
|
|
298
|
+
return None
|
|
299
|
+
try:
|
|
300
|
+
return default_registry.resolve(str(language))
|
|
301
|
+
except UnknownLanguageError:
|
|
302
|
+
return None
|
|
303
|
+
except Exception: # noqa: BLE001 — a malformed profile is the loader's gate; degrade here.
|
|
304
|
+
return None
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
# ── Legacy project-types bridge (the byte-identical, language-name-free seam) ──
|
|
308
|
+
#
|
|
309
|
+
# The LEGACY ``codd.project_types`` builders / scaffolders / test-runner ensurers
|
|
310
|
+
# still carry HARNESS POLICY (runner / install_mode / oracle / toolchain / verify
|
|
311
|
+
# campaign) the declarative ``LanguageProfile`` does NOT yet model — full policy
|
|
312
|
+
# externalization is the v3.0.0 gate. THIS increment removes the language-NAME
|
|
313
|
+
# DISPATCH only. The seam: a profile declares a ``legacy_project_types:`` block
|
|
314
|
+
# (preserved in ``profile.extra``) with
|
|
315
|
+
# * ``accepted_names`` — the EXACT runtime names the legacy path accepts
|
|
316
|
+
# for this stack (so support stays byte-identical: ``python`` accepts only
|
|
317
|
+
# ``python``, NOT every registry alias like ``py``/``python3``; ``typescript``
|
|
318
|
+
# accepts only ``typescript``+``node``, NOT ``ts``/``js``/``javascript``).
|
|
319
|
+
# * realizer ids — HARNESS-POLICY capability names (``layout_builder``
|
|
320
|
+
# / ``scaffolder`` / ``test_runner_ensurer``) the core maps to the concrete
|
|
321
|
+
# legacy function via the registries at the bottom of this module. The keys are
|
|
322
|
+
# policy capability ids, NEVER language names — so the core stays language-free.
|
|
323
|
+
#
|
|
324
|
+
# A profile WITHOUT this block (Go) is not bridged to the legacy path at all (Go's
|
|
325
|
+
# coherence is owned by the contract/implement-oracle path). Anti-false-green: an
|
|
326
|
+
# unknown / unaccepted name resolves to NO realizer (the conservative degradation —
|
|
327
|
+
# the caller stays on its no-profile path, never a wrong builder writing a wrong
|
|
328
|
+
# layout). Language names live in the PROFILE YAML (an allowed zone), never here.
|
|
329
|
+
|
|
330
|
+
_LEGACY_BRIDGE_KEY = "legacy_project_types"
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
def _legacy_bridge_block(language: str | None) -> Mapping[str, Any] | None:
|
|
334
|
+
"""The profile's ``legacy_project_types`` block IFF ``language`` is accepted.
|
|
335
|
+
|
|
336
|
+
Resolves the runtime ``language`` to its :class:`LanguageProfile`, then returns
|
|
337
|
+
the declared ``legacy_project_types`` mapping ONLY when ``language`` (case-
|
|
338
|
+
insensitively) is in that block's ``accepted_names``. ``None`` otherwise — a
|
|
339
|
+
blank/unknown language, an alias the legacy path historically did NOT accept,
|
|
340
|
+
or a profile that declares no bridge (Go). This is the byte-identical support
|
|
341
|
+
gate: it restores the legacy dict's EXACT accepted-name set without a
|
|
342
|
+
language-name literal in core code.
|
|
343
|
+
"""
|
|
344
|
+
profile = _resolve_kernel_language_profile(language)
|
|
345
|
+
extra = getattr(profile, "extra", None) if profile is not None else None
|
|
346
|
+
block = extra.get(_LEGACY_BRIDGE_KEY) if isinstance(extra, Mapping) else None
|
|
347
|
+
if not isinstance(block, Mapping):
|
|
348
|
+
return None
|
|
349
|
+
accepted = block.get("accepted_names")
|
|
350
|
+
accepted_set = {
|
|
351
|
+
str(n).strip().lower() for n in (accepted or ()) if str(n).strip()
|
|
352
|
+
} if isinstance(accepted, (list, tuple)) else set()
|
|
353
|
+
if (language or "").strip().lower() not in accepted_set:
|
|
354
|
+
return None
|
|
355
|
+
return block
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
def _legacy_realizer_id(language: str | None, field: str) -> str | None:
|
|
359
|
+
"""The realizer capability id for ``field`` from an ACCEPTED legacy bridge.
|
|
360
|
+
|
|
361
|
+
``field`` is one of ``layout_builder`` / ``scaffolder`` / ``test_runner_ensurer``.
|
|
362
|
+
``None`` when the language is not bridged/accepted or the field is undeclared —
|
|
363
|
+
the conservative degradation (no legacy realizer engages).
|
|
364
|
+
"""
|
|
365
|
+
block = _legacy_bridge_block(language)
|
|
366
|
+
if block is None:
|
|
367
|
+
return None
|
|
368
|
+
value = block.get(field)
|
|
369
|
+
return str(value) if value else None
|
|
370
|
+
|
|
371
|
+
|
|
265
372
|
# ═══════════════════════════════════════════════════════════
|
|
266
373
|
# Implement-time native-oracle spec (the "first head" of the Artifact Contract
|
|
267
374
|
# Graph → Native Oracle Adapter: see memory/project_codd_language_generality_acg)
|
|
@@ -688,12 +795,20 @@ class LayoutProfile:
|
|
|
688
795
|
(e.g. TS ``vitest.config.ts`` / ``tsconfig.json``) is never mis-flagged as
|
|
689
796
|
an unowned orphan and never reverted by the fence.
|
|
690
797
|
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
798
|
+
PROFILE-DRIVEN (Contract Kernel v2.71): the stack-specific scaffold files
|
|
799
|
+
are selected by the resolved :class:`LanguageProfile`'s legacy-bridge
|
|
800
|
+
``scaffolder`` realizer id (a harness-policy capability name — Python's
|
|
801
|
+
package-topology scaffolder vs TS's config scaffolder), NOT a
|
|
802
|
+
``self.language ==`` literal. Each path is still DERIVED from this
|
|
803
|
+
``LayoutProfile``'s own fields (``package_root`` / ``test_root`` /
|
|
804
|
+
``requires_*`` — the same values the scaffolder uses) + the toolchain
|
|
805
|
+
manifest/lock filenames, so a new stack inherits the contract by declaring
|
|
806
|
+
its ``legacy_project_types`` bridge, with no language-name logic in the gate.
|
|
807
|
+
A stack with no legacy bridge (Go) or an unknown/unaccepted language declares
|
|
808
|
+
no stack-specific scaffold files (only the toolchain manifest/lock, if any).
|
|
809
|
+
The list is a STATIC declaration of what the scaffolder *can* create (not
|
|
810
|
+
what is present on disk); callers that need only existing files filter by
|
|
811
|
+
``is_file()``.
|
|
697
812
|
"""
|
|
698
813
|
paths: list[str] = []
|
|
699
814
|
|
|
@@ -710,7 +825,10 @@ class LayoutProfile:
|
|
|
710
825
|
for lock in toolchain.lock_filenames:
|
|
711
826
|
_add(lock)
|
|
712
827
|
|
|
713
|
-
|
|
828
|
+
# Route the stack-scaffold files by the legacy-bridge scaffolder realizer id
|
|
829
|
+
# (a harness-policy capability name from the profile), never a language name.
|
|
830
|
+
scaffolder_id = _legacy_realizer_id(self.language, "scaffolder")
|
|
831
|
+
if scaffolder_id == _SCAFFOLDER_PY_SRC_PACKAGE:
|
|
714
832
|
# _scaffold_python: pyproject + package <__init__>/<__main__> + test <__init__>.
|
|
715
833
|
_add(_PYPROJECT_FILENAME)
|
|
716
834
|
if self.requires_package_init:
|
|
@@ -718,7 +836,7 @@ class LayoutProfile:
|
|
|
718
836
|
_add(f"{self.package_root}/__main__.py")
|
|
719
837
|
if self.requires_test_init:
|
|
720
838
|
_add(f"{self.test_root}/__init__.py")
|
|
721
|
-
elif
|
|
839
|
+
elif scaffolder_id == _SCAFFOLDER_TS_NPM:
|
|
722
840
|
# _scaffold_typescript: tsconfig + vitest config + package.json.
|
|
723
841
|
_add(_TSCONFIG_FILENAME)
|
|
724
842
|
_add(_VITEST_CONFIG_FILENAME)
|
|
@@ -733,13 +851,27 @@ class LayoutProfile:
|
|
|
733
851
|
parser that locates executable test blocks and resolves skip/assertion
|
|
734
852
|
facts) or ``None`` for a stack with no adapter — in which case the
|
|
735
853
|
authenticity gate gracefully degrades to its language-agnostic stage 1
|
|
736
|
-
(orphan-marker) check only.
|
|
737
|
-
|
|
738
|
-
(
|
|
739
|
-
|
|
740
|
-
|
|
854
|
+
(orphan-marker) check only.
|
|
855
|
+
|
|
856
|
+
PROFILE-DRIVEN (Contract Kernel v2.71): the parser is selected by the
|
|
857
|
+
resolved :class:`LanguageProfile`'s ``tests.semantics_adapter`` CAPABILITY
|
|
858
|
+
ID (``python-test-semantics`` / ``typescript-test-semantics`` /
|
|
859
|
+
``go-test-semantics``), NOT a ``self.language ==`` literal. The id is a
|
|
860
|
+
capability name declared in the language YAML, so a new stack registers its
|
|
861
|
+
parser by declaring its semantics adapter id + adding one entry to the
|
|
862
|
+
adapter-id→parser table below — no language-name logic in the gate. An
|
|
863
|
+
unknown language / a profile with no semantics adapter ⇒ ``None`` (the
|
|
864
|
+
authenticity gate degrades to its stage-1 check). Imports are lazy so the
|
|
865
|
+
authenticity module (which imports the VB audit) is never pulled in at
|
|
866
|
+
``project_types`` import time.
|
|
741
867
|
"""
|
|
742
868
|
|
|
869
|
+
profile = _resolve_kernel_language_profile(self.language)
|
|
870
|
+
tests = getattr(profile, "tests", None) if profile is not None else None
|
|
871
|
+
adapter_id = getattr(tests, "semantics_adapter", None) if tests is not None else None
|
|
872
|
+
if not adapter_id:
|
|
873
|
+
return None
|
|
874
|
+
|
|
743
875
|
try:
|
|
744
876
|
from codd.vb_marker_authenticity import (
|
|
745
877
|
GoTestBlockProfile,
|
|
@@ -749,13 +881,15 @@ class LayoutProfile:
|
|
|
749
881
|
except Exception: # noqa: BLE001 — adapter is optional; degrade if unavailable.
|
|
750
882
|
return None
|
|
751
883
|
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
884
|
+
# adapter-id → test-block parser. The keys are CAPABILITY ids from the
|
|
885
|
+
# language profiles (never language names), so this is language-free.
|
|
886
|
+
builders = {
|
|
887
|
+
"python-test-semantics": PythonTestBlockProfile,
|
|
888
|
+
"typescript-test-semantics": TypeScriptTestBlockProfile,
|
|
889
|
+
"go-test-semantics": GoTestBlockProfile,
|
|
890
|
+
}
|
|
891
|
+
builder = builders.get(str(adapter_id))
|
|
892
|
+
return builder() if builder is not None else None
|
|
759
893
|
|
|
760
894
|
def runner_report_adapter(self) -> Any:
|
|
761
895
|
"""Resolve this stack's runner-report adapter for the coherence gate.
|
|
@@ -1096,19 +1230,66 @@ def _typescript_layout_profile(
|
|
|
1096
1230
|
)
|
|
1097
1231
|
|
|
1098
1232
|
|
|
1099
|
-
#
|
|
1100
|
-
#
|
|
1233
|
+
# Realizer capability id → legacy layout-profile builder (Contract Kernel v2.71).
|
|
1234
|
+
# The dispatch key is the HARNESS-POLICY capability id a profile declares in its
|
|
1235
|
+
# ``legacy_project_types.layout_builder`` — NOT a language name. The builder carries
|
|
1236
|
+
# the runner/install/oracle/toolchain/verify POLICY the declarative profile does not
|
|
1237
|
+
# yet model (full externalization = the v3.0.0 gate; this increment removes only the
|
|
1238
|
+
# language-name DISPATCH). A new stack maps to an existing builder by declaring that
|
|
1239
|
+
# realizer id, or registers a new builder here under a new id.
|
|
1101
1240
|
_LayoutProfileBuilder = Callable[..., LayoutProfile]
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1241
|
+
#: Realizer capability ids (must match the profile YAML ``legacy_project_types``).
|
|
1242
|
+
_LAYOUT_BUILDER_PY_SRC_PACKAGE = "src-package-pytest-editable-layout-v1"
|
|
1243
|
+
_LAYOUT_BUILDER_TS_NPM = "npm-vitest-tsc-layout-v1"
|
|
1244
|
+
_LAYOUT_BUILDERS_BY_REALIZER: dict[str, _LayoutProfileBuilder] = {
|
|
1245
|
+
_LAYOUT_BUILDER_PY_SRC_PACKAGE: _python_layout_profile,
|
|
1246
|
+
_LAYOUT_BUILDER_TS_NPM: _typescript_layout_profile,
|
|
1106
1247
|
}
|
|
1107
1248
|
|
|
1108
1249
|
|
|
1250
|
+
def _legacy_bridged_names(field: str) -> list[str]:
|
|
1251
|
+
"""Sorted runtime names whose profile bridges ``field`` to a known realizer.
|
|
1252
|
+
|
|
1253
|
+
Walks the language registry and, for every profile declaring a
|
|
1254
|
+
``legacy_project_types`` block whose ``field`` realizer id is registered,
|
|
1255
|
+
contributes that block's ``accepted_names`` (the EXACT historical names — NOT
|
|
1256
|
+
the wider registry aliases). This is the PROFILE-DRIVEN, byte-identical
|
|
1257
|
+
replacement for the old hardcoded ``sorted(_DICT)`` over language-name keys.
|
|
1258
|
+
"""
|
|
1259
|
+
realizers = {
|
|
1260
|
+
"layout_builder": _LAYOUT_BUILDERS_BY_REALIZER,
|
|
1261
|
+
"test_runner_ensurer": _TEST_RUNNER_ENSURERS_BY_REALIZER,
|
|
1262
|
+
}.get(field, {})
|
|
1263
|
+
names: set[str] = set()
|
|
1264
|
+
try:
|
|
1265
|
+
from codd.languages.registry import default_registry
|
|
1266
|
+
|
|
1267
|
+
for profile in default_registry.all_profiles():
|
|
1268
|
+
extra = getattr(profile, "extra", None)
|
|
1269
|
+
block = extra.get(_LEGACY_BRIDGE_KEY) if isinstance(extra, Mapping) else None
|
|
1270
|
+
if not isinstance(block, Mapping):
|
|
1271
|
+
continue
|
|
1272
|
+
realizer = block.get(field)
|
|
1273
|
+
if not realizer or str(realizer) not in realizers:
|
|
1274
|
+
continue
|
|
1275
|
+
for n in block.get("accepted_names") or ():
|
|
1276
|
+
if str(n).strip():
|
|
1277
|
+
names.add(str(n).strip().lower())
|
|
1278
|
+
except Exception: # noqa: BLE001 — registry optional; empty list is the safe degrade.
|
|
1279
|
+
return []
|
|
1280
|
+
return sorted(names)
|
|
1281
|
+
|
|
1282
|
+
|
|
1109
1283
|
def supported_layout_profile_languages() -> list[str]:
|
|
1110
|
-
"""
|
|
1111
|
-
|
|
1284
|
+
"""Runtime names with a harness-owned layout profile (deterministic topology).
|
|
1285
|
+
|
|
1286
|
+
PROFILE-DRIVEN (Contract Kernel v2.71): the union of every profile's
|
|
1287
|
+
``legacy_project_types.accepted_names`` whose ``layout_builder`` realizer is
|
|
1288
|
+
registered — never a hardcoded language-name table. Byte-identical to the legacy
|
|
1289
|
+
dict's key set (``node``/``python``/``typescript``): only the EXPLICITLY accepted
|
|
1290
|
+
names, not the wider registry aliases, and not Go (no legacy bridge).
|
|
1291
|
+
"""
|
|
1292
|
+
return _legacy_bridged_names("layout_builder")
|
|
1112
1293
|
|
|
1113
1294
|
|
|
1114
1295
|
def resolve_layout_profile(
|
|
@@ -1122,18 +1303,28 @@ def resolve_layout_profile(
|
|
|
1122
1303
|
) -> LayoutProfile | None:
|
|
1123
1304
|
"""Resolve the :class:`LayoutProfile` for a stack, or ``None`` if unsupported.
|
|
1124
1305
|
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
``
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1306
|
+
PROFILE-DRIVEN dispatch (Contract Kernel v2.71): the runtime ``language`` value is
|
|
1307
|
+
resolved to its :class:`LanguageProfile`, the profile's ``legacy_project_types``
|
|
1308
|
+
bridge gates it (``language`` must be in ``accepted_names`` — so support stays
|
|
1309
|
+
byte-identical: ``node`` resolves to the canonical TypeScript profile, but the
|
|
1310
|
+
wider aliases ``ts``/``js``/``py`` do NOT), then the builder is selected by the
|
|
1311
|
+
bridge's ``layout_builder`` realizer id — NOT a ``language ==``/dict-keyed-by-name
|
|
1312
|
+
literal. A blank/unknown/unaccepted language, or a profile with no bridge (Go),
|
|
1313
|
+
resolves to ``None`` (the conservative degradation — the caller stays on its
|
|
1314
|
+
no-profile path, never a wrong-layout default).
|
|
1315
|
+
|
|
1316
|
+
Every path the builder produces is derived from ``project_name`` + the configured
|
|
1317
|
+
``scan.*_dirs`` — there are NO hardcoded ``src``/``tests``/``<package>`` literals
|
|
1318
|
+
outside the per-stack builder's documented defaults.
|
|
1319
|
+
|
|
1320
|
+
``config`` (the loaded project config) and ``project_root`` are optional and feed
|
|
1321
|
+
the harness-owned CANONICAL package-name resolution (config override >
|
|
1322
|
+
derive-from-actual single package > project-name default) for stacks that use a
|
|
1323
|
+
named package (Python). Stacks that resolve by path (TypeScript) ignore them.
|
|
1324
|
+
Omitting both preserves the pure project-name default (back-compat).
|
|
1135
1325
|
"""
|
|
1136
|
-
|
|
1326
|
+
realizer_id = _legacy_realizer_id(language, "layout_builder")
|
|
1327
|
+
builder = _LAYOUT_BUILDERS_BY_REALIZER.get(realizer_id) if realizer_id else None
|
|
1137
1328
|
if builder is None:
|
|
1138
1329
|
return None
|
|
1139
1330
|
return builder(
|
|
@@ -1177,18 +1368,32 @@ class ScaffoldResult:
|
|
|
1177
1368
|
detail: str = ""
|
|
1178
1369
|
|
|
1179
1370
|
|
|
1371
|
+
#: Scaffolder realizer capability ids (Contract Kernel v2.71 — must match the
|
|
1372
|
+
#: profile YAML ``legacy_project_types.scaffolder``). Harness-policy names, NOT
|
|
1373
|
+
#: language names: the dispatch key for which legacy scaffolder realizes a profile.
|
|
1374
|
+
_SCAFFOLDER_PY_SRC_PACKAGE = "pyproject-src-package-scaffold-v1"
|
|
1375
|
+
_SCAFFOLDER_TS_NPM = "npm-tsconfig-vitest-scaffold-v1"
|
|
1376
|
+
|
|
1377
|
+
|
|
1180
1378
|
def scaffold_layout(
|
|
1181
1379
|
project_root: Path | str,
|
|
1182
1380
|
profile: LayoutProfile,
|
|
1183
1381
|
) -> ScaffoldResult:
|
|
1184
1382
|
"""Create the profile's topology (create-only, idempotent, non-clobbering).
|
|
1185
1383
|
|
|
1186
|
-
Returns the relative paths created vs. skipped (already present).
|
|
1187
|
-
|
|
1384
|
+
Returns the relative paths created vs. skipped (already present).
|
|
1385
|
+
|
|
1386
|
+
PROFILE-DRIVEN (Contract Kernel v2.71): the scaffolder is selected by the
|
|
1387
|
+
resolved :class:`LanguageProfile`'s legacy-bridge ``scaffolder`` realizer id (a
|
|
1388
|
+
harness-policy capability name — Python package-topology vs TS config), NOT a
|
|
1389
|
+
``profile.language ==`` literal. A stack with no legacy bridge (Go) or an
|
|
1390
|
+
unknown/unaccepted language is a strict no-op (the conservative degradation —
|
|
1391
|
+
never a wrong scaffolder writing a wrong layout).
|
|
1188
1392
|
"""
|
|
1189
|
-
|
|
1393
|
+
scaffolder_id = _legacy_realizer_id(profile.language, "scaffolder")
|
|
1394
|
+
if scaffolder_id == _SCAFFOLDER_PY_SRC_PACKAGE:
|
|
1190
1395
|
return _scaffold_python(Path(project_root), profile)
|
|
1191
|
-
if
|
|
1396
|
+
if scaffolder_id == _SCAFFOLDER_TS_NPM:
|
|
1192
1397
|
return _scaffold_typescript(Path(project_root), profile)
|
|
1193
1398
|
return ScaffoldResult(language=profile.language, detail="no scaffolder for stack")
|
|
1194
1399
|
|
|
@@ -1893,21 +2098,32 @@ def _ensure_typescript_test_runner(
|
|
|
1893
2098
|
)
|
|
1894
2099
|
|
|
1895
2100
|
|
|
1896
|
-
#
|
|
1897
|
-
#
|
|
1898
|
-
#
|
|
1899
|
-
#
|
|
2101
|
+
# Realizer capability id → legacy test-runner ensurer (Contract Kernel v2.71). The
|
|
2102
|
+
# dispatch key is the profile's ``legacy_project_types.test_runner_ensurer`` realizer
|
|
2103
|
+
# id — a harness-policy capability name, NOT a language name. A stack with no legacy
|
|
2104
|
+
# bridge (Go's profile declares none) or an unknown/unaccepted language is the
|
|
2105
|
+
# "unsupported" advisory no-op in :func:`ensure_test_runner_config`. Each ensurer
|
|
2106
|
+
# drives off the resolved :class:`LayoutProfile`, so topology lives in ONE place.
|
|
1900
2107
|
_TestRunnerEnsurer = Callable[..., EnsureTestRunnerResult]
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
2108
|
+
#: Realizer capability ids (must match the profile YAML ``legacy_project_types``).
|
|
2109
|
+
_ENSURER_PY_PYPROJECT = "pyproject-pytest-runner-v1"
|
|
2110
|
+
_ENSURER_TS_NPM = "npm-vitest-runner-v1"
|
|
2111
|
+
_TEST_RUNNER_ENSURERS_BY_REALIZER: dict[str, _TestRunnerEnsurer] = {
|
|
2112
|
+
_ENSURER_PY_PYPROJECT: _ensure_python_test_runner,
|
|
2113
|
+
_ENSURER_TS_NPM: _ensure_typescript_test_runner,
|
|
1905
2114
|
}
|
|
1906
2115
|
|
|
1907
2116
|
|
|
1908
2117
|
def supported_test_runner_languages() -> list[str]:
|
|
1909
|
-
"""
|
|
1910
|
-
|
|
2118
|
+
"""Runtime names for which greenfield can deterministically ensure a test runner.
|
|
2119
|
+
|
|
2120
|
+
PROFILE-DRIVEN (Contract Kernel v2.71): the union of every profile's
|
|
2121
|
+
``legacy_project_types.accepted_names`` whose ``test_runner_ensurer`` realizer is
|
|
2122
|
+
registered — never a hardcoded language-name table. Byte-identical to the legacy
|
|
2123
|
+
dict's key set (``node``/``python``/``typescript``): only the explicitly accepted
|
|
2124
|
+
names, not the wider registry aliases, and not Go (no legacy bridge).
|
|
2125
|
+
"""
|
|
2126
|
+
return _legacy_bridged_names("test_runner_ensurer")
|
|
1911
2127
|
|
|
1912
2128
|
|
|
1913
2129
|
def ensure_test_runner_config(
|
|
@@ -1920,13 +2136,17 @@ def ensure_test_runner_config(
|
|
|
1920
2136
|
) -> EnsureTestRunnerResult:
|
|
1921
2137
|
"""Guarantee a RUNNABLE, detectable test setup for ``language``'s stack.
|
|
1922
2138
|
|
|
1923
|
-
Stack-general entry point.
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
2139
|
+
Stack-general entry point. PROFILE-DRIVEN dispatch (Contract Kernel v2.71): the
|
|
2140
|
+
runtime ``language`` is resolved to its :class:`LanguageProfile`, gated by the
|
|
2141
|
+
profile's ``legacy_project_types`` bridge (``accepted_names`` — so support stays
|
|
2142
|
+
byte-identical), and the ensurer is selected by the bridge's ``test_runner_ensurer``
|
|
2143
|
+
realizer id — NOT a ``language ==``/dict-keyed-by-name literal. For a stack WITH a
|
|
2144
|
+
registered ensurer, the ensurer owns the present/augment/create decision (it checks
|
|
2145
|
+
its own STRONG marker — e.g. a ``[tool.pytest`` section, not mere ``pyproject.toml``
|
|
2146
|
+
presence — so it can upgrade a bare config that is detectable but not runnable). For
|
|
2147
|
+
a stack WITHOUT an ensurer (Go's profile declares no bridge, or an unknown/unaccepted
|
|
2148
|
+
language), this returns an ``"unsupported"`` no-op UNLESS a test command is already
|
|
2149
|
+
detectable, in which case a provided (possibly non-native) setup is respected.
|
|
1930
2150
|
|
|
1931
2151
|
Either way an AI/user-provided setup is never clobbered, and the verify layer
|
|
1932
2152
|
remains the authority that refuses to certify an unexecuted build. All paths
|
|
@@ -1936,7 +2156,8 @@ def ensure_test_runner_config(
|
|
|
1936
2156
|
root = Path(project_root)
|
|
1937
2157
|
lang = (language or "").strip().lower()
|
|
1938
2158
|
|
|
1939
|
-
|
|
2159
|
+
ensurer_id = _legacy_realizer_id(lang, "test_runner_ensurer")
|
|
2160
|
+
ensurer = _TEST_RUNNER_ENSURERS_BY_REALIZER.get(ensurer_id) if ensurer_id else None
|
|
1940
2161
|
if ensurer is None:
|
|
1941
2162
|
# No native ensurer for this stack. Respect any test command an AI/user
|
|
1942
2163
|
# already wired up (stack-agnostic), otherwise it is an advisory no-op:
|
|
@@ -1967,8 +2188,8 @@ def ensure_test_runner_config(
|
|
|
1967
2188
|
if profile is not None:
|
|
1968
2189
|
return ensurer(root, profile=profile)
|
|
1969
2190
|
|
|
1970
|
-
# Fallback (no
|
|
1971
|
-
#
|
|
2191
|
+
# Fallback (no LayoutProfile for an ensurer-having shape — shouldn't happen, but
|
|
2192
|
+
# keep the path total): synthesize a minimal profile from dirs.
|
|
1972
2193
|
source_root = _first_clean_dir(source_dirs, "src")
|
|
1973
2194
|
test_root = _first_clean_dir(test_dirs, "tests")
|
|
1974
2195
|
package_name = normalize_package_name(project_name)
|
|
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
|