Bound pre-Send retries, reconcile pre-Send stops, check the top effort, and add a UI drift check #68
No reviewers
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
x/ego-chat!68
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/presend-bounds-and-ui-checks"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Stacked on #67, and includes a merge of it. It bounds retries before Send, makes every "stopped before Send" outcome closable as never delivered, checks ChatGPT's top thinking effort before Send, and adds a read-only check for ChatGPT UI changes.
preSendRetryStartedAtis set on the workflow at the first pre-Send recovery. It is kept across reasons and broker restarts.preSendRetryBudgetMs, default 90 minutes), the exchange stops aspre_send_retry_budget_exhaustedwith{ attempts, lastReason, since }.PRE_SEND_PROVEN_STOP_CODEScan now be closed as delivery absent. The set has six codes: the three composer-surface stops,model_effort_unavailable_before_send,pre_send_retry_budget_exhaustedandunexpected_chatgpt_draft_persistent.cancelled,delivery_absentanddeliveryState: "absent". A found marker refuses aspre_send_stop_marker_found.continuation_checkpoint_sourcefor a full-chat review that a live convergence checkpoint still names. Closing that review would invalidate the rollover checkpoint.effortName,effortLevel,effortMaxandeffortState. These fields stay out of the observation identity.model_effort_below_top. An unreadable one alerts once asmodel_effort_unknownand never blocks.answeringModelPolicy: "pause", the review stops before Send asmodel_effort_unavailable_before_send.responseModelSlugstays the version proof.ego-chat ui-check <binding>, brokerui.check, driver modeui_drift_check.Page.getResourceTree,Page.getResourceContent). The driver audit rejects every other method.ok,driftedorinconclusive, with booleans and counts only.broker.status.uiDrift, and a drift raises aui_driftalert.verifyfor up to 60 seconds.composerSurface, thenuiFacts, in the same order in its parameter list and in both source strings.ego-chat-main.Browser contract 31, runtime generation 2026-09-23.8.
Verification
npm test: 1243 tests, 1242 pass, 1 skipped. That is the 1100 baseline plus both branches' new tests plus the two guard tests.cargo test: 33 + 1.cargo fmt --checkis clean.cdpreturns the CDP result;Page.getResourceContentneeds no explicitPage.enable.Not yet done
Not merged, released or installed. These can only be confirmed live: