Skip to content

Name the poll budget in a re-spawn note instead of the unbounded sentinel - #119

Merged
vjovanov merged 2 commits into
mainfrom
fix/poll-attempt-budget-sentinel
Aug 30, 2026
Merged

Name the poll budget in a re-spawn note instead of the unbounded sentinel#119
vjovanov merged 2 commits into
mainfrom
fix/poll-attempt-budget-sentinel

Conversation

@vjovanov

Copy link
Copy Markdown
Owner

Closes #118

What changed

The re-spawn note on a poll state printed the internal u64::MAX sentinel as
if it were the attempt budget:

Re-spawning Task plan.1 in state 'plan-approval': attempt 4 of 18446744073709551615; the previous attempt exited 75

It now names the bound that actually applies, poll.max_attempts:

Re-spawning Task plan.1 in state 'plan-approval': attempt 4 of 96 (poll.max_attempts); the previous attempt exited 75

The poll state's exemption from the visit attempt budget is unchanged — the
poll's own exhaustion rule (poll.max_attempts) is still the only thing that
ends that loop — and a non-poll state's re-spawn note is byte-identical to
before.

resolve_attempt_budget now returns a typed AttemptBudget (Visit(u64) /
Poll { max_attempts: u64 }) instead of encoding "exempt" as u64::MAX, and
respawn_note renders each form accordingly.

The spec sentence at
§FS-rhei-agents.3.2.1,
a pinning integration test
(run_poll_respawn_note_names_poll_max_attempts_not_the_sentinel), and the
changelog bullet are all in the same commit as the fix.

@vjovanov
vjovanov merged commit befaf70 into main Aug 30, 2026
4 checks passed
@vjovanov
vjovanov deleted the fix/poll-attempt-budget-sentinel branch August 30, 2026 15:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Re-spawn note on a poll state prints the unbounded sentinel as the budget (18446744073709551615)

1 participant