Add rfc26 - clarify intent suspension in containers and human retry c…#6
Merged
nirvanatikku merged 2 commits intomainfrom Mar 24, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
RFC-0026: Suspension Propagation & Retry → v0.17.0
Closes the three gaps left open by RFC-0025 (Human-in-the-Loop Intent Suspension):
container propagation rules, human re-notification with escalation ladders, and
upstream suspension error propagation for workflow phases.
What's in this PR
Container Propagation Rules (5 normative rules)
status becomes
suspended_awaiting_inputwhen any child is suspended.has_suspended_members/suspended_member_count;two new events:
portfolio.member_suspended/portfolio.member_resumed.to
blockedwithblocked_reason: "intent_suspended"andsuspended_intent_id;plan progress gains
suspended_tasks.UpstreamIntentSuspendedErrorat claimtime; workflow progress gains
suspended_phases.due_beforeconstraint.HumanRetryPolicyDataclassRe-notification and escalation policy for
request_input():Serialises via
to_dict()/from_dict().EscalationStepDataclassSingle escalation rung:
attempt,channel_hint,notify_to. Triggersintent.suspension_escalatedevent. Backwards-compatible aliases:after_attempt,channel,notify.UpstreamIntentSuspendedErrorRaised by
WorkflowSpec.validate_claim_inputs()when a declared input references anupstream phase whose intent is
suspended_awaiting_input. Carriestask_id,phase_name,suspended_intent_id,expected_resume_at. Subclass ofWorkflowError.Three-Level Policy Cascade
Four New
EventTypeConstantsintent.suspension_renotifiedintent.suspension_escalatedportfolio.member_suspendedportfolio.member_resumedCross-RFC Patches
suspended_awaiting_inputstatus counter; completion-gate clarificationmember_suspended/member_resumedeventssuspended_tasksplan progress fieldUpstreamIntentSuspendedErrorat claim time;suspended_phasesworkflow progress fieldretry_policyonSuspensionRecord; per-attempttimeout_secondssemantics;fallback_policyalias note; extended cross-RFC tableNew Tests
41 new tests across two existing test files:
tests/test_hitl.py—HumanRetryPolicy,EscalationStep,SuspensionRecord.retry_policy,new
EventTypeconstants,request_inputsignature,BaseAgent.default_human_retry_policy,package exports.
tests/test_workflow_io.py—UpstreamIntentSuspendedErrorconstruction, attributes,exception hierarchy, package export.
Total: 1052+ tests across 19 test files — all passing.
New Package Exports
Version Bumps
All 7 version manifests updated from
0.16.1→0.17.0:pyproject.tomlversionopenintent/__init__.py__version__mcp-server/package.jsonversionmcp-server/src/index.tsversionin server info blockdocs/overrides/home.htmlmkdocs.ymldocs/rfcs/0026-suspension-container-interaction.mdChecklist
docs/rfcs/0026-suspension-container-interaction.md)HumanRetryPolicyandEscalationStepdataclasses implemented and exportedUpstreamIntentSuspendedErrorimplemented and exportedBaseAgent.default_human_retry_policyclass attribute addedrequest_input(retry_policy=...)parameter wired upEventTypeconstants addedretry_policyfield onSuspensionRecordruff checkclean (80 files, 0 issues)mkdocs build --strictpasses0.17.0