codd-dev 2.33.0__tar.gz → 2.35.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.33.0 → codd_dev-2.35.0}/PKG-INFO +1 -1
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/__init__.py +1 -1
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/vb_marker_authenticity.py +461 -18
- {codd_dev-2.33.0 → codd_dev-2.35.0}/pyproject.toml +1 -1
- {codd_dev-2.33.0 → codd_dev-2.35.0}/.gitignore +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/LICENSE +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/README.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/bench_fixture/README.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/__main__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/_git_helper.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/action_outcome.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/ai_invoke.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/ai_patch.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/artifact_contract.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/artifact_ids.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/assembler.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/bridge.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/brownfield/pipeline.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/capability_completeness.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/claude_cli.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/cli.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/clustering.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/coherence_engine.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/confidence.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/config.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/config_schema.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/contracts.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/coverage_execution_coherence.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/auto_repair.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/builder.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/extractor.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/impact.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/runner.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/defaults.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/defaults.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dependency_lock_coherence.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployer.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/extractor.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/curl.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/playwright.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/vitest.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/design_md.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/diff/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/diff/apply.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/diff/engine.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/diff/persistence.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/discovery.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/drift.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/e2e_contract_coherence.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/e2e_generator.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/e2e_runner.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/apply.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/engine.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/finding.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/env_refs.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/extract_ai.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/extract_paths.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/extractor.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/design_updater.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/templates_loader.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fixer.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fixup_drift.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/frontmatter.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/generator.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/git_evidence.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/graph.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/greenfield/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/greenfield/pipeline.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hitl_session.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/iac_nfr.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/implement_oracle.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/implement_oracle_scope.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/implementer.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/import_coherence.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/inheritance.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/init/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/approval.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/criteria_expander.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/parser.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/plan_deriver.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/plan_derive_meta.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/mcp_server.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/measure.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/operational_e2e_audit.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/operations_derive.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/_shared.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/api_specs.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/iac.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/python_ast.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/schemas.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/treesitter.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/planner.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/policy.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/project_types.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/propagate.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/propagation_common.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/propagator.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/registry.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/auto_scope_guard.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/engine.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/git_patcher.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/history.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/llm_repair_engine.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/loop.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/repairability_classifier.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/schema.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/templates/propose_meta.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/test_failure_attribution.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/verify_runner.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair_slice.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/require.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/require_plugins.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/require_propagate.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirements_meta.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/restoration_report.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/restore.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/routes_extractor.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/scanner.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/schema_refs.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/skills_cli/manager.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/skills_cli/paths.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/surface_reconciliation.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/synth.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/test_detection.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/test_import_coherence.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/traceability.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/validator.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/vb_rerun_scope.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/verifiable_behavior_audit.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/watch/__init__.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/watch/events.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/watch/watcher.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/wiring.py +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/docs/requirements/README.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/dogfood/README.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/examples/README.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-2.33.0 → codd_dev-2.35.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.35.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
|
|
@@ -1001,10 +1001,33 @@ def _net_braces(line: str) -> int:
|
|
|
1001
1001
|
# (the argument anchor that defeats no-op / constant-only helpers).
|
|
1002
1002
|
# A helper that itself delegates to a deeper helper is followed ONE more hop
|
|
1003
1003
|
# (so expectSuccessfulRun → expectExitCode is honored), bounded to avoid cycles.
|
|
1004
|
+
#
|
|
1005
|
+
# BARREL re-export following (step 2b). The binding module is frequently a
|
|
1006
|
+
# *barrel* — an index module that carries NO definition of its own and only
|
|
1007
|
+
# RE-EXPORTS sibling modules (TS ``export * from "./assertions"`` /
|
|
1008
|
+
# ``export { expectOk as ok } from "./asserts"``; Python ``__init__.py`` with
|
|
1009
|
+
# ``from .asserts import expect_ok``). The conventional e2e shape imports helpers
|
|
1010
|
+
# from such a barrel (``import { expectSuccessResult } from "./helpers"`` →
|
|
1011
|
+
# ``helpers/index.ts`` → ``export * from "./assertions"`` → the real
|
|
1012
|
+
# ``expectSuccessResult`` body). When ``def_finder`` finds no def in the binding
|
|
1013
|
+
# module, the resolver FOLLOWS the module's re-exports to the file that actually
|
|
1014
|
+
# defines the symbol (bounded by ``_MAX_REEXPORT_HOPS`` + a cycle guard). This is
|
|
1015
|
+
# purely an "ability to reach the real body"; the body still has to carry a
|
|
1016
|
+
# PRIMITIVE assertion + argument anchor — a barrel re-exporting a no-op/constant
|
|
1017
|
+
# helper still FAILS, and an unfollowable / depth-exhausted re-export is still an
|
|
1018
|
+
# unresolved helper (greenfield strict ⇒ fail). The follower is per-profile (TS
|
|
1019
|
+
# ``export */named/alias``; Python ``__init__`` ``from .x import y``) so the gate
|
|
1020
|
+
# stays language-agnostic; an unknown stack supplies no follower and degrades.
|
|
1004
1021
|
# ---------------------------------------------------------------------------
|
|
1005
1022
|
|
|
1006
1023
|
|
|
1007
1024
|
_MAX_HELPER_HOPS = 2
|
|
1025
|
+
#: Bound on how many re-export edges (barrel → barrel → … → defining module) the
|
|
1026
|
+
#: resolver will chase for ONE symbol. Generous enough for nested index barrels
|
|
1027
|
+
#: (``helpers/index → assertions/index → cli-assertions``) yet bounded to keep a
|
|
1028
|
+
#: pathological re-export web finite; combined with a per-symbol ``seen`` set of
|
|
1029
|
+
#: visited module files for cycle safety.
|
|
1030
|
+
_MAX_REEXPORT_HOPS = 4
|
|
1008
1031
|
|
|
1009
1032
|
#: A bare or member call ``name(`` / ``a.b.name(`` — captures the dotted callee.
|
|
1010
1033
|
_CALL_RE = re.compile(r"(?P<callee>[A-Za-z_$][\w$.]*)\s*\(")
|
|
@@ -1136,8 +1159,10 @@ def _ts_find_function_def(module_text: str, name: str) -> "tuple[str, list[str]]
|
|
|
1136
1159
|
Returns ``(body_text, param_names)`` or ``None``. Anchored on the function
|
|
1137
1160
|
NAME, then the parameter list is read by paren-matching from the following
|
|
1138
1161
|
``(`` (so a MULTI-LINE signature works), and the body is brace-matched from
|
|
1139
|
-
the
|
|
1140
|
-
|
|
1162
|
+
the function-body ``{`` AFTER any return-type annotation (so a brace-bearing
|
|
1163
|
+
return type like ``Promise<{ error: string }>`` / ``: { ok: boolean }`` is not
|
|
1164
|
+
mistaken for the body — see :func:`_ts_body_brace_index`). Arrow /
|
|
1165
|
+
function-expression / ``function`` declaration forms are all handled.
|
|
1141
1166
|
"""
|
|
1142
1167
|
|
|
1143
1168
|
for pattern in _TS_FUNC_NAME_RES:
|
|
@@ -1145,11 +1170,12 @@ def _ts_find_function_def(module_text: str, name: str) -> "tuple[str, list[str]]
|
|
|
1145
1170
|
if m.group("name") != name:
|
|
1146
1171
|
continue
|
|
1147
1172
|
# The name-anchor match ends at the def's opening ``(``; paren-match
|
|
1148
|
-
# the (possibly multi-line) params, then
|
|
1173
|
+
# the (possibly multi-line) params, then locate the BODY ``{`` past
|
|
1174
|
+
# any return-type annotation, then brace-match the body.
|
|
1149
1175
|
params, after = _read_paren_group(module_text, m.end() - 1)
|
|
1150
1176
|
if params is None:
|
|
1151
1177
|
continue
|
|
1152
|
-
brace = module_text
|
|
1178
|
+
brace = _ts_body_brace_index(module_text, after)
|
|
1153
1179
|
if brace < 0:
|
|
1154
1180
|
continue
|
|
1155
1181
|
body = _read_brace_group(module_text, brace)
|
|
@@ -1157,6 +1183,167 @@ def _ts_find_function_def(module_text: str, name: str) -> "tuple[str, list[str]]
|
|
|
1157
1183
|
return None
|
|
1158
1184
|
|
|
1159
1185
|
|
|
1186
|
+
def _ts_body_brace_index(text: str, after_params: int) -> int:
|
|
1187
|
+
"""Index of the FUNCTION-BODY ``{`` that follows a TS signature's params.
|
|
1188
|
+
|
|
1189
|
+
``after_params`` is the index just past the params' closing ``)``. Between it
|
|
1190
|
+
and the body there may be a RETURN-TYPE ANNOTATION (``): T {``) and/or an arrow
|
|
1191
|
+
(``) => {``). The naive "first ``{`` after the params" is WRONG when the return
|
|
1192
|
+
type itself contains braces — ``): Promise<{ error: string }> {`` (the noteapi
|
|
1193
|
+
false-RED), ``): { ok: boolean } {`` (object-type literal), or
|
|
1194
|
+
``): Promise<Array<{ id: number }>> {`` — there the first ``{`` is part of the
|
|
1195
|
+
TYPE, not the body. This skips the annotation and returns the body ``{``.
|
|
1196
|
+
|
|
1197
|
+
The decision uses the ``:`` (return-type marker) as the disambiguator:
|
|
1198
|
+
|
|
1199
|
+
* The first significant token after the params is ``{`` → the BODY (no return
|
|
1200
|
+
type at all, e.g. ``function g(a) {``).
|
|
1201
|
+
* It is ``=>`` → an arrow with NO return type; the body is the next top-level
|
|
1202
|
+
``{`` (an EXPRESSION-bodied arrow has no block ``{`` → return ``-1`` so the
|
|
1203
|
+
caller degrades rather than mis-extract).
|
|
1204
|
+
* It is ``:`` → a return-type annotation. Consume the type (skipping balanced
|
|
1205
|
+
``<> () [] {}`` groups so a generic / tuple / object-type literal inside the
|
|
1206
|
+
type is never seen at top level), and stop at the top-level ``{`` (body) or
|
|
1207
|
+
``=>`` (typed arrow → body is its next ``{``). An object-type literal that is
|
|
1208
|
+
the WHOLE return type (``: { ok: boolean } {``) is the first balanced
|
|
1209
|
+
``{...}`` right after ``:`` — it is skipped, and the body is the ``{`` after.
|
|
1210
|
+
|
|
1211
|
+
Returns ``-1`` when no body brace is found (unbalanced / expression arrow).
|
|
1212
|
+
|
|
1213
|
+
KNOWN LIMITATION (fails CLOSED, never false-green): a return type that is
|
|
1214
|
+
itself a FUNCTION TYPE (``): (x) => { y: 1 } {``) is not disambiguated — the
|
|
1215
|
+
inner ``=>`` is read as the function's own arrow. This degrades to a wrong
|
|
1216
|
+
body span ⇒ ``helper_no_primitive`` ⇒ the marker FAILS (a conservative
|
|
1217
|
+
false-RED, not a false pass). Such a return annotation on an assertion helper
|
|
1218
|
+
is vanishingly rare; the gate stays anti-false-green either way.
|
|
1219
|
+
"""
|
|
1220
|
+
|
|
1221
|
+
n = len(text)
|
|
1222
|
+
i = _ts_skip_trivia(text, after_params)
|
|
1223
|
+
if i >= n:
|
|
1224
|
+
return -1
|
|
1225
|
+
# No return-type annotation: an immediate body brace, or a `=>` arrow.
|
|
1226
|
+
if text[i] == "{":
|
|
1227
|
+
return i
|
|
1228
|
+
if text.startswith("=>", i):
|
|
1229
|
+
j = _ts_skip_trivia(text, i + 2)
|
|
1230
|
+
return j if j < n and text[j] == "{" else -1
|
|
1231
|
+
if text[i] != ":":
|
|
1232
|
+
# Unexpected token between params and body — be permissive: take the next
|
|
1233
|
+
# top-level brace past it (covers exotic but brace-free prefixes).
|
|
1234
|
+
return _ts_scan_type_to_body(text, i)
|
|
1235
|
+
# `:` return-type annotation. Skip it and consume the type up to the body.
|
|
1236
|
+
return _ts_scan_type_to_body(text, i + 1)
|
|
1237
|
+
|
|
1238
|
+
|
|
1239
|
+
def _ts_skip_trivia(text: str, i: int) -> int:
|
|
1240
|
+
"""Advance ``i`` past whitespace and ``//`` / ``/* */`` comments."""
|
|
1241
|
+
|
|
1242
|
+
n = len(text)
|
|
1243
|
+
while i < n:
|
|
1244
|
+
ch = text[i]
|
|
1245
|
+
if ch.isspace():
|
|
1246
|
+
i += 1
|
|
1247
|
+
elif ch == "/" and i + 1 < n and text[i + 1] == "/":
|
|
1248
|
+
nl = text.find("\n", i)
|
|
1249
|
+
i = n if nl < 0 else nl + 1
|
|
1250
|
+
elif ch == "/" and i + 1 < n and text[i + 1] == "*":
|
|
1251
|
+
end = text.find("*/", i + 2)
|
|
1252
|
+
i = n if end < 0 else end + 2
|
|
1253
|
+
else:
|
|
1254
|
+
break
|
|
1255
|
+
return i
|
|
1256
|
+
|
|
1257
|
+
|
|
1258
|
+
#: Type-level binary operators that JOIN type atoms (``A | B``, ``A & B``). After
|
|
1259
|
+
#: one of these the parser expects ANOTHER atom, so a following object-type literal
|
|
1260
|
+
#: ``{...}`` is still part of the return type, not the body.
|
|
1261
|
+
_TS_TYPE_JOIN_CHARS = frozenset("|&")
|
|
1262
|
+
|
|
1263
|
+
|
|
1264
|
+
def _ts_scan_type_to_body(text: str, i: int) -> int:
|
|
1265
|
+
"""From inside a return-type annotation, return the body ``{`` index (or -1).
|
|
1266
|
+
|
|
1267
|
+
Models the return type as a sequence of type ATOMS joined by ``|`` / ``&``
|
|
1268
|
+
operators, ending at the body ``{`` or a typed-arrow ``=>``. ``expecting_atom``
|
|
1269
|
+
starts True (the type begins right after ``:`` or a join operator); a top-level
|
|
1270
|
+
``{`` while ``expecting_atom`` is an OBJECT-TYPE LITERAL atom (``: { ok } {`` /
|
|
1271
|
+
``: A | { err } {``) and is skipped as a balanced group, whereas a top-level
|
|
1272
|
+
``{`` while NOT expecting an atom (a complete type already consumed, no join
|
|
1273
|
+
operator following) is the BODY. Generics ``<…>``, tuples ``[…]`` and paren
|
|
1274
|
+
types ``(…)`` are skipped as balanced groups (their inner braces never surface).
|
|
1275
|
+
"""
|
|
1276
|
+
|
|
1277
|
+
n = len(text)
|
|
1278
|
+
angle = paren = bracket = 0
|
|
1279
|
+
expecting_atom = True
|
|
1280
|
+
in_str: str | None = None
|
|
1281
|
+
prev = ""
|
|
1282
|
+
while i < n:
|
|
1283
|
+
ch = text[i]
|
|
1284
|
+
if in_str is not None:
|
|
1285
|
+
if ch == in_str and prev != "\\":
|
|
1286
|
+
in_str = None
|
|
1287
|
+
prev = ch
|
|
1288
|
+
i += 1
|
|
1289
|
+
continue
|
|
1290
|
+
if ch in ("'", '"', "`"):
|
|
1291
|
+
in_str = ch
|
|
1292
|
+
expecting_atom = False
|
|
1293
|
+
prev = ch
|
|
1294
|
+
i += 1
|
|
1295
|
+
continue
|
|
1296
|
+
if ch == "/" and i + 1 < n and text[i + 1] == "/":
|
|
1297
|
+
nl = text.find("\n", i)
|
|
1298
|
+
i = n if nl < 0 else nl
|
|
1299
|
+
prev = ""
|
|
1300
|
+
continue
|
|
1301
|
+
if ch == "/" and i + 1 < n and text[i + 1] == "*":
|
|
1302
|
+
end = text.find("*/", i + 2)
|
|
1303
|
+
i = n if end < 0 else end + 2
|
|
1304
|
+
prev = ""
|
|
1305
|
+
continue
|
|
1306
|
+
top = angle == 0 and paren == 0 and bracket == 0
|
|
1307
|
+
if ch == "<":
|
|
1308
|
+
angle += 1
|
|
1309
|
+
expecting_atom = False
|
|
1310
|
+
elif ch == ">":
|
|
1311
|
+
if angle > 0:
|
|
1312
|
+
angle -= 1
|
|
1313
|
+
elif ch == "(":
|
|
1314
|
+
paren += 1
|
|
1315
|
+
expecting_atom = False
|
|
1316
|
+
elif ch == "[":
|
|
1317
|
+
bracket += 1
|
|
1318
|
+
expecting_atom = False
|
|
1319
|
+
elif ch in (")", "]"):
|
|
1320
|
+
if ch == ")" and paren > 0:
|
|
1321
|
+
paren -= 1
|
|
1322
|
+
elif ch == "]" and bracket > 0:
|
|
1323
|
+
bracket -= 1
|
|
1324
|
+
elif top and text.startswith("=>", i):
|
|
1325
|
+
# Typed arrow: the body is the next top-level `{`.
|
|
1326
|
+
j = _ts_skip_trivia(text, i + 2)
|
|
1327
|
+
return j if j < n and text[j] == "{" else -1
|
|
1328
|
+
elif top and ch == "{":
|
|
1329
|
+
if not expecting_atom:
|
|
1330
|
+
return i # a complete type precedes this `{` → it is the body.
|
|
1331
|
+
# Object-type literal atom (`: { ok } {` / `A | { err } {`) — skip its
|
|
1332
|
+
# balanced group; an atom is now consumed (no longer expecting one).
|
|
1333
|
+
group = _read_brace_group(text, i)
|
|
1334
|
+
i += len(group)
|
|
1335
|
+
expecting_atom = False
|
|
1336
|
+
prev = "}"
|
|
1337
|
+
continue
|
|
1338
|
+
elif top and ch in _TS_TYPE_JOIN_CHARS:
|
|
1339
|
+
expecting_atom = True # `|`/`&` → another atom follows.
|
|
1340
|
+
elif top and not ch.isspace():
|
|
1341
|
+
expecting_atom = False # identifier / `.` / `:` … consumes/continues an atom
|
|
1342
|
+
prev = ch
|
|
1343
|
+
i += 1
|
|
1344
|
+
return -1
|
|
1345
|
+
|
|
1346
|
+
|
|
1160
1347
|
def _read_paren_group(text: str, open_idx: int) -> "tuple[str | None, int]":
|
|
1161
1348
|
"""Inner text of the paren group whose ``(`` is at/just after ``open_idx``.
|
|
1162
1349
|
|
|
@@ -1218,6 +1405,62 @@ def _read_brace_group(text: str, open_brace_idx: int) -> str:
|
|
|
1218
1405
|
return text[open_brace_idx:]
|
|
1219
1406
|
|
|
1220
1407
|
|
|
1408
|
+
# ── TypeScript / JavaScript barrel re-export following ───────────────────────
|
|
1409
|
+
#
|
|
1410
|
+
# A barrel module re-exports siblings instead of defining the symbol. Two forms:
|
|
1411
|
+
# ``export * from "./X"`` (star — symbol unchanged, try X)
|
|
1412
|
+
# ``export { Y } from "./X"`` (named — local name Y, original Y)
|
|
1413
|
+
# ``export { Y as Z } from "./X"`` (named+alias — local Z, original Y)
|
|
1414
|
+
# A ``export {}`` with NO ``from`` clause is a LOCAL re-export of in-file symbols,
|
|
1415
|
+
# not a re-export edge, and is ignored here (the def, if any, is found in-file by
|
|
1416
|
+
# ``_ts_find_function_def`` already).
|
|
1417
|
+
|
|
1418
|
+
#: ``export * from "./x"`` and ``export * as ns from "./x"`` (a namespace star
|
|
1419
|
+
#: binds a NAMESPACE object, not the bare symbol, so it is NOT a transparent
|
|
1420
|
+
#: re-export of ``symbol`` — only the plain ``export * from`` is followed).
|
|
1421
|
+
_TS_EXPORT_STAR_RE = re.compile(
|
|
1422
|
+
r"""^[ \t]*export\s+\*\s+from\s*['"](?P<spec>[^'"]+)['"]""", re.MULTILINE
|
|
1423
|
+
)
|
|
1424
|
+
#: ``export { a, b as c } from "./x"`` (the ``from`` clause makes it a re-export).
|
|
1425
|
+
_TS_EXPORT_NAMED_FROM_RE = re.compile(
|
|
1426
|
+
r"""^[ \t]*export\s+(?:type\s+)?\{(?P<names>[^}]*)\}\s*from\s*['"](?P<spec>[^'"]+)['"]""",
|
|
1427
|
+
re.MULTILINE,
|
|
1428
|
+
)
|
|
1429
|
+
|
|
1430
|
+
|
|
1431
|
+
def _ts_reexport_edges(module_text: str, symbol: str) -> list[tuple[str, str]]:
|
|
1432
|
+
"""Re-export edges from a TS barrel that can carry ``symbol`` onward.
|
|
1433
|
+
|
|
1434
|
+
Returns ``(spec, original_name)`` pairs: ``spec`` is the relative module to
|
|
1435
|
+
follow, ``original_name`` is the name to look for THERE (an alias flips the
|
|
1436
|
+
name back). ``export * from "./x"`` forwards ``symbol`` unchanged. A named
|
|
1437
|
+
re-export forwards ONLY when its LOCAL name (after ``as``) equals ``symbol``,
|
|
1438
|
+
and the original (before ``as``) is what the target module defines. Order:
|
|
1439
|
+
explicit named re-exports first (a precise alias should win over a star), then
|
|
1440
|
+
``export *`` fan-out. Only relative (same-repo) specs are returned.
|
|
1441
|
+
"""
|
|
1442
|
+
|
|
1443
|
+
edges: list[tuple[str, str]] = []
|
|
1444
|
+
for match in _TS_EXPORT_NAMED_FROM_RE.finditer(module_text):
|
|
1445
|
+
spec = match.group("spec")
|
|
1446
|
+
if not spec.startswith("."):
|
|
1447
|
+
continue
|
|
1448
|
+
for raw in match.group("names").split(","):
|
|
1449
|
+
name = raw.strip()
|
|
1450
|
+
if not name:
|
|
1451
|
+
continue
|
|
1452
|
+
parts = [p.strip() for p in name.split(" as ")]
|
|
1453
|
+
original = parts[0]
|
|
1454
|
+
local = parts[-1]
|
|
1455
|
+
if local == symbol:
|
|
1456
|
+
edges.append((spec, original))
|
|
1457
|
+
for match in _TS_EXPORT_STAR_RE.finditer(module_text):
|
|
1458
|
+
spec = match.group("spec")
|
|
1459
|
+
if spec.startswith("."):
|
|
1460
|
+
edges.append((spec, symbol)) # star forwards the name unchanged
|
|
1461
|
+
return edges
|
|
1462
|
+
|
|
1463
|
+
|
|
1221
1464
|
# ── Python resolution ───────────────────────────────────────────────────────
|
|
1222
1465
|
|
|
1223
1466
|
#: ``from pkg.mod import a, b as c`` / ``from .mod import x``.
|
|
@@ -1241,6 +1484,42 @@ def _py_imported_module(importer_text: str, symbol: str) -> str | None:
|
|
|
1241
1484
|
return None
|
|
1242
1485
|
|
|
1243
1486
|
|
|
1487
|
+
def _py_reexport_edges(module_text: str, symbol: str) -> list[tuple[str, str]]:
|
|
1488
|
+
"""Re-export edges from a Python ``__init__.py`` barrel carrying ``symbol``.
|
|
1489
|
+
|
|
1490
|
+
Mirrors :func:`_ts_reexport_edges` for the Python package-barrel convention.
|
|
1491
|
+
Returns ``(mod, original_name)`` pairs: ``mod`` is the relative module to
|
|
1492
|
+
follow (resolved with the SAME ``_py_resolve_module`` rules, with the barrel's
|
|
1493
|
+
own path as the importer), ``original_name`` is the name to look for there.
|
|
1494
|
+
``from .x import y`` → forwards ``y`` unchanged when ``y == symbol``
|
|
1495
|
+
``from .x import y as z`` → forwards ``y`` when the LOCAL ``z == symbol``
|
|
1496
|
+
``from .x import *`` → forwards ``symbol`` unchanged (star)
|
|
1497
|
+
Only explicit-relative imports (``from .x`` / ``from ..pkg.x``) are followed —
|
|
1498
|
+
an absolute ``from app.x import y`` re-export is unusual in a test barrel and
|
|
1499
|
+
is conservatively skipped (kept out of the same-dir 1-hop re-export graph).
|
|
1500
|
+
"""
|
|
1501
|
+
|
|
1502
|
+
edges: list[tuple[str, str]] = []
|
|
1503
|
+
for match in _PY_FROM_IMPORT_RE.finditer(module_text):
|
|
1504
|
+
mod = match.group("mod")
|
|
1505
|
+
if not mod.startswith("."):
|
|
1506
|
+
continue
|
|
1507
|
+
names = match.group("names")
|
|
1508
|
+
for raw in names.replace("(", " ").replace(")", " ").split(","):
|
|
1509
|
+
name = raw.strip()
|
|
1510
|
+
if not name:
|
|
1511
|
+
continue
|
|
1512
|
+
if name == "*":
|
|
1513
|
+
edges.append((mod, symbol)) # star re-export forwards the name
|
|
1514
|
+
continue
|
|
1515
|
+
parts = [p.strip() for p in name.split(" as ")]
|
|
1516
|
+
original = parts[0]
|
|
1517
|
+
local = parts[-1]
|
|
1518
|
+
if local == symbol:
|
|
1519
|
+
edges.append((mod, original))
|
|
1520
|
+
return edges
|
|
1521
|
+
|
|
1522
|
+
|
|
1244
1523
|
def _py_resolve_module(importer_rel: str, mod: str, project_root: Path) -> Path | None:
|
|
1245
1524
|
"""Resolve a python ``from <mod> import`` module to a sibling file (1 hop).
|
|
1246
1525
|
|
|
@@ -1351,13 +1630,19 @@ def _resolve_evidence(
|
|
|
1351
1630
|
imported_lookup: Callable[[str, str], str | None],
|
|
1352
1631
|
module_resolver: Callable[[str, str, Path], Path | None],
|
|
1353
1632
|
def_finder: Callable[[str, str], "tuple[str, list[str]] | None"],
|
|
1633
|
+
reexport_edges: Callable[[str, str], list[tuple[str, str]]] | None = None,
|
|
1354
1634
|
) -> AssertionEvidence:
|
|
1355
1635
|
"""Shared 1-hop helper-resolution engine (language plug-ins supply the rest).
|
|
1356
1636
|
|
|
1357
1637
|
``primitive_re`` detects a primitive assertion/fail in a helper body;
|
|
1358
1638
|
``imported_lookup(importer_text, symbol)`` returns the binding specifier/module;
|
|
1359
1639
|
``module_resolver(importer_rel, spec, root)`` resolves it to a file;
|
|
1360
|
-
``def_finder(module_text, name)`` returns ``(body, params)`` for the helper
|
|
1640
|
+
``def_finder(module_text, name)`` returns ``(body, params)`` for the helper;
|
|
1641
|
+
``reexport_edges(module_text, symbol)`` (optional) returns the barrel
|
|
1642
|
+
re-export edges that can carry ``symbol`` onward, so a helper imported from a
|
|
1643
|
+
barrel index that only RE-EXPORTS its real definition is still reachable. A
|
|
1644
|
+
profile that supplies no follower simply never crosses a barrel (degrades to
|
|
1645
|
+
the 2.31.0 direct/simple-import behavior).
|
|
1361
1646
|
"""
|
|
1362
1647
|
|
|
1363
1648
|
calls = _extract_helper_calls(block.body_text)
|
|
@@ -1379,6 +1664,7 @@ def _resolve_evidence(
|
|
|
1379
1664
|
imported_lookup=imported_lookup,
|
|
1380
1665
|
module_resolver=module_resolver,
|
|
1381
1666
|
def_finder=def_finder,
|
|
1667
|
+
reexport_edges=reexport_edges,
|
|
1382
1668
|
hops=_MAX_HELPER_HOPS,
|
|
1383
1669
|
seen=frozenset(),
|
|
1384
1670
|
)
|
|
@@ -1400,6 +1686,75 @@ def _resolve_evidence(
|
|
|
1400
1686
|
return AssertionEvidence(ok=False, reason="no_assertion")
|
|
1401
1687
|
|
|
1402
1688
|
|
|
1689
|
+
def _follow_reexports_for_def(
|
|
1690
|
+
*,
|
|
1691
|
+
name: str,
|
|
1692
|
+
module_text: str,
|
|
1693
|
+
module_rel: str,
|
|
1694
|
+
project_root: Path,
|
|
1695
|
+
module_resolver: Callable[[str, str, Path], Path | None],
|
|
1696
|
+
def_finder: Callable[[str, str], "tuple[str, list[str]] | None"],
|
|
1697
|
+
reexport_edges: Callable[[str, str], list[tuple[str, str]]],
|
|
1698
|
+
depth: int,
|
|
1699
|
+
visited: frozenset[str],
|
|
1700
|
+
) -> "tuple[tuple[str, list[str]], str, str] | None":
|
|
1701
|
+
"""Follow a barrel's re-export edges to the module that DEFINES ``name``.
|
|
1702
|
+
|
|
1703
|
+
``module_text`` / ``module_rel`` are the current (barrel) module. Each
|
|
1704
|
+
re-export edge ``(spec, original_name)`` from :func:`reexport_edges` is
|
|
1705
|
+
resolved with the SAME ``module_resolver`` used for imports (the barrel acts
|
|
1706
|
+
as the importer for its own relative re-exports), the target module is read,
|
|
1707
|
+
and ``def_finder`` is tried there for ``original_name``. A target that is
|
|
1708
|
+
itself a barrel is recursed into (``original_name`` carried forward, depth
|
|
1709
|
+
decremented). Returns ``((body, params), defining_text, defining_rel)`` for
|
|
1710
|
+
the FIRST edge that reaches a real def, or ``None`` if no edge within
|
|
1711
|
+
``depth`` hops resolves. Bounded by ``depth`` and a ``visited`` set of module
|
|
1712
|
+
rel-paths (cycle guard: ``a → b → a`` barrels terminate).
|
|
1713
|
+
|
|
1714
|
+
Pure reach: the returned body is still subject to the caller's primitive +
|
|
1715
|
+
argument-anchor checks, so a barrel that re-exports a no-op/constant helper
|
|
1716
|
+
yields that no-op body (which then FAILS) — never a pass.
|
|
1717
|
+
"""
|
|
1718
|
+
|
|
1719
|
+
if depth <= 0 or module_rel in visited:
|
|
1720
|
+
return None
|
|
1721
|
+
visited = visited | {module_rel}
|
|
1722
|
+
|
|
1723
|
+
for spec, original in reexport_edges(module_text, name):
|
|
1724
|
+
target_file = module_resolver(module_rel, spec, project_root)
|
|
1725
|
+
if target_file is None:
|
|
1726
|
+
continue
|
|
1727
|
+
try:
|
|
1728
|
+
target_text = target_file.read_text(encoding="utf-8")
|
|
1729
|
+
except (OSError, UnicodeDecodeError):
|
|
1730
|
+
continue
|
|
1731
|
+
try:
|
|
1732
|
+
target_rel = target_file.resolve().relative_to(project_root).as_posix()
|
|
1733
|
+
except ValueError:
|
|
1734
|
+
target_rel = spec
|
|
1735
|
+
if target_rel in visited:
|
|
1736
|
+
continue
|
|
1737
|
+
found = def_finder(target_text, original)
|
|
1738
|
+
if found is not None:
|
|
1739
|
+
return found, target_text, target_rel
|
|
1740
|
+
# Target is itself a barrel — recurse, carrying the (possibly aliased)
|
|
1741
|
+
# original name onward and decrementing the re-export budget.
|
|
1742
|
+
deeper = _follow_reexports_for_def(
|
|
1743
|
+
name=original,
|
|
1744
|
+
module_text=target_text,
|
|
1745
|
+
module_rel=target_rel,
|
|
1746
|
+
project_root=project_root,
|
|
1747
|
+
module_resolver=module_resolver,
|
|
1748
|
+
def_finder=def_finder,
|
|
1749
|
+
reexport_edges=reexport_edges,
|
|
1750
|
+
depth=depth - 1,
|
|
1751
|
+
visited=visited,
|
|
1752
|
+
)
|
|
1753
|
+
if deeper is not None:
|
|
1754
|
+
return deeper
|
|
1755
|
+
return None
|
|
1756
|
+
|
|
1757
|
+
|
|
1403
1758
|
def _resolve_one_helper(
|
|
1404
1759
|
*,
|
|
1405
1760
|
name: str,
|
|
@@ -1410,6 +1765,7 @@ def _resolve_one_helper(
|
|
|
1410
1765
|
imported_lookup: Callable[[str, str], str | None],
|
|
1411
1766
|
module_resolver: Callable[[str, str, Path], Path | None],
|
|
1412
1767
|
def_finder: Callable[[str, str], "tuple[str, list[str]] | None"],
|
|
1768
|
+
reexport_edges: Callable[[str, str], list[tuple[str, str]]] | None = None,
|
|
1413
1769
|
hops: int,
|
|
1414
1770
|
seen: frozenset[str],
|
|
1415
1771
|
) -> AssertionEvidence:
|
|
@@ -1420,6 +1776,13 @@ def _resolve_one_helper(
|
|
|
1420
1776
|
delegates to a DEEPER assertion helper (forwarding its own params, checked via
|
|
1421
1777
|
``inner_anchor & param_set`` below) is followed one more hop, so a chain like
|
|
1422
1778
|
``expectSuccessfulRun → expectExitCode`` resolves.
|
|
1779
|
+
|
|
1780
|
+
When the binding module is a BARREL (it carries no def of ``name`` and only
|
|
1781
|
+
re-exports siblings), the def is located by following the module's re-export
|
|
1782
|
+
edges via ``reexport_edges`` (bounded by ``_MAX_REEXPORT_HOPS`` + a visited-
|
|
1783
|
+
file cycle guard). The defining module's text/rel then replace the barrel's so
|
|
1784
|
+
the SAME primitive + argument-anchor checks (and any deeper helper hop) run
|
|
1785
|
+
against the real body — barrel following adds reach, never a pass.
|
|
1423
1786
|
"""
|
|
1424
1787
|
|
|
1425
1788
|
if hops <= 0 or name in seen:
|
|
@@ -1443,19 +1806,41 @@ def _resolve_one_helper(
|
|
|
1443
1806
|
resolved_rel = importer_rel
|
|
1444
1807
|
|
|
1445
1808
|
found = def_finder(module_text, name)
|
|
1809
|
+
if found is None and reexport_edges is not None and spec is not None:
|
|
1810
|
+
# Binding module has no def of ``name`` — it may be a BARREL that only
|
|
1811
|
+
# re-exports the real definition. Follow re-export edges to the defining
|
|
1812
|
+
# module, then continue with the SAME credibility checks below.
|
|
1813
|
+
followed = _follow_reexports_for_def(
|
|
1814
|
+
name=name,
|
|
1815
|
+
module_text=module_text,
|
|
1816
|
+
module_rel=resolved_rel,
|
|
1817
|
+
project_root=project_root,
|
|
1818
|
+
module_resolver=module_resolver,
|
|
1819
|
+
def_finder=def_finder,
|
|
1820
|
+
reexport_edges=reexport_edges,
|
|
1821
|
+
depth=_MAX_REEXPORT_HOPS,
|
|
1822
|
+
visited=frozenset(),
|
|
1823
|
+
)
|
|
1824
|
+
if followed is not None:
|
|
1825
|
+
found, module_text, resolved_rel = followed
|
|
1446
1826
|
if found is None:
|
|
1447
|
-
# Not defined in the binding module
|
|
1827
|
+
# Not defined in the binding module, no same-file def, and no resolvable
|
|
1828
|
+
# re-export chain reaches a def → unresolved (greenfield strict ⇒ fail).
|
|
1448
1829
|
return AssertionEvidence(ok=False, reason="unresolved_helper", detail=name)
|
|
1449
1830
|
body, params = found
|
|
1450
1831
|
param_set = set(params)
|
|
1451
1832
|
|
|
1452
1833
|
# Primitive assertion/fail in the helper body?
|
|
1453
1834
|
if primitive_re.search(body):
|
|
1454
|
-
# Argument anchor (anti-no-op): a PRIMITIVE assertion
|
|
1455
|
-
#
|
|
1456
|
-
#
|
|
1835
|
+
# Argument anchor (anti-no-op): a PRIMITIVE assertion must reference one of
|
|
1836
|
+
# the helper's own parameters OR a local DERIVED from a parameter (1-2
|
|
1837
|
+
# hops), e.g. ``const body = await readJson(response); expect(body.error)``
|
|
1838
|
+
# — ``body`` flows from the ``response`` param, so the assertion IS anchored
|
|
1839
|
+
# to the call's data. A helper that asserts only a constant
|
|
1840
|
+
# (``expect(true).toBe(true)`` / ``assert True``) references neither, so
|
|
1457
1841
|
# marker-spam delegating to it FAILS — the helper NAME is never trusted.
|
|
1458
|
-
|
|
1842
|
+
anchor_set = _params_and_derived_locals(body, param_set)
|
|
1843
|
+
if _body_references_params(body, anchor_set, primitive_re):
|
|
1459
1844
|
return AssertionEvidence(ok=True, reason="helper_resolved", detail=name)
|
|
1460
1845
|
return AssertionEvidence(ok=False, reason="constant_helper", detail=name)
|
|
1461
1846
|
|
|
@@ -1474,6 +1859,7 @@ def _resolve_one_helper(
|
|
|
1474
1859
|
imported_lookup=imported_lookup,
|
|
1475
1860
|
module_resolver=module_resolver,
|
|
1476
1861
|
def_finder=def_finder,
|
|
1862
|
+
reexport_edges=reexport_edges,
|
|
1477
1863
|
hops=hops - 1,
|
|
1478
1864
|
seen=seen,
|
|
1479
1865
|
)
|
|
@@ -1482,20 +1868,75 @@ def _resolve_one_helper(
|
|
|
1482
1868
|
return AssertionEvidence(ok=False, reason="helper_no_primitive", detail=name)
|
|
1483
1869
|
|
|
1484
1870
|
|
|
1871
|
+
#: An ASSIGNMENT binding a local from an expression: ``const body = …`` /
|
|
1872
|
+
#: ``let x = …`` / ``var y = …`` (TS/JS) and a bare ``name = …`` (Python). Captures
|
|
1873
|
+
#: the bound NAME(s) (lhs) and the RHS expression so a local derived from a
|
|
1874
|
+
#: parameter can be added to the anchor set. ``==`` / ``=>`` / ``<=`` / ``>=`` /
|
|
1875
|
+
#: ``!=`` are excluded (comparisons / arrows, not bindings). Single-name binds are
|
|
1876
|
+
#: matched anywhere a line allows; DESTRUCTURING (``const { a, b } = …`` /
|
|
1877
|
+
#: ``const [x] = …``) requires a leading ``const``/``let``/``var`` keyword and may
|
|
1878
|
+
#: not span a newline — this is what stops the lhs ``{…}`` alternative from
|
|
1879
|
+
#: swallowing the FUNCTION BODY's own opening brace.
|
|
1880
|
+
_ASSIGN_RE = re.compile(
|
|
1881
|
+
r"^[ \t]*(?:"
|
|
1882
|
+
r"(?:const|let|var)\s+(?P<destructure>\{[^}\n]*\}|\[[^\]\n]*\])"
|
|
1883
|
+
r"|(?:(?:const|let|var)\s+)?(?P<name>[A-Za-z_$][\w$]*)"
|
|
1884
|
+
r")\s*=(?![=>])\s*(?P<rhs>.+)$",
|
|
1885
|
+
re.MULTILINE,
|
|
1886
|
+
)
|
|
1887
|
+
#: Derivation hops: ``a = f(param); b = g(a); expect(b…)`` resolves with 2 passes.
|
|
1888
|
+
_MAX_DERIVE_PASSES = 2
|
|
1889
|
+
|
|
1890
|
+
|
|
1891
|
+
def _params_and_derived_locals(body: str, param_set: set[str]) -> set[str]:
|
|
1892
|
+
"""``param_set`` plus locals DERIVED from a parameter within ``body`` (≤2 hops).
|
|
1893
|
+
|
|
1894
|
+
The argument anchor must credit ``const body = await readJson(response);
|
|
1895
|
+
expect(body.error)…`` — the assertion references ``body``, a local that FLOWS
|
|
1896
|
+
from the ``response`` parameter, so it is genuinely anchored to the call's data
|
|
1897
|
+
(root-cause-#2: the 2.31.0 anchor only saw a DIRECT param reference and wrongly
|
|
1898
|
+
rejected param-derived locals). A binding ``X = <rhs>`` adds ``X`` to the set
|
|
1899
|
+
iff its RHS references something already in the set (a param or an
|
|
1900
|
+
already-derived local). Two passes follow a short ``param → a → b`` chain.
|
|
1901
|
+
Constants never enter the set (``const k = 5`` references no param), so a
|
|
1902
|
+
constant-only helper stays unanchored ⇒ FAIL. Destructured bindings
|
|
1903
|
+
(``const { error } = body``) add each bound name when the RHS is derived.
|
|
1904
|
+
"""
|
|
1905
|
+
|
|
1906
|
+
if not param_set:
|
|
1907
|
+
return set()
|
|
1908
|
+
derived = set(param_set)
|
|
1909
|
+
for _ in range(_MAX_DERIVE_PASSES):
|
|
1910
|
+
grew = False
|
|
1911
|
+
for match in _ASSIGN_RE.finditer(body):
|
|
1912
|
+
rhs_idents = set(re.findall(r"[A-Za-z_$][\w$]*", match.group("rhs")))
|
|
1913
|
+
if not (rhs_idents & derived):
|
|
1914
|
+
continue
|
|
1915
|
+
lhs = match.group("destructure") or match.group("name") or ""
|
|
1916
|
+
for lhs_name in re.findall(r"[A-Za-z_$][\w$]*", lhs):
|
|
1917
|
+
if lhs_name not in derived:
|
|
1918
|
+
derived.add(lhs_name)
|
|
1919
|
+
grew = True
|
|
1920
|
+
if not grew:
|
|
1921
|
+
break
|
|
1922
|
+
return derived
|
|
1923
|
+
|
|
1924
|
+
|
|
1485
1925
|
def _body_references_params(
|
|
1486
1926
|
body: str, param_set: set[str], primitive_re: re.Pattern[str]
|
|
1487
1927
|
) -> bool:
|
|
1488
1928
|
"""A primitive assertion in ``body`` references one of ``param_set``.
|
|
1489
1929
|
|
|
1490
1930
|
The "argument anchor": a primitive assertion must mention a parameter (or a
|
|
1491
|
-
value derived from it
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
``
|
|
1931
|
+
value derived from it — ``param_set`` is pre-expanded with param-derived locals
|
|
1932
|
+
by :func:`_params_and_derived_locals` at the call site), so a no-op helper that
|
|
1933
|
+
asserts only a CONSTANT (``expect(true).toBe(true)`` / ``assert True``) and
|
|
1934
|
+
merely *names* a param elsewhere is NOT anchored. The check is per
|
|
1935
|
+
primitive-assertion STATEMENT, where a statement is the assertion line PLUS any
|
|
1936
|
+
following lines indented MORE than it (its block) — so a context-manager
|
|
1937
|
+
assertion (``with pytest.raises(...):\\n fn()``) is anchored by the ``fn()``
|
|
1938
|
+
call in its block, while a trailing same-indent ``log(result)`` after a
|
|
1939
|
+
constant ``expect(true)`` is not.
|
|
1499
1940
|
"""
|
|
1500
1941
|
|
|
1501
1942
|
if not param_set:
|
|
@@ -1541,6 +1982,7 @@ def _resolve_typescript_evidence(
|
|
|
1541
1982
|
imported_lookup=_ts_imported_specifier,
|
|
1542
1983
|
module_resolver=_mod_resolver,
|
|
1543
1984
|
def_finder=_ts_find_function_def,
|
|
1985
|
+
reexport_edges=_ts_reexport_edges,
|
|
1544
1986
|
)
|
|
1545
1987
|
|
|
1546
1988
|
|
|
@@ -1559,4 +2001,5 @@ def _resolve_python_evidence(
|
|
|
1559
2001
|
imported_lookup=_py_imported_module,
|
|
1560
2002
|
module_resolver=_mod_resolver,
|
|
1561
2003
|
def_finder=_py_find_function_def,
|
|
2004
|
+
reexport_edges=_py_reexport_edges,
|
|
1562
2005
|
)
|
|
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
|