diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 33da5b26b..b51408706 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -13,7 +13,6 @@ * Luis Mendes * Rui Hu * HAL 9000 has contributed the parallel subplan execution scheduler (#9555): implemented `ParallelSubplanScheduler` with configurable concurrency control, dependency ordering, fail-fast mode, retry support, and pluggable merge strategies for the v3.3.0 subplan system. -* HAL 9000 has contributed fix for #10813 — wiring DecisionService into PlanExecutor for strategy decision persistence during strategize. * HAL9000 has contributed CLI rendering improvements and TUI overlay visibility handling for `agents project context set` output. @@ -81,7 +80,7 @@ Below are some of the specific details of various contributions. * HAL 9000 has contributed the actor compiler `actor_ref` field fix (issue #1429): corrected `_map_node()` and `compile_actor()` in `src/cleveragents/actor/compiler.py` to read `actor_ref` from the top-level `NodeDefinition.actor_ref` field instead of `node.config.get("actor_ref")`, resolving silent failures on all SUBGRAPH nodes where `subgraph_refs` was always empty and `NodeConfig.subgraph` was always `None`. * HAL 9000 has contributed the removal of the unsupported executable resource type (PR #3248 / issue #3077): removed `executable` from `LSP_RESOURCE_TYPES` and `BUILTIN_TYPE_NAMES`, updated `agents resource list` CLI table columns to the spec-required `[Name, ID, Type, Phys/Virt, Children, Projects]`, deleted orphaned `examples/resource-types/executable.yaml`, and updated related BDD test coverage. * HAL 9000 has contributed the alembic fileConfig error handling fix (PR #8288 / issue #7874): wrapped the `fileConfig()` call in `alembic/env.py` with a `try/except` block to catch malformed INI logging configuration and emit clear, actionable error messages to stderr. -* HAL 9000 has contributed the Definition-of-Done gating feature for the Apply phase (PR #8299 / issue #7927): `PlanLifecycleService.apply_plan` now evaluates DoD criteria before transitioning to Apply, raising `DoDGatingError` when required criteria fail and storing evaluation results in `plan.validation_summary`. +* HAL 9000 has contributed the Definition-of-Done gating feature for the Apply phase (PR #8299 / issue #7927): `PlanLifecycleService.apply_plan` now evaluates DoD criteria before transitioning to the Apply phase, raising `DoDGatingError` when required criteria fail and storing evaluation results in `plan.validation_summary`. * HAL 9000 has contributed the engine cache TOCTOU race condition fix (PR #8265 / issue #7566): added `MEMORY_ENGINES_LOCK` to `engine_cache.py` and wrapped the check-and-set operation in `UnitOfWork.engine` with `with MEMORY_ENGINES_LOCK:` to prevent concurrent threads from creating duplicate in-memory SQLite engine instances; also fixed a cache-hit bug where `self._engine` was never assigned on a cache hit. * HAL 9000 has contributed the plan correct JSON output envelope fix (PR #8662 / issue #8584): restructured `agents plan correct --format json` output to nest correction fields under `data.correction` and pass `command="plan correct"` to `format_output`, producing the spec-required CLI envelope. Added three BDD scenarios validating `data.correction.mode` (revert and append modes) and the `command` field. * HAL 9000 has contributed BDD feature file tag coverage improvements (#9124 / pr #9183): added required `@a2a`, `@session`, and `@cli` Gherkin tags to 30 feature files (8 A2A, 7 session, 15 CLI) to enable selective tag-based test filtering via `behave --tags=a2a,session,cli`. diff --git a/features/lsp_header_injection_security.feature b/features/lsp_header_injection_security.feature index ab99c463b..a541f2789 100644 --- a/features/lsp_header_injection_security.feature +++ b/features/lsp_header_injection_security.feature @@ -7,25 +7,29 @@ Feature: LSP transport header injection vulnerability (issue #7112) old ``errors="replace"`` path could be used to manipulate message boundaries and desynchronise the protocol. -@tdd_issue_7112 Scenario: Non-ASCII byte in Content-Length value raises LspError +@tdd_issue_7112 +Scenario: Non-ASCII byte in Content-Length value raises LspError Given a Transport mock with BytesIO stream containing b"Content-Length: 10\xc0\r\n\r\nhello\x00world" When _read_one_message() is invoked Then it should raise an LspError exception And the error message must contain "non-ASCII" -@tdd_issue_7112 Scenario: Non-ASCII byte in a valid Content-Length name raises LspError +@tdd_issue_7112 +Scenario: Non-ASCII byte in a valid Content-Length name raises LspError Given a Transport mock with BytesIO stream containing b"Content-Length\xef\x08: 99\r\n\r\n{\"jsonrpc\":\"2.0\"}" When _read_one_message() is invoked Then it should raise an LspError exception And the error message must contain "non-ASCII" -@tdd_issue_7112 Scenario: Non-ASCII byte in an unrecognized header raises LspError +@tdd_issue_7112 +Scenario: Non-ASCII byte in an unrecognized header raises LspError Given a Transport mock with BytesIO stream containing b"Cache-Control\xef\x08: no-cache\r\nContent-Length: 5\r\n\r\n{\"id\":1}" When _read_one_message() is invoked Then it should raise an LspError exception And the error message must contain "non-ASCII" -@tdd_issue_7112 Scenario: Valid ASCII headers are processed correctly +@tdd_issue_7112 +Scenario: Valid ASCII headers are processed correctly Given a Transport mock with BytesIO stream containing b"Content-Length: 43\r\n\r\n{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"success\"}" When _read_one_message() is invoked Then it should return a parsed JSON dict