Skip to content

Keep a running plan's sheet, report and readings intact - #32

Merged
donislawdev merged 1 commit into
mainfrom
fix/stability-package-a
Sep 29, 2026
Merged

donislawdev merged 1 commit into
mainfrom
fix/stability-package-a

Conversation

@donislawdev

Copy link
Copy Markdown
Owner

What this changes

Package A of an internal stability review of the window.

  • A running plan keeps its sheet. While a plan is being carried out, Escape, the close mark, a new preview and the details panel no longer put the plan sheet away. Putting it away lowered the busy flag while the run went on, so a second run could start beside the first, after which the guard against closing the window and Interrupt followed only the second one. The close mark is greyed with a tooltip saying why, Escape is taken and does nothing, a preview or the details are refused with the reason in the status line, and the window also refuses a second run while it holds one.
  • The report of a run is not replaced. The list is refreshed after the run has been recorded and outside the catch meant for a refused plan. A run that carried nothing out says so instead of "Done. All 0 entries are where you asked."
  • A reading asked for during another is owed, not dropped. The reading after a plan could vanish under a tick and leave the Startup type column stale until F5.
  • A working tick after a failed one brings the window back at once.
  • A name handed over twice in one reading becomes one row.

How it was checked

  • New tests: RunHoldsTheSheetGuards (4, on a live window with a held run) and OwedReadingTests (3).
  • Window tests 805 of 805 and architecture tests 182 of 182 on this machine. One existing assertion in MainViewModelTests.Two_readings_are_never_out_at_once now expects the second reading to follow the first rather than be dropped.
  • Mutation entries for every new guard, and the entries re-anchored by the change: 23 of 23 caught.
  • Nothing here touches a service manager. A run in the tests is a task the test holds.

Not covered

  • The refresh moved out of the catch has no test of its own: nothing in the test host can make it throw an InvalidOperationException any more.
  • The greyed close mark was not photographed on a live run.

🤖 Generated with Claude Code

Package A of the stability review: G-1, G-2, G-5, G-6 and a defence for X-1.

- While a plan is being carried out, Escape, the close mark, a new preview
  and the details panel no longer put the plan sheet away. Putting it away
  lowered the busy flag while the run went on, so a second run could start
  beside the first, after which the close guard and Interrupt followed only
  the second one. The close mark is greyed with a tooltip saying why,
  Escape is taken and does nothing, a preview or the details are refused
  with the reason in the status line, and the window also refuses a second
  run while it holds one.
- The list is refreshed after the run has been recorded and outside the
  catch meant for a refused plan, so a refresh that throws no longer
  replaces the run's report with an empty one. A run that carried nothing
  out says so instead of "Done. All 0 entries are where you asked."
- A full reading asked for while another is out is owed and carried out
  after it, instead of being dropped. The reading after a plan could vanish
  under a tick and leave the Startup type column stale until F5.
- A tick that works after one that failed brings the status line and the
  empty list face back at once.
- A name handed over twice in one reading becomes one row.

Tests: RunHoldsTheSheetGuards and OwedReadingTests. One assertion in
MainViewModelTests now expects the owed second reading, one after the other.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 29, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 9790f7bd-d93b-43c2-b25d-3090ce3e5788


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@donislawdev
donislawdev merged commit dc35a76 into main Sep 29, 2026
8 checks passed
@donislawdev
donislawdev deleted the fix/stability-package-a branch September 29, 2026 21:12
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