Skip to content

Keep live error notes in chronological order - #1737

Merged
trissim merged 1 commit into
mainfrom
fix/chronological-error-notes
Nov 11, 2026
Merged

trissim merged 1 commit into
mainfrom
fix/chronological-error-notes

Conversation

@trissim

@trissim trissim commented Nov 11, 2026

Copy link
Copy Markdown

P1452. One inherited posting capability replaces the error box riding a fixed live-tail rank. ErrorNote inherits ChronologicalEntry; it captures the already-received cursor before mounting. The transcript owner keeps the earlier saved range before the note and puts subsequent saved rows after it using the existing pager and viewport-preservation path. No fake Pi row, Core cursor field, second reader or error-specific scroll callback. Saved range claims now keep the active publisher alive when an earlier range reports coverage. Reopening an evicted view restores the whole canonical source, not just the last range. Proof: 23 focused app checks passed in 25.81s, including the new chronological, off-tail-scroll and eviction/return case; source-owner guard closing behind this checkpoint. Reader-crash hotfix is separate PR 1736 (already merged). Installed/user verification follows the paired install. Known separate red encountered: the existing wire queue test asserts holds_input at test_input_failure_draft.py:147; not offered as green evidence.

Copilot AI balanced review requested due to automatic review settings November 11, 2026 06:30

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@github-actions

Copy link
Copy Markdown

debt-src at dbafc12 blocks on 6 lines:

grew TypeErrors:src/toad/transcript_publication.py +3
grew TypeErrors:src/toad/widgets/conversation.py +2
grew UnannotatedParameter:src/toad/transcript_preparation.py +4
found TypeErrors:src/toad/transcript_publication.py at src/toad/transcript_publication.py:760 (Argument 1 to "painted_read" of "TranscriptCursor" has incompatible type "Callable[[TranscriptCursor], FrozenSavedPrefix]"; expected "Callable[[TranscriptCursor], FrozenClosedHistory]"  [arg-type]) src/toad/transcript_publication.py:760 (Incompatible return value type (got "FrozenSavedPrefix", expected "FrozenClosedHistory")  [return-value]) src/toad/transcript_publication.py:760 (Argument 1 to "FrozenSavedPrefix" has incompatible type "ReplaceablePageSource"; expected "SavedHistory"  [arg-type])
found TypeErrors:src/toad/widgets/conversation.py at src/toad/widgets/conversation.py:1928 (Item "Widget" of "AgentActivityDivider | WidgetType" has no attribute "prepare_post"  [union-attr]) src/toad/widgets/conversation.py:1931 (Item "Widget" of "AgentActivityDivider | WidgetType" has no attribute "posted"  [union-attr])
found UnannotatedParameter:src/toad/transcript_preparation.py at src/toad/transcript_preparation.py:79 src/toad/transcript_preparation.py:90 src/toad/transcript_preparation.py:90 src/toad/transcript_preparation.py:108 src/toad/transcript_preparation.py:231 src/toad/transcript_preparation.py:387 src/toad/transcript_preparation.py:522 src/toad/transcript_preparation.py:550 src/toad/transcript_preparation.py:553 src/toad/transcript_preparation.py:568 src/toad/transcript_preparation.py:572 src/toad/transcript_preparation.py:607 src/toad/transcript_preparation.py:607 src/toad/transcript_preparation.py:607 src/toad/transcript_preparation.py:619 src/toad/transcript_preparation.py:706 src/toad/transcript_preparation.py:709 src/toad/transcript_preparation.py:712 src/toad/transcript_preparation.py:718 src/toad/transcript_preparation.py:721 src/toad/transcript_preparation.py:772
Warn-only, never blocks (11)
src/toad/widgets/conversation.py: GodClassExcess +4
src/toad/entry_placement.py: LintFindings +1
src/toad/transcript_preparation.py: LintFindings +1
src/toad/transcript_publication.py: LintFindings +1
src/toad/widgets/transcript_history.py: LintFindings +1
src/toad/entry_placement.py: Unformatted +1
found LintFindings:src/toad/entry_placement.py at src/toad/entry_placement.py:3 (I001 [*] Import block is un-sorted or un-formatted)
found LintFindings:src/toad/transcript_preparation.py at src/toad/transcript_preparation.py:3 (I001 [*] Import block is un-sorted or un-formatted)
found LintFindings:src/toad/transcript_publication.py at src/toad/transcript_publication.py:3 (I001 [*] Import block is un-sorted or un-formatted)
found LintFindings:src/toad/widgets/transcript_history.py at src/toad/widgets/transcript_history.py:3 (I001 [*] Import block is un-sorted or un-formatted)
found Unformatted:src/toad/entry_placement.py at src/toad/entry_placement.py:1 (Black would reformat this file)

@trissim
trissim merged commit 1421d01 into main Nov 11, 2026
1 of 2 checks passed
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.

2 participants