Summary
openspec/specs/runtime-shell/spec.md REQ-SHELL-003 "Toolbar contents" describes a toolbar that no longer exists. The requirement says:
When canEdit is true, the toolbar MUST render exactly two affordances: an Add Widget dropdown button … and a Save Layout button. … The Save Layout button MUST be disabled while a save request is in flight …
That toolbar was removed deliberately in 18d601a0 ("trim shell toolbar"). src/views/WorkspaceApp.vue:46 records the decision in place of the markup:
<!-- Region 3 (edit toolbar) removed: editing actions (Edit/Save
dashboard, Add custom widget) live in the per-dashboard cog
menu (DashboardRowActions) so the page chrome stays clean. -->
So there is no Save Layout button to be disabled, and gate-19's remaining runtime-shell::save-button-disabled-while-in-flight finding is unsatisfiable. Found during hydra gate-19 round 2 (#92); left open rather than excluded, because @e2e exclude records "a browser cannot observe this" and the truth here is "the affordance was removed".
The part worth a second look
REQ-SHELL-003's other two scenarios already carry @e2e exclude:
Add-widget dropdown lists all widget types → @e2e exclude registry-driven dropdown contents — covered by Vitest component test
Save sends layout to correct endpoint → @e2e exclude PUT request shape/endpoint assertion — covered by Vitest + Newman
Both reasons are phrased as "this is better covered elsewhere". Neither mentions that the control they describe is gone from the shell. Whoever wrote them satisfied the gate without noticing the requirement had been overtaken — which is the failure mode an exclusion reason is supposed to prevent, and the reason this third one is not getting the same treatment.
What would close it
Update REQ-SHELL-003 to describe where editing actually lives now — the per-dashboard cog menu (DashboardRowActions) — including whichever control now owns the in-flight-disabled behaviour, and re-derive the three scenarios from that. If the in-flight guard genuinely has no UI any more, the scenario should be deleted rather than excluded.
At that point the surviving scenarios are browser-observable through the cog menu and can take real tests.
Summary
openspec/specs/runtime-shell/spec.mdREQ-SHELL-003 "Toolbar contents" describes a toolbar that no longer exists. The requirement says:That toolbar was removed deliberately in
18d601a0("trim shell toolbar").src/views/WorkspaceApp.vue:46records the decision in place of the markup:So there is no Save Layout button to be disabled, and gate-19's remaining
runtime-shell::save-button-disabled-while-in-flightfinding is unsatisfiable. Found during hydra gate-19 round 2 (#92); left open rather than excluded, because@e2e excluderecords "a browser cannot observe this" and the truth here is "the affordance was removed".The part worth a second look
REQ-SHELL-003's other two scenarios already carry
@e2e exclude:Add-widget dropdown lists all widget types→@e2e exclude registry-driven dropdown contents — covered by Vitest component testSave sends layout to correct endpoint→@e2e exclude PUT request shape/endpoint assertion — covered by Vitest + NewmanBoth reasons are phrased as "this is better covered elsewhere". Neither mentions that the control they describe is gone from the shell. Whoever wrote them satisfied the gate without noticing the requirement had been overtaken — which is the failure mode an exclusion reason is supposed to prevent, and the reason this third one is not getting the same treatment.
What would close it
Update REQ-SHELL-003 to describe where editing actually lives now — the per-dashboard cog menu (
DashboardRowActions) — including whichever control now owns the in-flight-disabled behaviour, and re-derive the three scenarios from that. If the in-flight guard genuinely has no UI any more, the scenario should be deleted rather than excluded.At that point the surviving scenarios are browser-observable through the cog menu and can take real tests.