codd-dev 3.7.5__tar.gz → 3.25.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-3.7.5 → codd_dev-3.25.0}/.gitignore +3 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/PKG-INFO +3 -1
- {codd_dev-3.7.5 → codd_dev-3.25.0}/README.md +2 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/__init__.py +1 -1
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/brownfield/pipeline.py +118 -10
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/cli.py +90 -4
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/coverage_execution_coherence.py +454 -115
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/builder.py +498 -85
- codd_dev-3.25.0/codd/dag/checks/source_completeness.py +165 -0
- codd_dev-3.25.0/codd/dag/checks/unresolved_import_residue.py +138 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/runner.py +2 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/defaults.yaml +39 -1
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/extractor.py +51 -8
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/__init__.py +15 -1
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/cdp_browser.py +8 -5
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/curl.py +5 -1
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/playwright.py +4 -1
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/pytest_http.py +4 -1
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/vitest.py +4 -1
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/e2e_contract_coherence.py +21 -1
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/extractor.py +281 -27
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fixer.py +28 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/generator.py +132 -2
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/greenfield/pipeline.py +1793 -95
- codd_dev-3.25.0/codd/greenfield/test_rederivation.py +663 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/implement_oracle.py +127 -52
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/implement_oracle_scope.py +120 -12
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/implement_oracle_types.py +13 -5
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/implementer.py +1139 -150
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/import_coherence.py +219 -32
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/__init__.py +6 -0
- codd_dev-3.25.0/codd/languages/adapters/import_resolver.py +36 -0
- codd_dev-3.25.0/codd/languages/adapters/oracle_cpp.py +698 -0
- codd_dev-3.25.0/codd/languages/adapters/oracle_csharp.py +454 -0
- codd_dev-3.25.0/codd/languages/adapters/oracle_java.py +421 -0
- codd_dev-3.25.0/codd/languages/adapters/oracle_javascript.py +904 -0
- codd_dev-3.25.0/codd/languages/adapters/runner_report.py +1386 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/builtin_adapters.py +53 -8
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/contract.py +73 -1
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/loader.py +36 -2
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/profile.py +115 -2
- codd_dev-3.25.0/codd/languages/profiles/cpp.yaml +346 -0
- codd_dev-3.25.0/codd/languages/profiles/csharp.yaml +369 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/profiles/go.yaml +19 -0
- codd_dev-3.25.0/codd/languages/profiles/java.yaml +413 -0
- codd_dev-3.25.0/codd/languages/profiles/javascript.yaml +304 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/profiles/python.yaml +25 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/profiles/typescript.yaml +21 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/registry.py +9 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/verify_executor.py +124 -12
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/verify_plan.py +60 -3
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/criteria_expander.py +9 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/plan_deriver.py +57 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/plan_derive_meta.md +5 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/operational_e2e_audit.py +100 -1
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/__init__.py +0 -1
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/_shared.py +211 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/regex_strategies.py +102 -60
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/treesitter.py +14 -7
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/project_types.py +1581 -81
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/auto_scope_guard.py +5 -0
- codd_dev-3.25.0/codd/repair/design_context.py +415 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/git_patcher.py +26 -2
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/llm_repair_engine.py +112 -4
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/loop.py +259 -23
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/repairability_classifier.py +70 -32
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/schema.py +17 -1
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/templates/propose_meta.md +13 -1
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/templates/repair_strategy_meta.md +15 -10
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/test_failure_attribution.py +61 -6
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/verify_runner.py +247 -15
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/command_plan.py +10 -3
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/vb_marker_authenticity.py +2433 -27
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/vb_rerun_scope.py +24 -11
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/verifiable_behavior_audit.py +308 -16
- {codd_dev-3.7.5 → codd_dev-3.25.0}/pyproject.toml +1 -1
- codd_dev-3.25.0/skills/codd-fable-consult/SKILL.md +166 -0
- codd_dev-3.7.5/codd/languages/adapters/runner_report.py +0 -678
- {codd_dev-3.7.5 → codd_dev-3.25.0}/LICENSE +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/bench_fixture/README.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/__main__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/_git_helper.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/action_outcome.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/ai_invoke.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/ai_patch.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/artifact_contract.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/artifact_ids.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/artifacts/catalog.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/ask_user_question_adapter.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/assembler.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/bridge.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/brownfield/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/capability_completeness.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/claude_cli.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/clustering.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/coherence_adapters.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/coherence_engine.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/confidence.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/config.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/config_schema.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/contracts.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/contracts_registry/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/contracts_registry/__main__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/contracts_registry/certify.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/contracts_registry/generate_matrix.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/contracts_registry/registry.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/coverage_auditor.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/coverage_metrics.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/auto_repair.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/artifact_contract_check.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/cardinality_coverage.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/ci_health.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/dependency_freshness.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/depends_on_consistency.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/deployment_completeness.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/edge_validity.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/environment_coverage.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/extraction_diagnostics.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/implementation_coverage.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/negative_space.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/node_completeness.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/opt_out.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/resource_flow_coherence.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/semantic_contract_conflict.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/stale_evidence.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/task_completion.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/transitive_closure.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/ui_coherence.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/user_journey_coherence.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/coverage_axes.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/cli.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/csharp.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/elixir.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/generic.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/iot.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/java.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/kotlin.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/ruby.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/rust.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/scala.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/swift.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/web.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/extractor.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/impact.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/materiality.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/metadata_access.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/result_status.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/defaults.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dependency_lock_coherence.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deploy_targets/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deploy_targets/app_service.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deploy_targets/base.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deploy_targets/docker_compose.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployer.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/checks/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/ai_command.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/ai_command_factory.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/codex_app_server.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/llm_consideration.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/schema/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/schema/prisma.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/target/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/target/docker_compose.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/design_md.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/diff/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/diff/apply.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/diff/engine.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/diff/persistence.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/diff/templates/diff_prompt.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/discovery.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/drift.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/e2e_extractor.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/e2e_generator.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/e2e_harness.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/e2e_runner.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/apply.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/engine.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/finding.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/formatters/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/formatters/base.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/formatters/interactive.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/formatters/json_fmt.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/formatters/md.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/gap_to_ask.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/lexicon_loader.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/persistence.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/promote.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/routing.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/env_refs.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/extract_ai.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/extract_paths.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/candidate_selector.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/design_updater.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/impact_planner.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/impl_propagation.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/interactive_prompt.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/phenomenon_fixer.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/phenomenon_parser.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/risk_classifier.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/templates/clarification_question.txt +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/templates/design_update.txt +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/templates/impl_update.txt +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/templates/risk_assessment.txt +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/templates_loader.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fixup_drift.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fixup_drift_strategies/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/frontmatter.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/git_evidence.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/graph.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/greenfield/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hitl_session.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hooks/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hooks/pre-commit +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hooks/recipes/codex_hook.sh +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/iac_nfr.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/implementer/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/implementer/chunked_runner.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/implementer/typecheck_loop.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/inheritance.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/init/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/init/lexicon_suggest.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/init/llm_lexicon_suggester.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/init/stack_detector.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/knowledge_fetcher.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/adapters/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/adapters/implement_oracle.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/adapters/oracle_go.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/adapters/oracle_python.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/adapters/oracle_typescript.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/compat.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/oracle_executor.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/path_planner.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/formatters/html.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/formatters/md.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/inspector.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/manager.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/reporter.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/threshold.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/approval.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/best_practice_augmenter.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/design_doc_extractor.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/impl_step_deriver.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/means_catalog_loader.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/parser.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/prompt_builder.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/strategy_validator.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/meta_instruction.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/mcp_server.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/measure.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/operations_derive.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/api_specs.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/extractor_registry.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/filesystem_routes.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/iac.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/python_ast.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/schemas.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/tests_builddeps.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/path_safety.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/planner.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/policy.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/preflight/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/preflight/defaults/cli.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/preflight/defaults/generic.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/preflight/defaults/iot.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/preflight/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/preflight/defaults/web.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/propagate.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/propagation_common.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/propagator.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/reconciliation_ledger.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/reference_resolution.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/registry.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/approval_repair.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/engine.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/history.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/primary_picker.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/proof_breaks.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/repair_result.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/templates/analyze_meta.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/templates/repairability_meta.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair_slice.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/require.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/require_plugins.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/require_propagate.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/required_artifacts/defaults/web.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/required_artifacts_deriver.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirement_completeness_auditor.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirement_reconciliation.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirements_meta.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/restoration_report.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/restore.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/routes_extractor.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/runtime_smoke/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/runtime_smoke/checks.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/runtime_smoke/config.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/runtime_smoke/report.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/runtime_smoke/runner.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/scanner.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/schema_refs.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/screen_flow_validator.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/screen_transition_extractor.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/screen_transitions/defaults.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/skills_cli/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/skills_cli/discovery.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/skills_cli/manager.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/skills_cli/paths.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/adapters/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/adapters/_base.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/adapters/nextjs.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/adapters/playwright.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/adapters/prisma.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/command_authenticity.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/command_override.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/compose.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/loader.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/lock.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/obligations.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/profile.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/project.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/registry.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/replacement_proof.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/resolve.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/surface_reconciliation.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/synth.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/codd.yaml.tmpl +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/conventions.yaml.tmpl +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/doc_links.yaml.tmpl +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/extracted/system-context.md.j2 +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/gitignore.tmpl +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/lexicon_questions.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/lexicon_schema.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/overrides.yaml.tmpl +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/test_detection.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/test_import_coherence.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/traceability.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/validator.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/watch/__init__.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/watch/events.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/watch/propagation_log.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/watch/propagation_pipeline.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/watch/test_runner.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/watch/watcher.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/wiring.py +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/stack_map.yaml +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/docs/cookbook/cdp_browser/README.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/docs/requirements/README.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/examples/README.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-assemble/SKILL.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-evolve/SKILL.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-generate/SKILL.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-greenfield/SKILL.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-impact/SKILL.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-init/SKILL.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-propagate/SKILL.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-restore/SKILL.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-scan/SKILL.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-validate/SKILL.md +0 -0
- {codd_dev-3.7.5 → codd_dev-3.25.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: 3.
|
|
3
|
+
Version: 3.25.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
|
|
@@ -118,6 +118,8 @@ codd greenfield --requirements docs/requirements/requirements.md
|
|
|
118
118
|
|
|
119
119
|
It saves a checkpoint after every step, so `codd greenfield --resume` continues where it left off. Add `--dry-run` to preview the plan first, or `--ntfy-topic <topic>` to get progress pings on your phone.
|
|
120
120
|
|
|
121
|
+
> **Language coverage today:** unattended greenfield is empirically validated end-to-end on **TypeScript and Python**. The other supported languages share the same language-profile machinery but have not yet had unattended end-to-end validation.
|
|
122
|
+
|
|
121
123
|
The same one-command pipeline (`codd greenfield --requirements FILE`) also ships as three transparent, adaptable vehicles you can read and tweak: a shell script ([`examples/greenfield_autopilot.sh`](examples/greenfield_autopilot.sh)), a Claude Code workflow ([`examples/claude_workflows/codd-greenfield.js`](examples/claude_workflows/codd-greenfield.js)), and a skill (`codd skills install codd-greenfield --target both`).
|
|
122
124
|
|
|
123
125
|
### 2. Work on an existing codebase — `codd init` + `codd scan`
|
|
@@ -76,6 +76,8 @@ codd greenfield --requirements docs/requirements/requirements.md
|
|
|
76
76
|
|
|
77
77
|
It saves a checkpoint after every step, so `codd greenfield --resume` continues where it left off. Add `--dry-run` to preview the plan first, or `--ntfy-topic <topic>` to get progress pings on your phone.
|
|
78
78
|
|
|
79
|
+
> **Language coverage today:** unattended greenfield is empirically validated end-to-end on **TypeScript and Python**. The other supported languages share the same language-profile machinery but have not yet had unattended end-to-end validation.
|
|
80
|
+
|
|
79
81
|
The same one-command pipeline (`codd greenfield --requirements FILE`) also ships as three transparent, adaptable vehicles you can read and tweak: a shell script ([`examples/greenfield_autopilot.sh`](examples/greenfield_autopilot.sh)), a Claude Code workflow ([`examples/claude_workflows/codd-greenfield.js`](examples/claude_workflows/codd-greenfield.js)), and a skill (`codd skills install codd-greenfield --target both`).
|
|
80
82
|
|
|
81
83
|
### 2. Work on an existing codebase — `codd init` + `codd scan`
|
|
@@ -28,6 +28,7 @@ class BrownfieldResult:
|
|
|
28
28
|
lexicon_path: Path | None = None
|
|
29
29
|
extract_result: Any | None = None
|
|
30
30
|
elicit_result: ElicitResult | Any | None = None
|
|
31
|
+
stage_status: dict[str, Any] | None = None
|
|
31
32
|
|
|
32
33
|
def to_dict(self) -> dict[str, Any]:
|
|
33
34
|
payload: dict[str, Any] = {
|
|
@@ -44,6 +45,11 @@ class BrownfieldResult:
|
|
|
44
45
|
"merged_findings": len(self.merged_findings),
|
|
45
46
|
},
|
|
46
47
|
}
|
|
48
|
+
# Machine-readable honesty signal: when a stage was skipped/partial/empty
|
|
49
|
+
# the counts above are not the whole story. Only emitted for real
|
|
50
|
+
# pipeline runs (directly-constructed results stay byte-stable / legacy).
|
|
51
|
+
if self.stage_status is not None:
|
|
52
|
+
payload["stage_status"] = self.stage_status
|
|
47
53
|
if isinstance(self.elicit_result, ElicitResult):
|
|
48
54
|
payload["elicit"] = {
|
|
49
55
|
"all_covered": self.elicit_result.all_covered,
|
|
@@ -86,7 +92,9 @@ class BrownfieldPipeline:
|
|
|
86
92
|
extract_output = project_root / ".codd" / "extract"
|
|
87
93
|
extract_result = self._run_extract(project_root, extract_output)
|
|
88
94
|
result_output = Path(getattr(extract_result, "output_dir", extract_output))
|
|
89
|
-
extract_input = _ensure_aggregate_extract(
|
|
95
|
+
extract_input, extract_status = _ensure_aggregate_extract(
|
|
96
|
+
result_output, getattr(extract_result, "generated_files", [])
|
|
97
|
+
)
|
|
90
98
|
|
|
91
99
|
requirements = _resolve_optional_file(
|
|
92
100
|
project_root,
|
|
@@ -97,6 +105,11 @@ class BrownfieldPipeline:
|
|
|
97
105
|
diff_findings: list[Finding] = []
|
|
98
106
|
if requirements is not None:
|
|
99
107
|
diff_findings = list(self._run_diff(project_root, extract_input, requirements))
|
|
108
|
+
diff_status: dict[str, Any] = (
|
|
109
|
+
{"status": "executed", "reason": None}
|
|
110
|
+
if requirements is not None
|
|
111
|
+
else {"status": "skipped", "reason": "no requirements.md"}
|
|
112
|
+
)
|
|
100
113
|
|
|
101
114
|
lexicon = _resolve_optional_path(
|
|
102
115
|
project_root,
|
|
@@ -107,6 +120,16 @@ class BrownfieldPipeline:
|
|
|
107
120
|
lexicon_config = self._load_lexicon(lexicon) if lexicon is not None else None
|
|
108
121
|
elicit_result = self._run_elicit(project_root, lexicon_config)
|
|
109
122
|
elicit_findings = _findings_from_elicit_result(elicit_result)
|
|
123
|
+
elicit_status = {
|
|
124
|
+
"status": "ok",
|
|
125
|
+
"mode": "lexicon" if lexicon is not None else "discovery",
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
stage_status = {
|
|
129
|
+
"extract": extract_status,
|
|
130
|
+
"diff": diff_status,
|
|
131
|
+
"elicit": elicit_status,
|
|
132
|
+
}
|
|
110
133
|
|
|
111
134
|
merged_findings = merge_findings(diff_findings, elicit_findings)
|
|
112
135
|
return BrownfieldResult(
|
|
@@ -119,6 +142,7 @@ class BrownfieldPipeline:
|
|
|
119
142
|
merged_findings=merged_findings,
|
|
120
143
|
extract_result=extract_result,
|
|
121
144
|
elicit_result=elicit_result,
|
|
145
|
+
stage_status=stage_status,
|
|
122
146
|
)
|
|
123
147
|
|
|
124
148
|
def _run_extract(self, project_root: Path, output_dir: Path) -> Any:
|
|
@@ -188,6 +212,10 @@ def format_brownfield_result(result: BrownfieldResult, format_name: str) -> str:
|
|
|
188
212
|
def _format_brownfield_markdown(result: BrownfieldResult) -> str:
|
|
189
213
|
from codd.elicit.formatters.md import MdFormatter
|
|
190
214
|
|
|
215
|
+
stage_status = result.stage_status
|
|
216
|
+
diff_stage = (stage_status or {}).get("diff") or {}
|
|
217
|
+
diff_skipped = diff_stage.get("status") == "skipped"
|
|
218
|
+
|
|
191
219
|
lines = [
|
|
192
220
|
"# Brownfield Report",
|
|
193
221
|
"",
|
|
@@ -197,17 +225,64 @@ def _format_brownfield_markdown(result: BrownfieldResult) -> str:
|
|
|
197
225
|
f"- extract_input: `{_path_text(result.extract_input)}`",
|
|
198
226
|
f"- requirements_path: `{_path_text(result.requirements_path) or 'skipped'}`",
|
|
199
227
|
f"- lexicon_path: `{_path_text(result.lexicon_path) or 'discovery mode'}`",
|
|
200
|
-
f"- diff_findings: {len(result.diff_findings)}",
|
|
201
|
-
f"- elicit_findings: {len(result.elicit_findings)}",
|
|
202
|
-
f"- merged_findings: {len(result.merged_findings)}",
|
|
203
|
-
"",
|
|
204
228
|
]
|
|
229
|
+
if diff_skipped:
|
|
230
|
+
reason = diff_stage.get("reason") or "no requirements.md"
|
|
231
|
+
# Honest headline: a skipped diff must not read as "0 findings" (pass).
|
|
232
|
+
lines.append(f"- diff: SKIPPED ({reason})")
|
|
233
|
+
else:
|
|
234
|
+
lines.append(f"- diff_findings: {len(result.diff_findings)}")
|
|
235
|
+
lines.extend(
|
|
236
|
+
[
|
|
237
|
+
f"- elicit_findings: {len(result.elicit_findings)}",
|
|
238
|
+
f"- merged_findings: {len(result.merged_findings)}",
|
|
239
|
+
"",
|
|
240
|
+
]
|
|
241
|
+
)
|
|
242
|
+
if stage_status:
|
|
243
|
+
lines.extend(_format_stage_status_markdown(stage_status))
|
|
205
244
|
findings_report = MdFormatter().format(result.merged_findings).strip()
|
|
206
245
|
lines.append(findings_report)
|
|
207
246
|
lines.append("")
|
|
208
247
|
return "\n".join(lines)
|
|
209
248
|
|
|
210
249
|
|
|
250
|
+
def _format_stage_status_markdown(stage_status: dict[str, Any]) -> list[str]:
|
|
251
|
+
lines = ["## Stage status", ""]
|
|
252
|
+
|
|
253
|
+
extract = stage_status.get("extract") or {}
|
|
254
|
+
failed = extract.get("files_failed") or []
|
|
255
|
+
extract_status = extract.get("status", "unknown")
|
|
256
|
+
if extract_status == "reused":
|
|
257
|
+
# A reused aggregate was not re-read: report no fabricated count.
|
|
258
|
+
lines.append(
|
|
259
|
+
"- extract: reused (prior aggregate reused; content not re-verified; "
|
|
260
|
+
f"discovered={extract.get('files_discovered', 0)})"
|
|
261
|
+
)
|
|
262
|
+
else:
|
|
263
|
+
lines.append(
|
|
264
|
+
f"- extract: {extract_status} "
|
|
265
|
+
f"(discovered={extract.get('files_discovered', 0)}, "
|
|
266
|
+
f"aggregated={extract.get('files_aggregated', 0)}, "
|
|
267
|
+
f"failed={len(failed)})"
|
|
268
|
+
)
|
|
269
|
+
for entry in failed:
|
|
270
|
+
path, reason = entry[0], entry[1]
|
|
271
|
+
lines.append(f" - failed: `{path}` — {reason}")
|
|
272
|
+
|
|
273
|
+
diff = stage_status.get("diff") or {}
|
|
274
|
+
if diff.get("status") == "skipped":
|
|
275
|
+
reason = diff.get("reason") or "no requirements.md"
|
|
276
|
+
lines.append(f"- diff: SKIPPED ({reason})")
|
|
277
|
+
else:
|
|
278
|
+
lines.append(f"- diff: {diff.get('status', 'unknown')}")
|
|
279
|
+
|
|
280
|
+
elicit = stage_status.get("elicit") or {}
|
|
281
|
+
lines.append(f"- elicit: {elicit.get('status', 'unknown')} (mode={elicit.get('mode', 'unknown')})")
|
|
282
|
+
lines.append("")
|
|
283
|
+
return lines
|
|
284
|
+
|
|
285
|
+
|
|
211
286
|
def _resolve_project_root(value: Path | str) -> Path:
|
|
212
287
|
project_root = Path(value).expanduser().resolve()
|
|
213
288
|
if not project_root.exists():
|
|
@@ -251,18 +326,36 @@ def _resolve_optional_path(
|
|
|
251
326
|
return None
|
|
252
327
|
|
|
253
328
|
|
|
254
|
-
def _ensure_aggregate_extract(
|
|
329
|
+
def _ensure_aggregate_extract(
|
|
330
|
+
output_dir: Path, generated_files: Iterable[Path]
|
|
331
|
+
) -> tuple[Path, dict[str, Any]]:
|
|
255
332
|
output_dir = Path(output_dir)
|
|
256
333
|
aggregate_path = output_dir / "extracted.md"
|
|
334
|
+
paths = _extract_markdown_paths(output_dir, generated_files)
|
|
257
335
|
if aggregate_path.is_file():
|
|
258
|
-
|
|
336
|
+
# A prior run already built the aggregate; reuse it as-is. We do NOT
|
|
337
|
+
# re-read or re-aggregate its content, so we must NOT fabricate an "ok"
|
|
338
|
+
# verdict or an aggregated count over unread inputs. Since nothing ever
|
|
339
|
+
# deletes/rewrites this file, every run after the first lands here — a
|
|
340
|
+
# fabricated "ok" would make the honesty signal first-run-only. Emit an
|
|
341
|
+
# honest "reused" status instead (files_aggregated=None = "not counted").
|
|
342
|
+
status = {
|
|
343
|
+
"status": "reused",
|
|
344
|
+
"files_discovered": len(paths),
|
|
345
|
+
"files_aggregated": None,
|
|
346
|
+
"files_failed": [],
|
|
347
|
+
}
|
|
348
|
+
return aggregate_path, status
|
|
259
349
|
|
|
260
|
-
paths = _extract_markdown_paths(output_dir, generated_files)
|
|
261
350
|
sections: list[str] = []
|
|
351
|
+
files_failed: list[tuple[str, str]] = []
|
|
262
352
|
for path in paths:
|
|
263
353
|
try:
|
|
264
354
|
text = path.read_text(encoding="utf-8", errors="replace").strip()
|
|
265
|
-
except OSError:
|
|
355
|
+
except OSError as exc:
|
|
356
|
+
# Do NOT silently drop read failures: a partial aggregate that hides
|
|
357
|
+
# unreadable inputs is a false-green. Collect and surface them.
|
|
358
|
+
files_failed.append((_relative_to(path, output_dir), str(exc) or exc.__class__.__name__))
|
|
266
359
|
continue
|
|
267
360
|
if not text:
|
|
268
361
|
continue
|
|
@@ -271,7 +364,22 @@ def _ensure_aggregate_extract(output_dir: Path, generated_files: Iterable[Path])
|
|
|
271
364
|
body = "\n\n---\n\n".join(sections) if sections else "No extracted documents generated."
|
|
272
365
|
output_dir.mkdir(parents=True, exist_ok=True)
|
|
273
366
|
aggregate_path.write_text(f"# Extracted Brownfield Facts\n\n{body}\n", encoding="utf-8")
|
|
274
|
-
|
|
367
|
+
|
|
368
|
+
if not sections:
|
|
369
|
+
# A stub body (currently written unconditionally) is NOT an "ok" extract:
|
|
370
|
+
# nothing usable was aggregated.
|
|
371
|
+
status_name = "empty"
|
|
372
|
+
elif files_failed:
|
|
373
|
+
status_name = "partial"
|
|
374
|
+
else:
|
|
375
|
+
status_name = "ok"
|
|
376
|
+
status = {
|
|
377
|
+
"status": status_name,
|
|
378
|
+
"files_discovered": len(paths),
|
|
379
|
+
"files_aggregated": len(sections),
|
|
380
|
+
"files_failed": files_failed,
|
|
381
|
+
}
|
|
382
|
+
return aggregate_path, status
|
|
275
383
|
|
|
276
384
|
|
|
277
385
|
def _extract_markdown_paths(output_dir: Path, generated_files: Iterable[Path]) -> list[Path]:
|
|
@@ -427,6 +427,59 @@ def _format_yaml_list(items: list[str], *, indent: int = 4) -> str:
|
|
|
427
427
|
return "\n".join(f'{" " * indent}- "{item}"' for item in items)
|
|
428
428
|
|
|
429
429
|
|
|
430
|
+
def _default_scan_source_dirs(language: str) -> list[str]:
|
|
431
|
+
"""Compute the default ``scan.source_dirs`` for a freshly-``codd init``'d project.
|
|
432
|
+
|
|
433
|
+
Baseline is the historical ``["src/"]`` default — preserved byte-for-byte
|
|
434
|
+
when the language is blank/unresolvable, or its profile declares no
|
|
435
|
+
``layout.source_sets`` beyond a templated root (e.g. Python's
|
|
436
|
+
``src/{package_name}``: substitution is PathPlanner's job, not this
|
|
437
|
+
bootstrap default's, so a templated root is skipped here).
|
|
438
|
+
|
|
439
|
+
When the resolved profile declares additional LITERAL source-set roots not
|
|
440
|
+
already covered by an entry already in the list — e.g. C++'s conventional
|
|
441
|
+
``include/`` public-header split sitting alongside ``src/`` (design: public
|
|
442
|
+
headers and implementation are separate ``source_sets``, both
|
|
443
|
+
``role: first_party*``) — each is appended, in profile order. A root
|
|
444
|
+
"covered" by an existing entry (e.g. Java's ``src/main/java`` under the
|
|
445
|
+
``src/`` baseline) is skipped to avoid a redundant/overlapping scan root.
|
|
446
|
+
|
|
447
|
+
This is the language-free resolution seam (mirrors
|
|
448
|
+
``codd.project_types._resolve_kernel_language_profile``): it keys off
|
|
449
|
+
profile DATA (``layout.source_sets``), never a ``language == "..."``
|
|
450
|
+
literal, so any current or future multi-root language layout is covered
|
|
451
|
+
with zero changes here — the only thing that decides the result is what
|
|
452
|
+
that language's profile YAML declares.
|
|
453
|
+
"""
|
|
454
|
+
source_dirs = ["src/"]
|
|
455
|
+
try:
|
|
456
|
+
from codd.languages.registry import UnknownLanguageError, default_registry
|
|
457
|
+
except Exception: # noqa: BLE001 — registry optional; degrade to the baseline.
|
|
458
|
+
return source_dirs
|
|
459
|
+
try:
|
|
460
|
+
profile = default_registry.resolve(language)
|
|
461
|
+
except UnknownLanguageError:
|
|
462
|
+
return source_dirs
|
|
463
|
+
except Exception: # noqa: BLE001 — a malformed profile is the loader's gate; degrade here.
|
|
464
|
+
return source_dirs
|
|
465
|
+
|
|
466
|
+
for source_set in profile.layout.source_sets:
|
|
467
|
+
root = (source_set.root or "").strip()
|
|
468
|
+
if not root or "{" in root:
|
|
469
|
+
# Unresolved template placeholder — not a literal path we can use
|
|
470
|
+
# for a bootstrap default (mirrors PathPlanner._subst_root's own
|
|
471
|
+
# "{" in root test for the same distinction).
|
|
472
|
+
continue
|
|
473
|
+
normalized = f"{root.strip('/')}/"
|
|
474
|
+
if any(
|
|
475
|
+
Path(normalized.rstrip("/")).is_relative_to(Path(existing.rstrip("/")))
|
|
476
|
+
for existing in source_dirs
|
|
477
|
+
):
|
|
478
|
+
continue
|
|
479
|
+
source_dirs.append(normalized)
|
|
480
|
+
return source_dirs
|
|
481
|
+
|
|
482
|
+
|
|
430
483
|
def _display_path(path: Path, project_root: Path) -> str:
|
|
431
484
|
try:
|
|
432
485
|
return path.relative_to(project_root).as_posix()
|
|
@@ -816,12 +869,14 @@ def check_cmd(project_path: str, run_full: bool, apply_fixes: bool, output_forma
|
|
|
816
869
|
else:
|
|
817
870
|
_line(" PASS — no warnings")
|
|
818
871
|
|
|
819
|
-
# ---
|
|
872
|
+
# --- verifiable-behavior declarations (gate) --------------------------
|
|
820
873
|
# Incoherent verifiable-behavior declarations (same id, different meaning in
|
|
821
874
|
# two docs) make 100% coverage structurally impossible — fail loudly. The
|
|
822
875
|
# WARNING-severity case (a non-canonical doc with first-column VB rows) is
|
|
823
|
-
# already surfaced as a doctor advisory above with migration guidance.
|
|
824
|
-
|
|
876
|
+
# already surfaced as a doctor advisory above with migration guidance. The
|
|
877
|
+
# label spells out "verifiable-behavior" (the ``vb`` abbreviation read like
|
|
878
|
+
# Visual Basic — it is the V-Model verification boundary, not a language).
|
|
879
|
+
_section("verifiable-behavior declarations")
|
|
825
880
|
try:
|
|
826
881
|
vb_errors = _vb_declaration_issue_messages(project_root, load_project_config(project_root), severity="error")
|
|
827
882
|
except (FileNotFoundError, ValueError) as exc:
|
|
@@ -2355,7 +2410,7 @@ def init(
|
|
|
2355
2410
|
_render_template("codd.yaml.tmpl", codd_dir / "codd.yaml", {
|
|
2356
2411
|
"project_name": project_name,
|
|
2357
2412
|
"language": language,
|
|
2358
|
-
"source_dirs": _format_yaml_list(
|
|
2413
|
+
"source_dirs": _format_yaml_list(_default_scan_source_dirs(language)),
|
|
2359
2414
|
"test_dirs": _format_yaml_list(["tests/"]),
|
|
2360
2415
|
"doc_dirs": _format_yaml_list(["docs/"]),
|
|
2361
2416
|
"graph_path": f"{config_dir}/scan",
|
|
@@ -3775,6 +3830,37 @@ def brownfield_cmd(
|
|
|
3775
3830
|
f"elicit_findings={len(result.elicit_findings)}, "
|
|
3776
3831
|
f"merged_findings={len(result.merged_findings)}"
|
|
3777
3832
|
)
|
|
3833
|
+
|
|
3834
|
+
stage_status = getattr(result, "stage_status", None)
|
|
3835
|
+
if stage_status:
|
|
3836
|
+
extract = stage_status.get("extract") or {}
|
|
3837
|
+
diff = stage_status.get("diff") or {}
|
|
3838
|
+
elicit = stage_status.get("elicit") or {}
|
|
3839
|
+
if extract.get("status") == "reused":
|
|
3840
|
+
# Reused aggregate was not re-read: no fabricated aggregated count.
|
|
3841
|
+
click.echo(
|
|
3842
|
+
" extract: reused (prior aggregate reused; content not re-verified; "
|
|
3843
|
+
f"discovered={extract.get('files_discovered', 0)})"
|
|
3844
|
+
)
|
|
3845
|
+
else:
|
|
3846
|
+
click.echo(
|
|
3847
|
+
f" extract: {extract.get('status', 'unknown')} "
|
|
3848
|
+
f"(discovered={extract.get('files_discovered', 0)}, "
|
|
3849
|
+
f"aggregated={extract.get('files_aggregated', 0)}, "
|
|
3850
|
+
f"failed={len(extract.get('files_failed') or [])})"
|
|
3851
|
+
)
|
|
3852
|
+
if diff.get("status") == "skipped":
|
|
3853
|
+
click.echo(f" diff: SKIPPED ({diff.get('reason') or 'no requirements.md'})")
|
|
3854
|
+
else:
|
|
3855
|
+
click.echo(f" diff: {diff.get('status', 'unknown')}")
|
|
3856
|
+
click.echo(f" elicit: {elicit.get('status', 'unknown')} (mode={elicit.get('mode', 'unknown')})")
|
|
3857
|
+
|
|
3858
|
+
# Honest headline: if any coherence surface was skipped/partial/empty, the
|
|
3859
|
+
# "complete" line above is not the whole story. Exit code stays 0 (an
|
|
3860
|
+
# exit-code escalation is a NEW red and is owner-gated).
|
|
3861
|
+
if extract.get("status") in {"partial", "empty"} or diff.get("status") == "skipped":
|
|
3862
|
+
click.echo("PARTIAL — not all coherence surfaces were checked")
|
|
3863
|
+
|
|
3778
3864
|
click.echo(f"Output: {_display_path(output_path, project_root)}")
|
|
3779
3865
|
|
|
3780
3866
|
|