Skip to content

spec(075-orchestration-node-control-parity): add specification - #6242

Merged
bug-ops merged 1 commit into
mainfrom
feat/issue-6021/node-timeout-retry-recovery
Jul 13, 2026
Merged

spec(075-orchestration-node-control-parity): add specification#6242
bug-ops merged 1 commit into
mainfrom
feat/issue-6021/node-timeout-retry-recovery

Conversation

@bug-ops

@bug-ops bug-ops commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Summary

  • Formalizes per-task run_timeout enforcement (spawned sub-agent tasks via check_timeouts(), and RunInline tasks via a third tokio::time::timeout branch in the inline select!) and Mode-1 terminal-failure recovery (RecoveryAction.state_injection — substitute a synthetic output and continue, on terminal Abort-default or retry-exhausted Retry failure) in zeph-orchestration, per a three-round architect/critic design review (final verdict: minor/approved).
  • route_to reroute-to-alternate recovery (Mode 2) is explicitly deferred to a follow-up: its dependency-based dormancy mechanism was found to be inverted during critique — a depends_on == [failed_task] fallback dispatches on the failed task's success, not its failure — and needs a TaskStatus::Dormant marker or explicit on-failure-edge redesign, not a topology constraint.
  • Idle-timeout progress-signal plumbing (idle_timeout_secs) ships as a defined, config-surfaced, documented no-op in v1; the eviction-safe cross-crate wiring is deferred to a follow-up since the existing completion-event channel already drops events under saturation and must not be reused for high-frequency progress signals.
  • No source code changes in this PR — spec package only, under specs/075-orchestration-node-control-parity/{brd,srs,nfr,spec,plan,tasks}.md, registered in specs/README.md and specs/MOC-specs.md.

Closes #6021

Test plan

  • Spec package produced via the full BRD → SRS → NFR → spec → plan → tasks pipeline
  • Adversarial architect/critic design review, 3 rounds (critic verdicts: significant → significant → minor/approved)
  • Independent code-reviewer pass: traceability, internal consistency, testable acceptance criteria, measurable NFRs, zero unresolved [NEEDS CLARIFICATION] markers, ~25 code citations spot-checked against HEAD — verdict approved
  • gitleaks protect --staged clean
  • Follow-up implementation PR will run the full CI-matching check suite (fmt/clippy/nextest/rustdoc) against actual code changes

Formalizes per-task run_timeout enforcement (spawned + RunInline) and
Mode-1 terminal-failure recovery (state_injection substitute-and-continue)
in zeph-orchestration, per a three-round architect/critic design review
(final verdict: minor/approved).

route_to reroute-to-alternate recovery (Mode 2) is explicitly deferred:
its dependency-based dormancy mechanism was found to be inverted (the
fallback would dispatch on the source task's success, not its failure)
and requires a TaskStatus::Dormant or on-failure-edge redesign that is
out of scope for this spec. Idle-timeout progress-signal plumbing is
likewise deferred pending a non-evicting progress channel design.

Follow-up implementation tracked in the linked issue.
@bug-ops
bug-ops force-pushed the feat/issue-6021/node-timeout-retry-recovery branch from 41cc914 to 40ca386 Compare July 13, 2026 19:46
@github-actions github-actions Bot added the size/XL Extra large PR (500+ lines) label Jul 13, 2026
@bug-ops
bug-ops merged commit 8ed5bef into main Jul 13, 2026
23 checks passed
@bug-ops
bug-ops deleted the feat/issue-6021/node-timeout-retry-recovery branch July 13, 2026 19:46
bug-ops added a commit that referenced this pull request Jul 17, 2026
…ecovery

Adds a route_to reroute-to-alternate recovery mode to the orchestration
scheduler (LangGraph node-error-handler parity), deferred from the
original spec-075 design in PR #6242 after the naive dependency-based
approach was found unworkable (N5/N1/N3). A new non-terminal
TaskStatus::Dormant state, an on-failure activation edge on
RecoveryAction, and a completion-time resolution sweep close those
findings; a review round additionally caught that the routed_from
prompt injection read TaskNode.result, which no production Failed
transition populated, silently defeating the failed-source context
injection in real usage.

Closes #6244
bug-ops added a commit that referenced this pull request Jul 17, 2026
…ecovery

Adds a route_to reroute-to-alternate recovery mode to the orchestration
scheduler (LangGraph node-error-handler parity), deferred from the
original spec-075 design in PR #6242 after the naive dependency-based
approach was found unworkable (N5/N1/N3). A new non-terminal
TaskStatus::Dormant state, an on-failure activation edge on
RecoveryAction, and a completion-time resolution sweep close those
findings; a review round additionally caught that the routed_from
prompt injection read TaskNode.result, which no production Failed
transition populated, silently defeating the failed-source context
injection in real usage.

Closes #6244
bug-ops added a commit that referenced this pull request Jul 17, 2026
…ecovery

Adds a route_to reroute-to-alternate recovery mode to the orchestration
scheduler (LangGraph node-error-handler parity), deferred from the
original spec-075 design in PR #6242 after the naive dependency-based
approach was found unworkable (N5/N1/N3). A new non-terminal
TaskStatus::Dormant state, an on-failure activation edge on
RecoveryAction, and a completion-time resolution sweep close those
findings; a review round additionally caught that the routed_from
prompt injection read TaskNode.result, which no production Failed
transition populated, silently defeating the failed-source context
injection in real usage.

Closes #6244
bug-ops added a commit that referenced this pull request Jul 17, 2026
…ecovery (#6346)

Adds a route_to reroute-to-alternate recovery mode to the orchestration
scheduler (LangGraph node-error-handler parity), deferred from the
original spec-075 design in PR #6242 after the naive dependency-based
approach was found unworkable (N5/N1/N3). A new non-terminal
TaskStatus::Dormant state, an on-failure activation edge on
RecoveryAction, and a completion-time resolution sweep close those
findings; a review round additionally caught that the routed_from
prompt injection read TaskNode.result, which no production Failed
transition populated, silently defeating the failed-source context
injection in real usage.

Closes #6244
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/XL Extra large PR (500+ lines)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

parity(orchestration): zeph-orchestration lacks per-task granular timeouts and node-level retry-exhausted recovery routing vs LangGraph v1.2.x

1 participant