codd-dev 2.64.0__tar.gz → 2.65.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.64.0 → codd_dev-2.65.0}/PKG-INFO +1 -1
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/__init__.py +1 -1
- codd_dev-2.65.0/codd/languages/__init__.py +85 -0
- codd_dev-2.65.0/codd/languages/compat.py +184 -0
- codd_dev-2.65.0/codd/languages/loader.py +405 -0
- codd_dev-2.65.0/codd/languages/path_planner.py +400 -0
- codd_dev-2.65.0/codd/languages/profile.py +400 -0
- codd_dev-2.65.0/codd/languages/profiles/go.yaml +277 -0
- codd_dev-2.65.0/codd/languages/profiles/python.yaml +155 -0
- codd_dev-2.65.0/codd/languages/profiles/typescript.yaml +159 -0
- codd_dev-2.65.0/codd/languages/registry.py +143 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/operational_e2e_audit.py +9 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/project_types.py +3 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/vb_marker_authenticity.py +873 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/pyproject.toml +1 -1
- {codd_dev-2.64.0 → codd_dev-2.65.0}/.gitignore +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/LICENSE +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/README.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/bench_fixture/README.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/__main__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/action_outcome.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/ai_invoke.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/ai_patch.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/artifact_contract.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/artifact_ids.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/assembler.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/bridge.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/capability_completeness.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/claude_cli.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/cli.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/clustering.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/confidence.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/config.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/config_schema.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/contracts.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/contracts_registry/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/contracts_registry/__main__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/contracts_registry/certify.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/contracts_registry/generate_matrix.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/contracts_registry/registry.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/coverage_execution_coherence.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/auto_repair.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/builder.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/impact.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/defaults.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/dependency_lock_coherence.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployer.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/verification/pytest_http.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/deployment/providers/verification/vitest.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/design_md.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/diff/apply.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/discovery.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/drift.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/e2e_generator.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/e2e_harness.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/env_refs.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/extract_paths.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/extractor.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fix/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fix/design_updater.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fix/templates_loader.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fixer.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/frontmatter.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/generator.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/git_evidence.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/graph.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/greenfield/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/greenfield/pipeline.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/iac_nfr.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/implement_oracle.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/implement_oracle_scope.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/implementer.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/import_coherence.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/inheritance.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/lexicon.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/measure.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/operations_derive.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/parsing/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/parsing/_shared.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/parsing/api_specs.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/parsing/iac.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/parsing/python_ast.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/parsing/schemas.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/parsing/treesitter.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/planner.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/policy.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/propagate.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/propagation_common.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/propagator.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/reference_resolution.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/registry.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/history.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair/verify_runner.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/repair_slice.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/require.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/requirements_meta.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/restoration_report.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/restore.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/scanner.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/skills_cli/manager.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/skills_cli/paths.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/surface_reconciliation.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/synth.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/test_detection.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/test_import_coherence.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/traceability.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/validator.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/vb_rerun_scope.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/verifiable_behavior_audit.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/watch/events.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd/wiring.py +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/dogfood/README.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/examples/README.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.0}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-2.64.0 → codd_dev-2.65.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.65.0
|
|
4
4
|
Summary: CoDD: Coherence-Driven Development — cross-artifact change impact analysis
|
|
5
5
|
Project-URL: Homepage, https://github.com/yohey-w/codd-dev
|
|
6
6
|
Project-URL: Repository, https://github.com/yohey-w/codd-dev
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""Language-generality subsystem (Phase 1, additive).
|
|
2
|
+
|
|
3
|
+
This package introduces the declarative ``LanguageProfile`` model plus a
|
|
4
|
+
registry/loader, per GPT-5.5 Pro's language-generality redesign
|
|
5
|
+
(``dogfood/gpt_language_generality_design.md``).
|
|
6
|
+
|
|
7
|
+
**Phase 1 is purely ADDITIVE.** Nothing here is wired into the existing
|
|
8
|
+
gates yet. The goal is to model the taxonomy and prove the data (Python,
|
|
9
|
+
TypeScript, Go profiles) loads and round-trips, with the load-bearing
|
|
10
|
+
invariant that source locations are a SET (``source_sets``) — there is NO
|
|
11
|
+
single ``source_root`` field — so a language like Go is never forced under
|
|
12
|
+
``src/``.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
from .profile import (
|
|
18
|
+
AdapterRef,
|
|
19
|
+
ArtifactsSpec,
|
|
20
|
+
CommandSpec,
|
|
21
|
+
DependencyIntegrityFile,
|
|
22
|
+
Identity,
|
|
23
|
+
ImportsSpec,
|
|
24
|
+
LanguageProfile,
|
|
25
|
+
LayoutSpec,
|
|
26
|
+
ManifestSpec,
|
|
27
|
+
PackageRoot,
|
|
28
|
+
ReportSpec,
|
|
29
|
+
ScaffoldSpec,
|
|
30
|
+
ScopeSpec,
|
|
31
|
+
SourceSet,
|
|
32
|
+
TestSet,
|
|
33
|
+
TestsSpec,
|
|
34
|
+
ToolchainSpec,
|
|
35
|
+
VerifySpec,
|
|
36
|
+
)
|
|
37
|
+
from .loader import LanguageProfileError, load_language_profile
|
|
38
|
+
from .registry import (
|
|
39
|
+
AdapterRegistry,
|
|
40
|
+
LanguageRegistry,
|
|
41
|
+
UnknownLanguageError,
|
|
42
|
+
default_registry,
|
|
43
|
+
)
|
|
44
|
+
from .compat import (
|
|
45
|
+
UnsupportedLayoutShape,
|
|
46
|
+
layout_profile_from_language_profile,
|
|
47
|
+
)
|
|
48
|
+
from .path_planner import OutputPlan, PathPlanError, PathPlanner
|
|
49
|
+
|
|
50
|
+
__all__ = [
|
|
51
|
+
# model
|
|
52
|
+
"AdapterRef",
|
|
53
|
+
"ArtifactsSpec",
|
|
54
|
+
"CommandSpec",
|
|
55
|
+
"DependencyIntegrityFile",
|
|
56
|
+
"Identity",
|
|
57
|
+
"ImportsSpec",
|
|
58
|
+
"LanguageProfile",
|
|
59
|
+
"LayoutSpec",
|
|
60
|
+
"ManifestSpec",
|
|
61
|
+
"PackageRoot",
|
|
62
|
+
"ReportSpec",
|
|
63
|
+
"ScaffoldSpec",
|
|
64
|
+
"ScopeSpec",
|
|
65
|
+
"SourceSet",
|
|
66
|
+
"TestSet",
|
|
67
|
+
"TestsSpec",
|
|
68
|
+
"ToolchainSpec",
|
|
69
|
+
"VerifySpec",
|
|
70
|
+
# loader
|
|
71
|
+
"LanguageProfileError",
|
|
72
|
+
"load_language_profile",
|
|
73
|
+
# registry
|
|
74
|
+
"AdapterRegistry",
|
|
75
|
+
"LanguageRegistry",
|
|
76
|
+
"UnknownLanguageError",
|
|
77
|
+
"default_registry",
|
|
78
|
+
# compat shim (LanguageProfile -> legacy LayoutProfile)
|
|
79
|
+
"UnsupportedLayoutShape",
|
|
80
|
+
"layout_profile_from_language_profile",
|
|
81
|
+
# path planner (single declared-output authority)
|
|
82
|
+
"OutputPlan",
|
|
83
|
+
"PathPlanError",
|
|
84
|
+
"PathPlanner",
|
|
85
|
+
]
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"""Compatibility shim: ``LanguageProfile`` → legacy ``LayoutProfile``.
|
|
2
|
+
|
|
3
|
+
This is the **Phase 1 (compat shim part)** of GPT-5.5 Pro's language-generality
|
|
4
|
+
redesign (``dogfood/gpt_language_generality_design.md`` §4 "Phase 1" and §8.3
|
|
5
|
+
"source_root を compatibility view に降格する").
|
|
6
|
+
|
|
7
|
+
Goal
|
|
8
|
+
----
|
|
9
|
+
Let the *new* declarative :class:`~codd.languages.profile.LanguageProfile` derive
|
|
10
|
+
the *old* :class:`~codd.project_types.LayoutProfile`'s topology triple
|
|
11
|
+
(``source_root`` / ``package_root`` / ``test_root``) so the existing gates keep
|
|
12
|
+
running against a frozen snapshot while the rewire happens incrementally.
|
|
13
|
+
|
|
14
|
+
The load-bearing guarantee (proven by ``tests/languages/test_compat_and_pathplanner.py``):
|
|
15
|
+
|
|
16
|
+
For **python** and **typescript** profiles, the layout triple this shim
|
|
17
|
+
derives is **byte-identical** to what
|
|
18
|
+
:func:`codd.project_types._python_layout_profile` /
|
|
19
|
+
:func:`codd.project_types._typescript_layout_profile` produce for the same
|
|
20
|
+
``package_name`` / source-root / test-root inputs.
|
|
21
|
+
|
|
22
|
+
Scope of the shim (deliberately narrow)
|
|
23
|
+
---------------------------------------
|
|
24
|
+
The legacy ``LayoutProfile`` mixes *topology* (source/package/test roots — the
|
|
25
|
+
thing this redesign is generalizing) with *policy* (runner, install_mode,
|
|
26
|
+
test_import_policy, the implement-oracle/verify specs). Only the **topology** is
|
|
27
|
+
expressible from the declarative profile today, so this shim derives ONLY the
|
|
28
|
+
topology triple (+ ``language`` + ``package_name``). Policy fields are left at
|
|
29
|
+
their dataclass defaults here; the real builders remain the authority for those
|
|
30
|
+
until later phases (§4 Phase 4–6) move the oracle/verify/test-semantics behind
|
|
31
|
+
adapters. This keeps the shim drift-free: it never *re-encodes* the builders'
|
|
32
|
+
policy decisions, so it cannot silently disagree with them.
|
|
33
|
+
|
|
34
|
+
A ``LanguageProfile`` whose ``package_root.kind == "none"`` (Go) has **no single
|
|
35
|
+
``source_root``/``package_root``** — that is the whole point of the redesign
|
|
36
|
+
(§1.2). Asking this shim for a legacy triple for such a language raises
|
|
37
|
+
:class:`UnsupportedLayoutShape`; callers must use
|
|
38
|
+
:class:`codd.languages.path_planner.PathPlanner` instead (§8.3).
|
|
39
|
+
|
|
40
|
+
This module is **purely additive** — nothing imports it from the live pipeline
|
|
41
|
+
yet.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
from __future__ import annotations
|
|
45
|
+
|
|
46
|
+
from typing import TYPE_CHECKING
|
|
47
|
+
|
|
48
|
+
from .profile import LanguageProfile
|
|
49
|
+
|
|
50
|
+
if TYPE_CHECKING: # pragma: no cover - typing only
|
|
51
|
+
from codd.project_types import LayoutProfile
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class UnsupportedLayoutShape(ValueError):
|
|
55
|
+
"""A language has no single source/package root (use ``PathPlanner``).
|
|
56
|
+
|
|
57
|
+
Raised by :func:`layout_profile_from_language_profile` for a profile whose
|
|
58
|
+
``layout.package_root.kind == "none"`` (e.g. Go), per design §8.3: the legacy
|
|
59
|
+
single-``source_root`` API must hard-fail for a multi/co-located-source-set
|
|
60
|
+
language instead of silently inventing a ``src/`` root.
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def _subst(template: str, *, package_name: str) -> str:
|
|
65
|
+
"""Substitute the only Phase-1 layout placeholder, ``{package_name}``.
|
|
66
|
+
|
|
67
|
+
Other placeholders (``{module_path}``, ``{go_version}``, …) are not part of a
|
|
68
|
+
legacy topology triple and are intentionally not handled here.
|
|
69
|
+
"""
|
|
70
|
+
return template.replace("{package_name}", package_name)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _norm(rel: str) -> str:
|
|
74
|
+
"""Normalize a relative path the way the legacy builders do (``_norm_rel``)."""
|
|
75
|
+
return str(rel).strip().replace("\\", "/").strip("/")
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def _parent_dir(path: str) -> str:
|
|
79
|
+
"""Parent directory of a POSIX-style relative path (``src/pkg`` → ``src``).
|
|
80
|
+
|
|
81
|
+
Returns ``"."`` when there is no parent segment, matching how a single-segment
|
|
82
|
+
source root would degrade (not expected for the named-package layout, which
|
|
83
|
+
always nests ``<src>/<pkg>``).
|
|
84
|
+
"""
|
|
85
|
+
norm = _norm(path)
|
|
86
|
+
if "/" not in norm:
|
|
87
|
+
return "."
|
|
88
|
+
return norm.rsplit("/", 1)[0]
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def _derive_source_and_package_root(
|
|
92
|
+
profile: LanguageProfile, *, package_name: str
|
|
93
|
+
) -> tuple[str, str]:
|
|
94
|
+
"""Derive the legacy ``(source_root, package_root)`` pair from the profile.
|
|
95
|
+
|
|
96
|
+
Mirrors the two existing builders exactly:
|
|
97
|
+
|
|
98
|
+
* ``named_package`` (Python): ``package_root`` is the profile's
|
|
99
|
+
``package_root.path`` (``src/<pkg>``); the legacy ``source_root`` is its
|
|
100
|
+
PARENT (``src``) — i.e. ``_python_layout_profile`` does
|
|
101
|
+
``source_root=<src>``, ``package_root=f"{source_root}/{package_name}"``.
|
|
102
|
+
* ``path_root`` (TypeScript): ``package_root == source_root`` and both equal
|
|
103
|
+
the (single) source-set root (``src``) — i.e.
|
|
104
|
+
``_typescript_layout_profile`` does ``package_root=source_root``.
|
|
105
|
+
|
|
106
|
+
Anything else (``none`` / unknown) has no single root → caller raises.
|
|
107
|
+
"""
|
|
108
|
+
pkg_spec = profile.layout.package_root
|
|
109
|
+
kind = pkg_spec.kind
|
|
110
|
+
|
|
111
|
+
if kind == "named_package":
|
|
112
|
+
if not pkg_spec.path:
|
|
113
|
+
raise UnsupportedLayoutShape(
|
|
114
|
+
f"language {profile.id!r}: package_root.kind=named_package but no path"
|
|
115
|
+
)
|
|
116
|
+
package_root = _norm(_subst(pkg_spec.path, package_name=package_name))
|
|
117
|
+
source_root = _parent_dir(package_root)
|
|
118
|
+
return source_root, package_root
|
|
119
|
+
|
|
120
|
+
if kind == "path_root":
|
|
121
|
+
if not pkg_spec.path:
|
|
122
|
+
raise UnsupportedLayoutShape(
|
|
123
|
+
f"language {profile.id!r}: package_root.kind=path_root but no path"
|
|
124
|
+
)
|
|
125
|
+
root = _norm(_subst(pkg_spec.path, package_name=package_name))
|
|
126
|
+
return root, root
|
|
127
|
+
|
|
128
|
+
raise UnsupportedLayoutShape(
|
|
129
|
+
f"language {profile.id!r}: package_root.kind={kind!r} has no single "
|
|
130
|
+
"source/package root; use PathPlanner (design §8.3)."
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def _derive_test_root(profile: LanguageProfile, *, package_name: str) -> str:
|
|
135
|
+
"""Derive the legacy ``test_root`` from the profile's first test set.
|
|
136
|
+
|
|
137
|
+
Both legacy builders take ``test_root`` from the first ``scan.test_dirs``
|
|
138
|
+
entry (default ``tests``). The declarative profile's first ``test_sets`` entry
|
|
139
|
+
carries the same value (``root: tests``).
|
|
140
|
+
"""
|
|
141
|
+
test_sets = profile.layout.test_sets
|
|
142
|
+
if not test_sets:
|
|
143
|
+
return "tests"
|
|
144
|
+
return _norm(_subst(test_sets[0].root, package_name=package_name))
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def layout_profile_from_language_profile(
|
|
148
|
+
profile: LanguageProfile,
|
|
149
|
+
*,
|
|
150
|
+
package_name: str,
|
|
151
|
+
) -> "LayoutProfile":
|
|
152
|
+
"""Derive a legacy :class:`LayoutProfile` from a declarative ``LanguageProfile``.
|
|
153
|
+
|
|
154
|
+
Only the **topology triple** (``source_root`` / ``package_root`` /
|
|
155
|
+
``test_root``) plus ``language`` and ``package_name`` are derived — these are
|
|
156
|
+
proven byte-identical to the real builders for python/typescript (see this
|
|
157
|
+
module's docstring and the golden tests). Policy fields (runner,
|
|
158
|
+
install_mode, oracle/verify specs, …) are left at their ``LayoutProfile``
|
|
159
|
+
defaults: this shim is the topology authority only, and never re-encodes the
|
|
160
|
+
builders' policy so it cannot drift from them.
|
|
161
|
+
|
|
162
|
+
:param profile: the loaded declarative language profile.
|
|
163
|
+
:param package_name: the harness-owned canonical package name to substitute
|
|
164
|
+
for ``{package_name}`` (the caller resolves it exactly as the legacy path
|
|
165
|
+
does, via ``resolve_canonical_package_name``).
|
|
166
|
+
:raises UnsupportedLayoutShape: if the language has no single source/package
|
|
167
|
+
root (``package_root.kind == "none"``, e.g. Go) — use ``PathPlanner``.
|
|
168
|
+
"""
|
|
169
|
+
# Imported lazily so this additive module never creates an import cycle with
|
|
170
|
+
# the (large) project_types module at package import time.
|
|
171
|
+
from codd.project_types import LayoutProfile
|
|
172
|
+
|
|
173
|
+
source_root, package_root = _derive_source_and_package_root(
|
|
174
|
+
profile, package_name=package_name
|
|
175
|
+
)
|
|
176
|
+
test_root = _derive_test_root(profile, package_name=package_name)
|
|
177
|
+
|
|
178
|
+
return LayoutProfile(
|
|
179
|
+
language=profile.id,
|
|
180
|
+
package_name=package_name,
|
|
181
|
+
source_root=source_root,
|
|
182
|
+
package_root=package_root,
|
|
183
|
+
test_root=test_root,
|
|
184
|
+
)
|
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
"""Load a ``LanguageProfile`` from a YAML file.
|
|
2
|
+
|
|
3
|
+
Phase 1, additive only. Parsing rules:
|
|
4
|
+
|
|
5
|
+
* Uses PyYAML's ``safe_load`` (the repo-wide convention; see ``codd/config.py``).
|
|
6
|
+
No toml is needed — profiles are YAML.
|
|
7
|
+
* Placeholder templates (``{package_name}`` / ``{module_path}`` /
|
|
8
|
+
``{module_root}`` etc.) are kept as **literal strings**. They are NOT
|
|
9
|
+
substituted here — that's PathPlanner's job in a later phase.
|
|
10
|
+
* Unknown / not-yet-modeled top-level keys (e.g. ``path_rules``,
|
|
11
|
+
``implement_oracle``) are preserved verbatim under
|
|
12
|
+
``LanguageProfile.extra`` and the whole document under ``.raw``.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
from pathlib import Path
|
|
18
|
+
from typing import Any, Mapping
|
|
19
|
+
|
|
20
|
+
import yaml
|
|
21
|
+
|
|
22
|
+
from .profile import (
|
|
23
|
+
ArtifactsSpec,
|
|
24
|
+
CommandSpec,
|
|
25
|
+
DependencyIntegrityFile,
|
|
26
|
+
Identity,
|
|
27
|
+
ImportsSpec,
|
|
28
|
+
LanguageProfile,
|
|
29
|
+
LayoutSpec,
|
|
30
|
+
ManifestSpec,
|
|
31
|
+
PackageRoot,
|
|
32
|
+
ReportSpec,
|
|
33
|
+
ScaffoldSpec,
|
|
34
|
+
ScopeSpec,
|
|
35
|
+
SourceSet,
|
|
36
|
+
TestSet,
|
|
37
|
+
TestsSpec,
|
|
38
|
+
ToolchainSpec,
|
|
39
|
+
VerifySpec,
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class LanguageProfileError(ValueError):
|
|
44
|
+
"""Raised when a language profile YAML is malformed or missing required keys."""
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
# ---------------------------------------------------------------------------
|
|
48
|
+
# small parsing helpers
|
|
49
|
+
# ---------------------------------------------------------------------------
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def _as_tuple(value: Any) -> tuple[Any, ...]:
|
|
53
|
+
if value is None:
|
|
54
|
+
return ()
|
|
55
|
+
if isinstance(value, (list, tuple)):
|
|
56
|
+
return tuple(value)
|
|
57
|
+
# A scalar where a list was expected — wrap it, be forgiving.
|
|
58
|
+
return (value,)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _as_str_tuple(value: Any) -> tuple[str, ...]:
|
|
62
|
+
return tuple(str(v) for v in _as_tuple(value))
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _as_mapping(value: Any, *, where: str) -> dict[str, Any]:
|
|
66
|
+
if value is None:
|
|
67
|
+
return {}
|
|
68
|
+
if isinstance(value, Mapping):
|
|
69
|
+
return dict(value)
|
|
70
|
+
raise LanguageProfileError(f"{where}: expected a mapping, got {type(value).__name__}")
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _require(mapping: Mapping[str, Any], key: str, *, where: str) -> Any:
|
|
74
|
+
if key not in mapping or mapping[key] is None:
|
|
75
|
+
raise LanguageProfileError(f"{where}: missing required key '{key}'")
|
|
76
|
+
return mapping[key]
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
# ---------------------------------------------------------------------------
|
|
80
|
+
# section parsers
|
|
81
|
+
# ---------------------------------------------------------------------------
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def _parse_identity(doc: Mapping[str, Any]) -> Identity:
|
|
85
|
+
where = "identity"
|
|
86
|
+
lang_id = _require(doc, "id", where=where)
|
|
87
|
+
display = doc.get("display_name") or str(lang_id)
|
|
88
|
+
strictness = doc.get("strictness", "strict")
|
|
89
|
+
if strictness not in ("strict", "legacy_compatible"):
|
|
90
|
+
raise LanguageProfileError(
|
|
91
|
+
f"{where}: strictness must be 'strict' or 'legacy_compatible', "
|
|
92
|
+
f"got {strictness!r}"
|
|
93
|
+
)
|
|
94
|
+
return Identity(
|
|
95
|
+
id=str(lang_id),
|
|
96
|
+
display_name=str(display),
|
|
97
|
+
aliases=_as_str_tuple(doc.get("aliases")),
|
|
98
|
+
file_extensions=_as_str_tuple(doc.get("file_extensions")),
|
|
99
|
+
strictness=strictness,
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def _parse_source_set(raw: Mapping[str, Any], *, idx: int) -> SourceSet:
|
|
104
|
+
where = f"layout.source_sets[{idx}]"
|
|
105
|
+
m = _as_mapping(raw, where=where)
|
|
106
|
+
return SourceSet(
|
|
107
|
+
id=str(_require(m, "id", where=where)),
|
|
108
|
+
root=str(_require(m, "root", where=where)),
|
|
109
|
+
file_globs=_as_str_tuple(m.get("file_globs")),
|
|
110
|
+
role=(str(m["role"]) if m.get("role") is not None else None),
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def _parse_test_set(raw: Mapping[str, Any], *, idx: int) -> TestSet:
|
|
115
|
+
where = f"layout.test_sets[{idx}]"
|
|
116
|
+
m = _as_mapping(raw, where=where)
|
|
117
|
+
return TestSet(
|
|
118
|
+
id=str(_require(m, "id", where=where)),
|
|
119
|
+
root=str(_require(m, "root", where=where)),
|
|
120
|
+
file_globs=_as_str_tuple(m.get("file_globs")),
|
|
121
|
+
role=(str(m["role"]) if m.get("role") is not None else None),
|
|
122
|
+
colocated=bool(m.get("colocated", False)),
|
|
123
|
+
optional=bool(m.get("optional", False)),
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def _parse_package_root(raw: Any) -> PackageRoot:
|
|
128
|
+
m = _as_mapping(raw, where="layout.package_root")
|
|
129
|
+
if not m:
|
|
130
|
+
return PackageRoot(kind="none")
|
|
131
|
+
kind = m.get("kind", "none")
|
|
132
|
+
return PackageRoot(
|
|
133
|
+
kind=str(kind),
|
|
134
|
+
path=(str(m["path"]) if m.get("path") is not None else None),
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def _parse_layout(doc: Mapping[str, Any]) -> LayoutSpec:
|
|
139
|
+
m = _as_mapping(doc.get("layout"), where="layout")
|
|
140
|
+
source_sets = tuple(
|
|
141
|
+
_parse_source_set(s, idx=i) for i, s in enumerate(_as_tuple(m.get("source_sets")))
|
|
142
|
+
)
|
|
143
|
+
test_sets = tuple(
|
|
144
|
+
_parse_test_set(s, idx=i) for i, s in enumerate(_as_tuple(m.get("test_sets")))
|
|
145
|
+
)
|
|
146
|
+
default_cwd = m.get("default_command_cwd")
|
|
147
|
+
return LayoutSpec(
|
|
148
|
+
repo_root=str(m.get("repo_root", ".")),
|
|
149
|
+
module_root=str(m.get("module_root", ".")),
|
|
150
|
+
manifest_root=str(m.get("manifest_root", ".")),
|
|
151
|
+
default_command_cwd=(str(default_cwd) if default_cwd is not None else None),
|
|
152
|
+
source_sets=source_sets,
|
|
153
|
+
test_sets=test_sets,
|
|
154
|
+
package_root=_parse_package_root(m.get("package_root")),
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def _parse_report(raw: Any) -> ReportSpec | None:
|
|
159
|
+
if raw is None:
|
|
160
|
+
return None
|
|
161
|
+
m = _as_mapping(raw, where="report")
|
|
162
|
+
return ReportSpec(
|
|
163
|
+
path=(str(m["path"]) if m.get("path") is not None else None),
|
|
164
|
+
format=(str(m["format"]) if m.get("format") is not None else None),
|
|
165
|
+
adapter=(str(m["adapter"]) if m.get("adapter") is not None else None),
|
|
166
|
+
capture=(str(m["capture"]) if m.get("capture") is not None else None),
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def _parse_toolchain(doc: Mapping[str, Any]) -> ToolchainSpec | None:
|
|
171
|
+
raw = doc.get("toolchain")
|
|
172
|
+
if raw is None:
|
|
173
|
+
return None
|
|
174
|
+
m = _as_mapping(raw, where="toolchain")
|
|
175
|
+
manifest_m = _as_mapping(m.get("manifest"), where="toolchain.manifest")
|
|
176
|
+
if not manifest_m:
|
|
177
|
+
raise LanguageProfileError("toolchain: missing required 'manifest' section")
|
|
178
|
+
manifest = ManifestSpec(
|
|
179
|
+
path=str(_require(manifest_m, "path", where="toolchain.manifest")),
|
|
180
|
+
format=str(_require(manifest_m, "format", where="toolchain.manifest")),
|
|
181
|
+
required=bool(manifest_m.get("required", True)),
|
|
182
|
+
)
|
|
183
|
+
integrity = []
|
|
184
|
+
for i, raw_f in enumerate(_as_tuple(m.get("dependency_integrity_files"))):
|
|
185
|
+
fm = _as_mapping(raw_f, where=f"toolchain.dependency_integrity_files[{i}]")
|
|
186
|
+
integrity.append(
|
|
187
|
+
DependencyIntegrityFile(
|
|
188
|
+
path=str(
|
|
189
|
+
_require(
|
|
190
|
+
fm, "path", where=f"toolchain.dependency_integrity_files[{i}]"
|
|
191
|
+
)
|
|
192
|
+
),
|
|
193
|
+
kind=str(fm.get("kind", "lock")),
|
|
194
|
+
required=bool(fm.get("required", False)),
|
|
195
|
+
generated_when=(
|
|
196
|
+
str(fm["generated_when"])
|
|
197
|
+
if fm.get("generated_when") is not None
|
|
198
|
+
else None
|
|
199
|
+
),
|
|
200
|
+
)
|
|
201
|
+
)
|
|
202
|
+
# Everything not explicitly modeled is preserved (adapter-facing).
|
|
203
|
+
known = {"manifest", "dependency_integrity_files", "package_manager", "module_identity"}
|
|
204
|
+
extra = {k: v for k, v in m.items() if k not in known}
|
|
205
|
+
return ToolchainSpec(
|
|
206
|
+
manifest=manifest,
|
|
207
|
+
dependency_integrity_files=tuple(integrity),
|
|
208
|
+
package_manager=_as_mapping(m.get("package_manager"), where="toolchain.package_manager"),
|
|
209
|
+
module_identity=_as_mapping(m.get("module_identity"), where="toolchain.module_identity"),
|
|
210
|
+
extra=extra,
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def _parse_scope(raw: Any) -> ScopeSpec | None:
|
|
215
|
+
if raw is None:
|
|
216
|
+
return None
|
|
217
|
+
m = _as_mapping(raw, where="command.scope")
|
|
218
|
+
return ScopeSpec(
|
|
219
|
+
must_include_source_sets=_as_str_tuple(m.get("must_include_source_sets")),
|
|
220
|
+
must_include_test_sets=_as_str_tuple(m.get("must_include_test_sets")),
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
def _parse_command(cmd_id: str, raw: Any) -> CommandSpec:
|
|
225
|
+
where = f"commands.{cmd_id}"
|
|
226
|
+
m = _as_mapping(raw, where=where)
|
|
227
|
+
argv = _as_str_tuple(_require(m, "argv", where=where))
|
|
228
|
+
if not argv:
|
|
229
|
+
raise LanguageProfileError(f"{where}: 'argv' must be a non-empty list")
|
|
230
|
+
env_raw = _as_mapping(m.get("env"), where=f"{where}.env")
|
|
231
|
+
env = {str(k): str(v) for k, v in env_raw.items()}
|
|
232
|
+
known = {
|
|
233
|
+
"argv",
|
|
234
|
+
"cwd",
|
|
235
|
+
"env",
|
|
236
|
+
"mutates",
|
|
237
|
+
"requires_materialized_deps",
|
|
238
|
+
"report",
|
|
239
|
+
"scope",
|
|
240
|
+
}
|
|
241
|
+
extra = {k: v for k, v in m.items() if k not in known}
|
|
242
|
+
return CommandSpec(
|
|
243
|
+
id=cmd_id,
|
|
244
|
+
argv=argv,
|
|
245
|
+
cwd=(str(m["cwd"]) if m.get("cwd") is not None else None),
|
|
246
|
+
env=env,
|
|
247
|
+
mutates=_as_str_tuple(m.get("mutates")),
|
|
248
|
+
requires_materialized_deps=bool(m.get("requires_materialized_deps", False)),
|
|
249
|
+
report=_parse_report(m.get("report")),
|
|
250
|
+
scope=_parse_scope(m.get("scope")),
|
|
251
|
+
extra=extra,
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
def _parse_commands(doc: Mapping[str, Any]) -> dict[str, CommandSpec]:
|
|
256
|
+
m = _as_mapping(doc.get("commands"), where="commands")
|
|
257
|
+
return {str(cmd_id): _parse_command(str(cmd_id), raw) for cmd_id, raw in m.items()}
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
def _parse_imports(doc: Mapping[str, Any]) -> ImportsSpec | None:
|
|
261
|
+
raw = doc.get("imports")
|
|
262
|
+
if raw is None:
|
|
263
|
+
return None
|
|
264
|
+
m = _as_mapping(raw, where="imports")
|
|
265
|
+
resolver = m.get("resolver_adapter")
|
|
266
|
+
data = {k: v for k, v in m.items() if k != "resolver_adapter"}
|
|
267
|
+
return ImportsSpec(
|
|
268
|
+
resolver_adapter=(str(resolver) if resolver is not None else None),
|
|
269
|
+
data=data,
|
|
270
|
+
)
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
def _parse_tests(doc: Mapping[str, Any]) -> TestsSpec | None:
|
|
274
|
+
raw = doc.get("tests")
|
|
275
|
+
if raw is None:
|
|
276
|
+
return None
|
|
277
|
+
m = _as_mapping(raw, where="tests")
|
|
278
|
+
return TestsSpec(
|
|
279
|
+
semantics_adapter=(
|
|
280
|
+
str(m["semantics_adapter"]) if m.get("semantics_adapter") is not None else None
|
|
281
|
+
),
|
|
282
|
+
runner_report_adapter=(
|
|
283
|
+
str(m["runner_report_adapter"])
|
|
284
|
+
if m.get("runner_report_adapter") is not None
|
|
285
|
+
else None
|
|
286
|
+
),
|
|
287
|
+
test_file_globs=_as_str_tuple(m.get("test_file_globs")),
|
|
288
|
+
assertion_hints=_as_mapping(m.get("assertion_hints"), where="tests.assertion_hints"),
|
|
289
|
+
authenticity_policy=_as_mapping(
|
|
290
|
+
m.get("authenticity_policy"), where="tests.authenticity_policy"
|
|
291
|
+
),
|
|
292
|
+
test_block_kinds=_as_str_tuple(m.get("test_block_kinds")),
|
|
293
|
+
)
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
def _parse_verify(doc: Mapping[str, Any]) -> VerifySpec | None:
|
|
297
|
+
raw = doc.get("verify")
|
|
298
|
+
if raw is None:
|
|
299
|
+
return None
|
|
300
|
+
m = _as_mapping(raw, where="verify")
|
|
301
|
+
return VerifySpec(
|
|
302
|
+
command=(str(m["command"]) if m.get("command") is not None else None),
|
|
303
|
+
report=_parse_report(m.get("report")),
|
|
304
|
+
execution_policy=_as_mapping(
|
|
305
|
+
m.get("execution_policy"), where="verify.execution_policy"
|
|
306
|
+
),
|
|
307
|
+
)
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
def _parse_artifacts(doc: Mapping[str, Any]) -> ArtifactsSpec | None:
|
|
311
|
+
raw = doc.get("artifacts")
|
|
312
|
+
if raw is None:
|
|
313
|
+
return None
|
|
314
|
+
m = _as_mapping(raw, where="artifacts")
|
|
315
|
+
known = {"harness_root", "harness_owned", "ignored"}
|
|
316
|
+
extra = {k: v for k, v in m.items() if k not in known}
|
|
317
|
+
return ArtifactsSpec(
|
|
318
|
+
harness_root=(str(m["harness_root"]) if m.get("harness_root") is not None else None),
|
|
319
|
+
harness_owned=_as_str_tuple(m.get("harness_owned")),
|
|
320
|
+
ignored=_as_str_tuple(m.get("ignored")),
|
|
321
|
+
extra=extra,
|
|
322
|
+
)
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
def _parse_scaffold(doc: Mapping[str, Any]) -> ScaffoldSpec | None:
|
|
326
|
+
raw = doc.get("scaffold")
|
|
327
|
+
if raw is None:
|
|
328
|
+
return None
|
|
329
|
+
m = _as_mapping(raw, where="scaffold")
|
|
330
|
+
templates = tuple(
|
|
331
|
+
_as_mapping(t, where=f"scaffold.templates[{i}]")
|
|
332
|
+
for i, t in enumerate(_as_tuple(m.get("templates")))
|
|
333
|
+
)
|
|
334
|
+
return ScaffoldSpec(
|
|
335
|
+
adapter=(str(m["adapter"]) if m.get("adapter") is not None else None),
|
|
336
|
+
owned_files=_as_str_tuple(m.get("owned_files")),
|
|
337
|
+
templates=templates,
|
|
338
|
+
)
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
# ---------------------------------------------------------------------------
|
|
342
|
+
# public entry point
|
|
343
|
+
# ---------------------------------------------------------------------------
|
|
344
|
+
|
|
345
|
+
#: Top-level keys we model explicitly. Anything else is preserved in ``.extra``.
|
|
346
|
+
_KNOWN_TOP_LEVEL = frozenset(
|
|
347
|
+
{
|
|
348
|
+
"id",
|
|
349
|
+
"aliases",
|
|
350
|
+
"display_name",
|
|
351
|
+
"file_extensions",
|
|
352
|
+
"strictness",
|
|
353
|
+
"layout",
|
|
354
|
+
"toolchain",
|
|
355
|
+
"commands",
|
|
356
|
+
"imports",
|
|
357
|
+
"tests",
|
|
358
|
+
"verify",
|
|
359
|
+
"artifacts",
|
|
360
|
+
"scaffold",
|
|
361
|
+
}
|
|
362
|
+
)
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
def load_language_profile(path: str | Path) -> LanguageProfile:
|
|
366
|
+
"""Parse a language-profile YAML file into a :class:`LanguageProfile`.
|
|
367
|
+
|
|
368
|
+
Placeholder templates are preserved literally (no substitution).
|
|
369
|
+
Unknown top-level keys are kept under ``LanguageProfile.extra``; the
|
|
370
|
+
full document is kept under ``.raw``.
|
|
371
|
+
"""
|
|
372
|
+
p = Path(path)
|
|
373
|
+
try:
|
|
374
|
+
text = p.read_text(encoding="utf-8")
|
|
375
|
+
except OSError as exc: # pragma: no cover - filesystem error passthrough
|
|
376
|
+
raise LanguageProfileError(f"cannot read language profile {p}: {exc}") from exc
|
|
377
|
+
|
|
378
|
+
try:
|
|
379
|
+
doc = yaml.safe_load(text)
|
|
380
|
+
except yaml.YAMLError as exc:
|
|
381
|
+
raise LanguageProfileError(f"invalid YAML in language profile {p}: {exc}") from exc
|
|
382
|
+
|
|
383
|
+
if doc is None:
|
|
384
|
+
raise LanguageProfileError(f"language profile {p} is empty")
|
|
385
|
+
if not isinstance(doc, Mapping):
|
|
386
|
+
raise LanguageProfileError(
|
|
387
|
+
f"language profile {p} must be a mapping at the top level, "
|
|
388
|
+
f"got {type(doc).__name__}"
|
|
389
|
+
)
|
|
390
|
+
|
|
391
|
+
extra = {k: v for k, v in doc.items() if k not in _KNOWN_TOP_LEVEL}
|
|
392
|
+
|
|
393
|
+
return LanguageProfile(
|
|
394
|
+
identity=_parse_identity(doc),
|
|
395
|
+
layout=_parse_layout(doc),
|
|
396
|
+
toolchain=_parse_toolchain(doc),
|
|
397
|
+
commands=_parse_commands(doc),
|
|
398
|
+
imports=_parse_imports(doc),
|
|
399
|
+
tests=_parse_tests(doc),
|
|
400
|
+
verify=_parse_verify(doc),
|
|
401
|
+
artifacts=_parse_artifacts(doc),
|
|
402
|
+
scaffold=_parse_scaffold(doc),
|
|
403
|
+
extra=extra,
|
|
404
|
+
raw=dict(doc),
|
|
405
|
+
)
|