Repository navigation
Own goal toggle behavior in the execution family (Toad1398 pair) - #3844
Merged
Merged
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
trissim
force-pushed
the
fix/goal-execution-toggle
branch
from
November 1, 2026 20:56
f4c249e to
4fa21ca
Compare
trissim
enabled auto-merge
November 1, 2026 21:10
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.
Summary
Paired Core half of OpenHCSDev/toad#1398, one goal-control overhaul requested in53444/53446. One commit, 2 files, +57/-2; 0 new classes or wire fields. The Toad half deletes both
ControlledExecutiontype tests and its duplicate Pause spelling; Core gains 2 public operations with their default/controlled implementations. Eight regression examples are authored and compiled, UNRUN.Land this Core API before the new Toad1398 head. Existing Toad remains compatible with the Core change; the new Toad uses the new API and must not be installed against the old Core. Install/behavior qualification remains with the existing integration owner; this is not a new native run or acceptance claim.
Existing family carries its work
Before:
After (parents and all constructors unchanged):
Formal finding: IMPL-3 / MEMB-2; fact = whether a GoalExecution offers a toggle and which action it invokes; at = old Toad
goal_interaction.py:84,93; derive = base-method/subclass; by =GoalExecution/ControlledExecutioningoal_presentation.py. Paper1 §1 and Theorems4.6/4.7: the old consumer switches supplied a family fact outside its declaration.toggle_label = "Pause"moves unchanged to the family root. Retry/Resume overrides and the existingtoggleaction properties stay exactly where they already belong. No persisted discriminator, feature flag, new control manager, null action class, roster, codec, generation or scheduling authority.The action receiver and unavailable feedback are typed callables. The family chooses which effect occurs; Toad owns the actual UI flash and goal write. Unsupported executions call only unavailable feedback, with no backend write. Controlled executions await the existing goal change. No new catch or callback exception classification.
Toad's existing GoalSession also owns the shared unavailable feedback previously repeated in the disabled-control and unsupported-toggle paths. ReadAgent and its existing concrete goal defaults remain untouched; no fake fixture methods or abstract-stub requirements.
Complete related source trace
execution.toggleassertions retain their API; the UI no longer recovers ControlledExecution membership.Evidence and remaining risk
Artifacts under
/home/ts/.cache/agent-scratch/pi-shell-colleague/retry-ui/:toggle-{before,after}-map.jsonandtoggle-production-consumers.txtretain source revisions/hashes, declarations, bases, methods, imports, decisions and use sites.toggle-source-proof-v2.json: all 3 changed paired files compile; 88 existing function/method bodies unchanged; all class bases and other annotated fields unchanged; caption declaration AST-identical at its new owner. No constructor/MRO graph change is claimed as an executed runtime proof.change. Original failed log is retained astoggle-source-proof.log; corrected expectation is in the distinct v2 result. No production change was made for that assertion.toggle-rebased-inputs.jsonverifies all28mapped source/dependency hashes remain identical. No compiler/test rerun for the unrelated main movement.git diff --checkpasses in both trees. No pytest, local NRA gate, model/provider, frontend, native process or install was launched. Prior 14/12/brace selections were not repeated.The new parameterized behavior test covers idle/completed/unresolved no-write fallback, runnable/running/standby Pause, paused Resume and retryable block Retry, including existing MI combinations. All eight cases are UNRUN. Integration's necessary selection is
tests/test_goal_execution.py::test_execution_owns_toggle_dispatch_and_unavailability, then existing Toad goal-control cases on the paired sources. The existing read-only observation and previously source-accepted connection/modal fixes remain part of1398's closure.Assumed: the existing execution constructors/action properties define these state-specific choices; the UI owns its read-only control gate and feedback; the configured-provider audit remains separate3820 work. Native09's controlled-provider acceptance is not transferred to this pair.