Skip to content

Declare bus-picker Delete and place painted checks in the Textual layer - #1733

Merged
trissim merged 1 commit into
mainfrom
fix/bus-key-and-test-layer
Nov 10, 2026
Merged

trissim merged 1 commit into
mainfrom
fix/bus-key-and-test-layer

Conversation

@trissim

@trissim trissim commented Nov 10, 2026

Copy link
Copy Markdown

Two guard failures fixed; 39 relevant cases pass

P131 / order a5e070a0f68f. Fresh-main base: 242fd67352b18f887754372e1eac4b5626e88a84.

  • The two unchanged guards fail on the base: raw BINDINGS/action_forget, and a frontend-neutral test reaching ui.textual.
  • 24 consumers passed in the first related run; its one new key-control failure exposed Input selecting existing text on focus. Corrected only the setup to focus, type, then press Home/Delete. The failure remains in the evidence.
  • 15 final cases passed, exit 0, 20.71s: all nine layer guards, all five original painted heights, and the corrected real-key bus-removal consumer. The already-passed prefix was not repeated.
  • The first run's two keymap guards and all remaining bus/menu consumers passed. No guard or assertion was weakened.

Delete the raw key binding and handwritten dispatcher

ForgetSavedBusAction(WidgetAction) declares Delete, its existing title and its operation. BusChoices gets dispatch from the existing DeclaredWidgetActions mechanism instead of keeping BINDINGS plus action_forget. The underlying ListsBuses.forget_highlighted algorithm is unchanged.

Delete stays non-priority. PriorityActions is scoped to DismissAction, retaining Escape priority without stealing Delete from the address editor. The existing saved-bus test now drives actual keys: editing an address keeps the saved profile, Delete on the local bus does nothing, Delete on the saved row removes its profile, and Escape dismisses the picker.

This removes the independent dispatch copy (IMPL-12; Paper1 Theorem 4.6) rather than creating another key roster. No widget-action framework source was changed.

Put the painted test in its actual layer

The original test_channel_display_basis.py moves from tests/app to tests/textual. It deliberately reads ui.textual and PaintedApp.has_shown accepted-frame history, so a current-screen or neutral mock would change its question.

Its imports, decorated test, five heights and every read/unread assertion are AST-identical. Only the module description changes to identify the Textual-facing contract. The old file is deleted; there is no duplicate test or re-export. The test-layer documentation points at the new location.

Native changes and retained failures

Product and Python test edits were applied through native NRA 70296d7b124e712d1f00ea27d807438b9578f2f3 operations: import changes, declaration insertion, exact target patches and relocate_module_to_new_module.

Selector's earlier symbol-extraction plan refused the inferred test package boundary. The existing whole-module operation moves the complete file and deletes its old path in one checked transaction; no tool widening or manual file move was needed. --context-root tests is the explicit test-root control when needed. Native preflight/parse acceptance is not claimed as an application-equivalence proof; the consumers above establish the exercised behavior.

The first baseline attempt used Core's dev environment, which lacks ui-theme, and failed before collection. The actual baseline and passing consumers used the existing installed core-633f853d9-lock-3259806888420caa interpreter with PYTHONPATH=src, preserving the coherent production dependencies. No environment was created or package installed by hand.

Original plans and logs are retained under the author's .verification/p131-*.json and /home/ts/.cache/agent-scratch/comms-commander-2/p131-*.

Scope

P128's effect/phone change is separate and untouched. No phone investigation, host install, user session change or open-Toad manipulation is part of this repair. This PR is source and consumer proof; phone deployment remains with its owner.

P131: delete the raw binding and handwritten action dispatcher. Keep Delete non-priority through scoped PriorityActions, retain Escape, and drive the existing consumer through real keys. Move the original five-height painted test with native relocate_module_to_new_module; its imports and decorated test remain AST-identical. Source and test changes applied by NRA 70296d7b with retained native plans.
@trissim
trissim marked this pull request as ready for review November 10, 2026 05:42
Copilot AI balanced review requested due to automatic review settings November 10, 2026 05:42
@trissim
trissim merged commit 2de116a into main Nov 10, 2026
2 checks passed

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.

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