Skip to content

Generic tool exceptions and inner timeouts erase outcome uncertainty after dispatch #603

Closed

Description

@Calmingstorm

Severity: P1

Verified at v4.10.0, 55c15761845b00931ab2ea4aa184a7797dfd0614.

Locations

src/tools/executor.py:935-936,1095-1103; src/tools/ssh.py:263-277; src/discord/tool_loop.py:2931-2950,2983-2990; src/turn_state/durability.py:351-360

Failure scenario / benefit and affected installs

Effect-capablehandlerdoesworkthentransport/decoding/cleanupfails, orinnerlocaltimeout. OrdinaryfailedtupleuncertainfalsebecomesDEFINITELY_FAILED withoutabsenceproof.

Verification

Independently traced typedtimeoutonlyunknownrecognition andtuplefailureledger. Reviewer mockedposteffectexception/innerlocaltimeout confirmedfalseunknown, noprocessran.

Correction and tests

Preservecode-owneddispatch/outcomeprovenance forambiguousfailure, notdefinitefailure bydefault.

Duplicate screening

Checked original open/closed inventory and fresh GitHub title/body search. No matching root. Full-path traces and harmless mocks only; mutation strings were never executed.

Activity

  1. Calmingstorm commented on Sep 30, 2026

    @Calmingstorm
    OwnerAuthor

    Validated as fixed on campaign/v4.10.0-review (PR #629) at 3047c46c: the fix was reviewed against the final code, and its regression tests pass on the branch and in CI. Round-1 correction 3cb69a64: a successful internal SSH or executor recovery retry now settles as success (ok=True) while keeping uncertain_outcome as the possible-duplicate record, so it no longer invites another retry; exhausted or failed retries stay failures. It is not merged to master yet. Closing per the maintainer's instruction; reopen if a later change regresses it.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions