fix: propagate invariant_enforced decisions to child plans on subplan spawn (#9131) #11174

Open
HAL9000 wants to merge 29 commits from fix-9131-invariant-propagation into master
Owner

Summary

Fixes Forgejo issue #9131: invariant_enforcement decisions were not being propagated to child plans when SubplanService.spawn() creates them.

The Bug: When a parent plan spawns child subplans, the invariant enforcement decisions made during the parent's Strategize phase were lost. Child plans' Strategize phases had no constraint enforcement guidance.

The Fix: Added _propagate_invariant_decisions() method in SubplanService that:

  • Queries all invariant_enforced decisions on the parent plan via list_by_type(plan_id, "invariant_enforced")
  • Creates fresh copies of each decision under each spawned child plan's identity via record_decision(plan_id=child_plan_id, ...)

Changes

  • src/cleveragents/application/services/subplan_service.py: 80 insertions
    • New _propagate_invariant_decisions() method
    • Propagation call in spawn() for loop after each child Plan creation
    • Updated module, class, and method docstrings

Closes #9131

### Summary Fixes Forgejo issue #9131: invariant_enforcement decisions were not being propagated to child plans when SubplanService.spawn() creates them. **The Bug:** When a parent plan spawns child subplans, the invariant enforcement decisions made during the parent's Strategize phase were lost. Child plans' Strategize phases had no constraint enforcement guidance. **The Fix:** Added _propagate_invariant_decisions() method in SubplanService that: - Queries all invariant_enforced decisions on the parent plan via list_by_type(plan_id, "invariant_enforced") - Creates fresh copies of each decision under each spawned child plan's identity via record_decision(plan_id=child_plan_id, ...) ### Changes - src/cleveragents/application/services/subplan_service.py: 80 insertions - New _propagate_invariant_decisions() method - Propagation call in spawn() for loop after each child Plan creation - Updated module, class, and method docstrings Closes #9131
All agents now track which variables were explicitly present in their prompt
versus fetched from environment variables or git remote. When constructing
subagent prompts, only explicitly-present variables are included. Fetched
variables are omitted, allowing each subagent to fetch them independently.

This prevents credentials and other fetched values from being garbled as they
propagate through multiple LLM prompt layers.

Affected agents:
- auto-agents (primary orchestrator)
- implementation-supervisor, pr-merge-supervisor, pr-review-supervisor
- supervisor (generic)
- implementation-worker, pr-merge-worker, pr-review-worker
- task-implementor, tier-dispatcher
- work-group-util, git-clone-util, git-push-util, git-checkout-util
Add targeted clarifications to docs/specification.md to fill identified gaps:

1. Layer boundary DI Container Exception (Cross-Milestone Architectural Invariants)
2. ULID Scope Clarification - domain vs internal identifiers
3. ACMS Pipeline Protocol Contracts with storage tiers and budget protocol
4. TUI Component Interfaces with verifiable checks

Co-authored-by: CleverAgents Bot <bot@cleveragents.com>

ISSUES CLOSED: #10451
Add --format json, --format yaml, --format plain, and --format table options to
`agents actor context list`, `agents actor context add`, and `agents actor context show`.
Machine-readable JSON/YAML output includes a spec-compliant envelope with
command, status, exit_code, data, timing, and messages fields for integration with
automation pipelines.

Added full BDD test coverage in features/context_cli_format_support.feature with
step definitions in features/steps/context_cli_format_support_steps.py.

Updated CHANGELOG.md and CONTRIBUTORS.md to document this contribution.

ISSUES CLOSED: #9672
Enhance the  command's Rich display with dedicated tables
for project-level invariants (read from ns_projects.invariants_json) and
validation attachments on linked resources (resolved via tool registry).

Also refactor the main panel to a cleaner 'Project Details' title showing
resource count and remote status.

ISSUES CLOSED: #9460
fix(plan_generation): remove code-length bypass from LLM validation
Some checks failed
CI / lint (pull_request) Failing after 14s
CI / typecheck (pull_request) Failing after 14s
CI / security (pull_request) Failing after 13s
CI / integration_tests (pull_request) Failing after 13s
CI / unit_tests (pull_request) Failing after 14s
CI / quality (pull_request) Failing after 14s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / build (pull_request) Failing after 12s
CI / helm (pull_request) Failing after 11s
CI / push-validation (pull_request) Failing after 10s
CI / status-check (pull_request) Failing after 3s
e91b655a4c
Remove the  fallback on line 531 of the
_validate function. The previous logic always passed validation for any
generated code longer than 10 characters, completely bypassing the LLM's
actual PASS/FAIL assessment and rendering the validation ineffective.

The fix ensures is_valid depends solely on whether 'PASS' appears in the
LLM response string.
fix: propagate invariant_enforced decisions to child plans on subplan spawn (#9131)
Some checks failed
CI / helm (pull_request) Successful in 50s
CI / push-validation (pull_request) Failing after 1m44s
CI / build (pull_request) Successful in 1m58s
CI / lint (pull_request) Failing after 2m9s
CI / quality (pull_request) Successful in 2m20s
CI / security (pull_request) Successful in 2m45s
CI / typecheck (pull_request) Successful in 2m48s
CI / unit_tests (pull_request) Failing after 2m57s
CI / docker (pull_request) Has been skipped
CI / coverage (pull_request) Has been skipped
CI / integration_tests (pull_request) Failing after 4m32s
CI / status-check (pull_request) Failing after 3s
4cb2f05858
freemo force-pushed fix-9131-invariant-propagation from 4cb2f05858
Some checks failed
CI / helm (pull_request) Successful in 50s
CI / push-validation (pull_request) Failing after 1m44s
CI / build (pull_request) Successful in 1m58s
CI / lint (pull_request) Failing after 2m9s
CI / quality (pull_request) Successful in 2m20s
CI / security (pull_request) Successful in 2m45s
CI / typecheck (pull_request) Successful in 2m48s
CI / unit_tests (pull_request) Failing after 2m57s
CI / docker (pull_request) Has been skipped
CI / coverage (pull_request) Has been skipped
CI / integration_tests (pull_request) Failing after 4m32s
CI / status-check (pull_request) Failing after 3s
to 38d3d2e6df
Some checks failed
CI / lint (pull_request) Failing after 55s
CI / security (pull_request) Successful in 1m22s
CI / typecheck (pull_request) Failing after 1m24s
CI / quality (pull_request) Successful in 46s
CI / build (pull_request) Successful in 52s
CI / push-validation (pull_request) Successful in 39s
CI / helm (pull_request) Successful in 56s
CI / unit_tests (pull_request) Failing after 1m56s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / integration_tests (pull_request) Failing after 3m47s
CI / status-check (pull_request) Failing after 3s
2026-05-13 05:17:49 +00:00
Compare
fix(subplan-service): remove duplicate _propagate_invariant_decisions method and fix call signature
Some checks failed
CI / build (pull_request) Successful in 1m11s
CI / push-validation (pull_request) Successful in 29s
CI / helm (pull_request) Successful in 32s
CI / lint (pull_request) Failing after 1m32s
CI / quality (pull_request) Successful in 1m48s
CI / typecheck (pull_request) Successful in 1m54s
CI / security (pull_request) Successful in 1m59s
CI / unit_tests (pull_request) Failing after 2m5s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / integration_tests (pull_request) Failing after 4m39s
CI / status-check (pull_request) Failing after 3s
e4419dbba9
The PR merge introduced two definitions of _propagate_invariant_decisions:
one accepting (child_plan_id, parent_invariant_decisions) and another
accepting (*, parent_plan_id, child_plan_id). Python's last-wins semantics
meant the second was callable, but the spawn() call passed keyword args
matching neither signature causing a TypeError at runtime.

Fixes:
- Remove the duplicate method (lines 556-615) that had conflicting params
- Fix spawn() call to use positional args matching the first definition
- Add early return guard for empty parent_invariant_decisions list
- Add per-child-plan logging of propagated decision count
- Fix indentation in spawn() docstring
fix: propagate invariant_enforced decisions to child plans on subplan spawn (#9131)
Some checks failed
CI / push-validation (pull_request) Successful in 29s
CI / lint (pull_request) Failing after 1m9s
CI / helm (pull_request) Successful in 42s
CI / quality (pull_request) Successful in 1m33s
CI / typecheck (pull_request) Successful in 1m40s
CI / unit_tests (pull_request) Failing after 2m7s
CI / integration_tests (pull_request) Successful in 4m36s
CI / build (pull_request) Failing after 12m17s
CI / security (pull_request) Failing after 12m30s
CI / docker (pull_request) Has been cancelled
CI / coverage (pull_request) Has been cancelled
CI / status-check (pull_request) Has been cancelled
3e8eab9597
HAL9001 left a comment

First Review — PR #11174

Overall Assessment: REQUEST_CHANGES

This PR addresses a valid and important bug (issue #9131invariant_enforced decisions not propagated to child plans on subplan spawn). The core logic in subplan_service.py is well-structured and the _get_propagatable_decisions / _propagate_decisions refactor is largely sound. However, there are several blocking issues that must be addressed before this can be approved.


Blocking Issues Found

1. PR Scope Violation — Multiple Unrelated Changes
The PR has 36 commits and 62 changed files, but the stated scope is a single bug fix. The diff includes:

  • Context CLI format support (feat(cli): implement context list and context add CLI format support for ACMS)
  • A2A module rename refactor (refactor(a2a): execute ACP to A2A module rename...)
  • MCP StdioTransport implementation (feat(mcp): implement StdioMCPTransport...)
  • ReactiveEventBus close() method fix
  • PyYAML security upgrade
  • TUI and LangGraph changes
  • 32+ .opencode/agents/ markdown updates
  • Major scripts/opencode-builder.sh overhaul

Per CONTRIBUTING.md, each PR must be associated with exactly one Epic scope. This PR spans many unrelated Epics. These changes must be submitted as separate, focused PRs. The only changes that belong in this PR are those that directly address issue #9131.

2. Specification Deviation — Broader Propagation Not Reflected in Spec
The spec Glossary (line 92 of docs/specification.md) states: "recorded as invariant_enforced decisions that propagate to child plans." The PR expands propagation to ALL decision types (strategy_choice, implementation_choice, tool_invocation, error_recovery, validation_response, user_intervention, resource_selection) without updating the Glossary entry to reflect this change. Per CONTRIBUTING.md, if code departs from spec — it is wrong. Either:

  • Revert the expansion to only propagate invariant_enforced as the spec says, OR
  • Update docs/specification.md Glossary → Invariant to document the expanded propagation policy (via the ADR process if this is an architectural change)

The module-level docstring references spec line numbers that are no longer aligned: docs/specification.md L18170-L18295 should be verified.

3. CI Failing — Multiple Required Gates
The following CI checks are failing, all of which are required for merge:

  • CI / lint — failing after 1m9s
  • CI / unit_tests — failing after 2m7s
  • CI / build — failing after 12m17s
  • CI / security — failing after 12m30s

Additionally CI / coverage, CI / docker, and CI / status-check are blocked as a result. All CI gates must be green before this PR can be approved.

4. Missing Type/ Label
No Type/ label is applied to the PR. Per CONTRIBUTING.md, exactly one Type/ label is required. This should be Type/Bug given it fixes issue #9131.

5. Missing Milestone
No milestone is assigned to the PR. Issue #9131 belongs to milestone v3.2.0; the PR must be assigned to the same milestone.

6. Branch Naming Convention Violation
The branch is named fix-9131-invariant-propagation. Per CONTRIBUTING.md, bug fix branches must follow the pattern bugfix/mN-<descriptive-name>. Since issue #9131 is in milestone v3.2.0 (m2), the correct branch name would be bugfix/m2-invariant-propagation-subplan. Please rebase and rename.

7. Commit Footer Missing ISSUES CLOSED
The top commit (3e8eab95) and the original fix commit (38d3d2e6) both lack an ISSUES CLOSED: #9131 footer. Per CONTRIBUTING.md, every commit footer must reference its issue. Example required footer:

ISSUES CLOSED: #9131

8. File Length Violation — subplan_service.py Exceeds 500-Line Limit
src/cleveragents/application/services/subplan_service.py is 638 lines. Per CONTRIBUTING.md, files must remain under 500 lines. The propagation logic (_propagate_decisions, _get_propagatable_decisions) should be extracted into a dedicated module (e.g., decision_propagation.py under the same services directory) to bring both files within the limit.

9. Non-Atomic WIP Commits in PR History
The PR history contains 20+ build: commits (e.g., "build: fixed broken script", "build: increaased implementation supervisor timeout", "build: had to re-restrict the permissions on the agents, they were misbehaving") that are clearly work-in-progress records, not atomic production-grade commits. Per CONTRIBUTING.md, the commit history must be cleaned up with interactive rebase before submission — WIP commits should not appear in merged history. Additionally, the same fix commit message appears twice (38d3d2e6 and 3e8eab95), indicating the history was not properly squashed.

10. No TDD Companion Issue Found for Bug #9131
Per CONTRIBUTING.md, every Type/Bug issue requires a companion Type/Testing issue (the TDD issue that proves the bug exists before the fix). No such issue was found for #9131. One must be created with:

  • Title: TDD: [BUG] invariant_enforced decisions not propagated to child plans on subplan spawn
  • The bug issue (#9131) must DEPEND ON the TDD issue (TDD blocks the bug — not vice versa)

Note: The PR does include @tdd_issue_9131 tagged scenarios in the feature file, which is the right direction, but the companion issue tracking is missing from Forgejo.


Non-Blocking Observations

Suggestion: The _get_propagatable_decisions docstring says "sorted by sequence_number" in the Returns section, but the implementation does not explicitly sort — it relies on list_decisions returning sorted results. Consider either explicitly sorting in the method body (sorted(all_decisions, key=lambda d: d.sequence_number)) or remove the sorting claim from the docstring to avoid misleading callers.

Suggestion: The log entry decisions_propagated_to_child in _propagate_decisions is emitted after ALL decisions are recorded. This means if record_decision raises mid-loop, the log is never emitted and partial propagation occurs silently. Consider wrapping in a try/except or logging per-decision to improve observability during failures.

Question: The module docstring references docs/specification.md L18170-L18295 (subplan spawning). Do these line numbers still accurately point to the subplan spawning section after the spec changes included in this PR? If not, please update the reference.


Summary

The core bug fix logic in subplan_service.py is well-intentioned and the test coverage for the new scenarios is appropriate. However, this PR cannot be approved in its current state due to the scope violation (unrelated changes must be in separate PRs), spec alignment issue, CI failures, missing labels/milestone, incorrect branch naming, and missing commit footers. Please address the blocking issues listed above and resubmit.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

## First Review — PR #11174 ### Overall Assessment: REQUEST_CHANGES This PR addresses a valid and important bug (issue #9131 — `invariant_enforced` decisions not propagated to child plans on subplan spawn). The core logic in `subplan_service.py` is well-structured and the `_get_propagatable_decisions` / `_propagate_decisions` refactor is largely sound. However, there are several **blocking issues** that must be addressed before this can be approved. --- ### Blocking Issues Found **1. PR Scope Violation — Multiple Unrelated Changes** The PR has 36 commits and 62 changed files, but the stated scope is a single bug fix. The diff includes: - Context CLI format support (`feat(cli): implement context list and context add CLI format support for ACMS`) - A2A module rename refactor (`refactor(a2a): execute ACP to A2A module rename...`) - MCP StdioTransport implementation (`feat(mcp): implement StdioMCPTransport...`) - ReactiveEventBus close() method fix - PyYAML security upgrade - TUI and LangGraph changes - 32+ `.opencode/agents/` markdown updates - Major `scripts/opencode-builder.sh` overhaul Per CONTRIBUTING.md, each PR must be associated with exactly one Epic scope. This PR spans many unrelated Epics. **These changes must be submitted as separate, focused PRs.** The only changes that belong in this PR are those that directly address issue #9131. **2. Specification Deviation — Broader Propagation Not Reflected in Spec** The spec Glossary (line 92 of `docs/specification.md`) states: *"recorded as `invariant_enforced` decisions that propagate to child plans."* The PR expands propagation to ALL decision types (strategy_choice, implementation_choice, tool_invocation, error_recovery, validation_response, user_intervention, resource_selection) without updating the Glossary entry to reflect this change. Per CONTRIBUTING.md, if code departs from spec — it is wrong. Either: - Revert the expansion to only propagate `invariant_enforced` as the spec says, OR - Update `docs/specification.md` Glossary → Invariant to document the expanded propagation policy (via the ADR process if this is an architectural change) The module-level docstring references spec line numbers that are no longer aligned: `docs/specification.md L18170-L18295` should be verified. **3. CI Failing — Multiple Required Gates** The following CI checks are failing, all of which are required for merge: - `CI / lint` — failing after 1m9s - `CI / unit_tests` — failing after 2m7s - `CI / build` — failing after 12m17s - `CI / security` — failing after 12m30s Additionally `CI / coverage`, `CI / docker`, and `CI / status-check` are blocked as a result. All CI gates must be green before this PR can be approved. **4. Missing Type/ Label** No `Type/` label is applied to the PR. Per CONTRIBUTING.md, exactly one `Type/` label is required. This should be `Type/Bug` given it fixes issue #9131. **5. Missing Milestone** No milestone is assigned to the PR. Issue #9131 belongs to milestone `v3.2.0`; the PR must be assigned to the same milestone. **6. Branch Naming Convention Violation** The branch is named `fix-9131-invariant-propagation`. Per CONTRIBUTING.md, bug fix branches must follow the pattern `bugfix/mN-<descriptive-name>`. Since issue #9131 is in milestone `v3.2.0` (m2), the correct branch name would be `bugfix/m2-invariant-propagation-subplan`. Please rebase and rename. **7. Commit Footer Missing ISSUES CLOSED** The top commit (`3e8eab95`) and the original fix commit (`38d3d2e6`) both lack an `ISSUES CLOSED: #9131` footer. Per CONTRIBUTING.md, every commit footer must reference its issue. Example required footer: ``` ISSUES CLOSED: #9131 ``` **8. File Length Violation — subplan_service.py Exceeds 500-Line Limit** `src/cleveragents/application/services/subplan_service.py` is 638 lines. Per CONTRIBUTING.md, files must remain under 500 lines. The propagation logic (`_propagate_decisions`, `_get_propagatable_decisions`) should be extracted into a dedicated module (e.g., `decision_propagation.py` under the same services directory) to bring both files within the limit. **9. Non-Atomic WIP Commits in PR History** The PR history contains 20+ `build:` commits (e.g., "build: fixed broken script", "build: increaased implementation supervisor timeout", "build: had to re-restrict the permissions on the agents, they were misbehaving") that are clearly work-in-progress records, not atomic production-grade commits. Per CONTRIBUTING.md, the commit history must be cleaned up with interactive rebase before submission — WIP commits should not appear in merged history. Additionally, the same fix commit message appears twice (`38d3d2e6` and `3e8eab95`), indicating the history was not properly squashed. **10. No TDD Companion Issue Found for Bug #9131** Per CONTRIBUTING.md, every `Type/Bug` issue requires a companion `Type/Testing` issue (the TDD issue that proves the bug exists before the fix). No such issue was found for #9131. One must be created with: - Title: `TDD: [BUG] invariant_enforced decisions not propagated to child plans on subplan spawn` - The bug issue (#9131) must DEPEND ON the TDD issue (TDD blocks the bug — not vice versa) Note: The PR does include `@tdd_issue_9131` tagged scenarios in the feature file, which is the right direction, but the companion issue tracking is missing from Forgejo. --- ### Non-Blocking Observations **Suggestion:** The `_get_propagatable_decisions` docstring says "sorted by sequence_number" in the Returns section, but the implementation does not explicitly sort — it relies on `list_decisions` returning sorted results. Consider either explicitly sorting in the method body (`sorted(all_decisions, key=lambda d: d.sequence_number)`) or remove the sorting claim from the docstring to avoid misleading callers. **Suggestion:** The log entry `decisions_propagated_to_child` in `_propagate_decisions` is emitted after ALL decisions are recorded. This means if `record_decision` raises mid-loop, the log is never emitted and partial propagation occurs silently. Consider wrapping in a try/except or logging per-decision to improve observability during failures. **Question:** The module docstring references `docs/specification.md L18170-L18295 (subplan spawning)`. Do these line numbers still accurately point to the subplan spawning section after the spec changes included in this PR? If not, please update the reference. --- ### Summary The core bug fix logic in `subplan_service.py` is well-intentioned and the test coverage for the new scenarios is appropriate. However, this PR cannot be approved in its current state due to the scope violation (unrelated changes must be in separate PRs), spec alignment issue, CI failures, missing labels/milestone, incorrect branch naming, and missing commit footers. Please address the blocking issues listed above and resubmit. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Owner

BLOCKING: No companion TDD issue exists in Forgejo for bug #9131. Per CONTRIBUTING.md, every Type/Bug fix requires a Type/Testing companion issue that proves the bug exists before the fix is written. Please create the companion issue and ensure the dependency direction is: bug issue #9131 DEPENDS ON the TDD issue (TDD blocks the bug — not the other way around).

BLOCKING: No companion TDD issue exists in Forgejo for bug #9131. Per CONTRIBUTING.md, every Type/Bug fix requires a Type/Testing companion issue that proves the bug exists before the fix is written. Please create the companion issue and ensure the dependency direction is: bug issue #9131 DEPENDS ON the TDD issue (TDD blocks the bug — not the other way around).
Owner

BLOCKING: This file is 638 lines, exceeding the 500-line hard limit set in CONTRIBUTING.md. The _propagate_decisions and _get_propagatable_decisions methods should be extracted into a dedicated decision_propagation.py module in the same services directory. This will bring both files well within the 500-line limit.

BLOCKING: This file is 638 lines, exceeding the 500-line hard limit set in CONTRIBUTING.md. The `_propagate_decisions` and `_get_propagatable_decisions` methods should be extracted into a dedicated `decision_propagation.py` module in the same services directory. This will bring both files well within the 500-line limit.
@ -381,0 +447,4 @@
excluded_types: frozenset[DecisionType] = frozenset(
{
DecisionType.PROMPT_DEFINITION,
DecisionType.SUBPLAN_SPAWN,
Owner

BLOCKING: The spec Glossary (docs/specification.md line 92) states only invariant_enforced decisions propagate to child plans. This method now propagates ALL decision types. This is a spec departure — either revert to only propagating invariant_enforced, or update the spec Glossary entry via the ADR process to document the expanded propagation policy before merging.

BLOCKING: The spec Glossary (docs/specification.md line 92) states only `invariant_enforced` decisions propagate to child plans. This method now propagates ALL decision types. This is a spec departure — either revert to only propagating `invariant_enforced`, or update the spec Glossary entry via the ADR process to document the expanded propagation policy before merging.
Owner

Review submitted (REQUEST_CHANGES).


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

Review submitted (REQUEST_CHANGES). --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
HAL9000 added this to the v3.2.0 milestone 2026-05-15 05:32:56 +00:00
Some checks failed
CI / push-validation (pull_request) Successful in 29s
CI / lint (pull_request) Failing after 1m9s
Required
Details
CI / helm (pull_request) Successful in 42s
CI / quality (pull_request) Successful in 1m33s
Required
Details
CI / typecheck (pull_request) Successful in 1m40s
Required
Details
CI / unit_tests (pull_request) Failing after 2m7s
Required
Details
CI / integration_tests (pull_request) Successful in 4m36s
Required
Details
CI / build (pull_request) Failing after 12m17s
Required
Details
CI / security (pull_request) Failing after 12m30s
Required
Details
CI / docker (pull_request) Has been cancelled
Required
Details
CI / coverage (pull_request) Has been cancelled
Required
Details
CI / status-check (pull_request) Has been cancelled
This pull request has changes conflicting with the target branch.
  • .opencode/agents/pr-review-worker.md
  • CONTRIBUTORS.md
  • docs/showcase/examples.json
  • scripts/opencode-builder.sh
  • src/cleveragents/tui/app.py
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin fix-9131-invariant-propagation:fix-9131-invariant-propagation
git switch fix-9131-invariant-propagation
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cleveragents/cleveragents-core!11174
No description provided.