Skip to content

Reject stale history detail actions at their shared owner - #674

Draft
trissim wants to merge 1 commit into
mainfrom
fix/stale-history-detail-action
Draft

trissim wants to merge 1 commit into
mainfrom
fix/stale-history-detail-action

Conversation

@trissim

@trissim trissim commented Oct 15, 2026 •

Copy link
Copy Markdown

Recorded defect and owner correction

close-lifecycle9646's installed core-route-counts sidebar drag exited with WorkerFailed: toggle_details(None) then AttributeError("'NoneType' object has no attribute 'shown'"). Original evidence: /home/ts/.cache/agent-scratch/toad-sidebar-drag-9579/crash-frame-09.png and /home/ts/.local/state/toad/logs/Terminal_crash_2026-10-15T17_55_22_859550.txt.

LineHistory.toggle_details is now the synchronous optional-target admission boundary. Missing, retired/non-drawable, and no-longer-drawn targets schedule no work. A valid target keeps its activated top, then schedules the existing _show. Pointer activation and both keyboard expand/collapse callers share that owner; their separate worker scheduling is deleted. No new has_details policy and no independent caller checks.

The existing post-await drawable-state check and render-request source/context/width/theme checks remain. No changes to resize-owned _publish, hold_lines, or hold; no paging hunks. Published source723ff33d, separate from #675 throughput work.

Actual verification, with its limit

The real saved-thread application with source imports and installed f448/Coref1b33 dependencies survived valid tool expansion and repeated clicks/resizes, with readable history retained. Captures in /home/ts/.cache/agent-scratch/ux-held-pageup-9656/details/. The exact stale-click interleaving was not reproduced. The source boundary directly handles the recorded None failure; ordinary live survival is not proof of recreating that race.

Canonical Package/Repository AST evidence: Toad282 modules/1383 classes; installed Core321 atf1b33c10, Textual250 at17a3183b8; zero omissions. The earlier Textual254 figure described a separate Forms checkout, not this installed dependency. All direct consumers migrated; dynamic binding is source-qualified rather than proved by AST. Source/range/retirement relationships reviewed semantically. Ratchet: LineHistory GodClassExcess+6, optional-target ForeignAbsenceProbe+1; not ratchet0. Diff/AST checks passed. No automated Toad tests, synthetic application, fake provider, new input/fork, build or installation. Frontend closed normally.

Ready for independent integration review; not merged/installed and no installed-recovery claim. #675 remains draft/unaccepted for held-PageUp throughput and must not hold this recorded crash correction.

@trissim

trissim commented Oct 16, 2026

Copy link
Copy Markdown
Author

Owner: agent-comms-ux (existing implementation/verification owner); Codex integrates/installs. Read the complete diff against current main e8716b9: still needed, not merged or installed. Main still schedules toggle_details(None) and dereferences fragment.shown; this branch moves optional/current-target admission and worker scheduling into LineHistory, deleting the three caller scheduling decisions. Keep separate from #675 throughput. Remaining acceptance: integrated installed stale-target rejection plus valid pointer/keyboard expansion; original blocked goal/UNKNOWN inputs are unchanged.

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.

1 participant