fix(plan): include decision_id field in plan tree JSON output
The step_tree_json_valid BDD step was asserting a raw list from
format_output, but the function wraps all machine-readable output in
a spec-required envelope dict ({"data": [...]}). This PR fixes the
step to correctly validate the envelope structure (dict with data key)
and removes @tdd_expected_fail from the @tdd_issue_4254 scenario so
it runs as a permanent regression guard.
The code producing decision_id in tree nodes was already correct; only
the test assertion needed fixing.
ISSUES CLOSED: #9096
This commit is contained in:
@@ -360,6 +360,13 @@ ensuring data is stored with proper parameter values.
|
||||
`hot_context_hash`, `hot_context_ref`, `actor_state_ref`, and `relevant_resources`
|
||||
are all populated for Strategize-phase decisions.
|
||||
|
||||
- **Plan tree JSON output missing `decision_id` field** (#9096): The `step_tree_json_valid`
|
||||
BDD step was asserting a raw list from `format_output`, but the function wraps all
|
||||
machine-readable output in a spec-required envelope dict (`{"data": [...]}`). Updated
|
||||
the assertion to validate envelope structure and removed `@tdd_expected_fail` from the
|
||||
`@tdd_issue_4254` scenario so it runs as a permanent regression guard. The code producing
|
||||
`decision_id` in tree nodes was already correct; only the test assertion needed fixing.
|
||||
|
||||
### Changed
|
||||
|
||||
- Fixed stale `AUTO-BUG-POOL` tracking prefix references in automation-tracking.md documentation and agent-system-specification.md spec document, replaced with correct `AUTO-BUG-SUP` prefix used by the bug-hunt-pool-supervisor agent (#7875).
|
||||
|
||||
@@ -65,3 +65,4 @@ Below are some of the specific details of various contributions.
|
||||
* 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 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 the plan tree JSON `decision_id` fix (#9096): updated `step_tree_json_valid` in features/steps/plan_explain_steps.py to correctly handle the {"data": [...]} envelope structure produced by format_output, and removed @tdd_expected_fail from the @tdd_issue_4254 scenario so it runs as a permanent regression guard.
|
||||
|
||||
@@ -402,7 +402,13 @@ def step_roots_no_children(context: Context) -> None:
|
||||
@then("the json tree output should be valid json")
|
||||
def step_tree_json_valid(context: Context) -> None:
|
||||
parsed = json.loads(context.pe_tree_json)
|
||||
assert isinstance(parsed, list), "Expected a JSON array"
|
||||
assert isinstance(parsed, dict), "Expected a JSON envelope object"
|
||||
assert "data" in parsed, "Expected data key in JSON envelope"
|
||||
# format_output wraps data in a spec-required envelope dict;
|
||||
# the actual tree array is in the "data" key.
|
||||
assert isinstance(parsed["data"], list), (
|
||||
"Expected data to be a JSON array of tree nodes"
|
||||
)
|
||||
|
||||
|
||||
@then("the json tree output should be a valid json envelope")
|
||||
|
||||
Reference in New Issue
Block a user