docs/acceptance-ledger.md

Acceptance ledger

This ledger is the single record of v1 acceptance results. The app checklist and the multi-monitor checklist own what each check means. This file owns only the recorded result for each check.

Rules

  • Record each result against one frozen release candidate. The candidate has a fixed app revision and engine pin.
  • Fill every column: app revision, engine pin, macOS version, hardware, result, and evidence.
  • Use Pass, Fail, or Pending as the result. A skipped, unavailable, or unverified check stays Pending.
  • Name the kind of evidence: automated observation, manual permission grant, or hardware check. Never report one kind as another.
  • Link the evidence, such as a CI run, a PR, or a file under .audit/.
  • A multi-monitor failure fails the blocker. After a fix, clear the multi-monitor results and run the full checklist again, as its pass rules require.
  • A synthetic key event or a gesture detector test is not trackpad evidence.

Release candidate

No release candidate is frozen yet. Every check below is Pending.

FieldValue
App revisionNot frozen
Engine pinNot frozen
SigningDeveloper ID signed and notarized, required for public-release checks
Full runs passed0 of 3

Historical evidence

PROGRESS.md records earlier results for earlier builds. They include granted app and recovery checks, native gap checks, and physical horizontal and vertical display shortcut checks. These results are useful evidence, but they do not pass any check below. Each check needs a result on the release candidate.

The CI run 39222055411 on main at e516edd passed. Its permission selftest reported observed-ungranted. Attribution unresolved. Its recovery selftest reported skipped-ungranted, because Miri Developer lacked the Accessibility grant. A green selftest step therefore does not prove granted window recovery.

The drag integration branch pins engine merge ffff464 from samanyudas/paneru#29. Its tree matches reviewed head ee94515, which passed thirteen standalone native fixture lanes on two physical displays. Those fixture results do not pass S-6 on a frozen release candidate. A native AppKit fixture at the earlier c6ae07a pin measured fill restoration from width 512 to 2048 and back to 512, with all eight unrelated window frames unchanged. Its automated mock tests and this fill check do not establish native dragging, edge holds, or cross-display behavior. S-6 remains pending on a frozen candidate.

Scope accepted after the checklists

These checks cover behaviors that the checklists do not state on their own. S-1 refines the checklist's trackpad item, and S-2 to S-7 come from release scope changes between 19 October and 1 November 2026.

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
S-1Trackpad scrolling moves the strip under the pointer by default, and the setting switches to the focused strip. Each display moves independently.Pending
S-2Focus reveals only the hidden part of a column. Check partly hidden, fully visible, resized, and destination-display columns.Pending
S-3After a swipe or modifier scroll, the strip settles on a column, respects the ends, restores stack focus, and resists in a strip that fits.Pending
S-4Stack heights stay equal after membership changes, and windows with minimum heights never overlap.Pending
S-5An overflowing stack overlaps each window only below the top bar above it, and the focused window comes to the front and returns on focus change (#42).Pending
S-6Dragging a tiled window inserts it into a column at the top, middle, or bottom, or opens a new column, on the same and another display, with insertion lines, refusal, edge auto-scroll, and auto-scroll over a column cut off at an edge shared with another display (#43, #205).Pending
S-7The stack limit defaults to 5, never exceeds what fits, a Stack command past it starts a new column, and lowering it leaves existing stacks unchanged (#44).Pending

App acceptance

Source: App acceptance.

Permission and setup behavior

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
AP-1Launch Miri without Accessibility permission.Pending
AP-2Grant permission to the identity established by the prototype.Pending
AP-3Test the documented recovery procedure after replacing or moving the installed bundle.Pending
AP-4Run a competing window manager, including standalone Paneru.Pending
AP-5Turn off Displays have separate Spaces.Pending
AP-6Exercise the setup checker for Stage Manager, macOS tiling, and supported macOS gesture conflicts.Pending
AP-7Exercise a non-gesture setup check whose setting cannot be inspected.Pending

App lifecycle and recovery

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
AL-1Close and reopen Settings through the menu bar or Dock entry.Pending
AL-2Select Stop and relaunch Miri.Pending
AL-3Start management and select Quit Miri.Pending
AL-4Check the launch-at-login setting on a new installation.Pending
AL-5Crash the engine once while Settings remains open.Pending
AL-6Cause three engine crashes within five minutes.Pending
AL-7Perform a successful manual restart.Pending

Window accessibility after management ends

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
AW-1Prepare managed windows beyond both visible ends of a scrolling strip.Pending
AW-2Select Stop and verify access to every previously managed window while management remains stopped.Pending
AW-3Prepare off-screen managed windows again and select Quit Miri.Pending
AW-4Prepare off-screen managed windows again and cause an unrecoverable engine failure.Pending
AW-5Repeat the failure check when the engine cannot execute its clean-shutdown handler.Pending
AW-6Repeat these checks across the native Spaces and display arrangements in the multi-monitor checklist.Pending

Configuration behavior

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
AC-1Change gaps and width presets through Settings.Pending
AC-2Relaunch Miri.Pending
AC-3Edit ~/Library/Application Support/Miri/config.toml externally with valid settings.Pending
AC-4Introduce invalid TOML.Pending
AC-5Make the configuration file unwritable and attempt a setting change.Pending
AC-6Check standalone Paneru configuration before and after these operations.Pending
AC-7Check a new installation's layout defaults.Pending
AC-8Upgrade an installation whose configuration needs migration.Pending
AC-9Exercise a migration that cannot preserve user values.Pending

Shortcuts and layout behavior

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
AS-1Record several shortcuts for one action.Pending
AS-2Test supported non-US keyboard layouts, including AZERTY, QWERTZ, and Dvorak.Pending
AS-3Upgrade an installation with custom bindings.Pending
AS-4Exercise the v1 bindings in Keybinding reference.Pending
AS-5Open a new resizable window.Pending
AS-6Adjust column width and window height.Pending
AS-7Open fixed-size windows and Miri's settings.Pending
AS-8Focus different columns in a strip that fits, then in a strip that overflows.Pending
AS-9Check the layout with a visible Dock.Pending
AS-10Enable macOS Reduce Motion with Miri's disable-animation setting off.Pending
AS-11Turn off Reduce Motion and enable Miri's disable-animation setting.Pending
AS-12Check v1 controls and bindings for deferred work.Pending
AS-13Record a shortcut already assigned to a different Miri action.Pending
AS-14Record a shortcut with a known macOS conflict.Pending
AS-15Maximize a tiled window with ⌃⌥F, then move focus to the left and right past it, and swipe the strip past it.Pending
AS-16Set Maximized stacked window opens to Left of its stack, then to Right of its stack, and maximize a stacked window each time.Pending
AS-17Start Miri with a configuration that binds window_fullwidth to a shortcut.Pending

Strip gestures and conflict handling

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
AG-1Inspect the strip gesture controls.Pending
AG-2Run initial setup without verified gesture usability.Pending
AG-3Run initial setup with four-finger usability verified and no macOS conflict.Pending
AG-4Exercise the supported three-finger and four-finger strip gestures on real hardware.Pending
AG-5Reverse swipe direction through Settings and relaunch Miri.Pending
AG-6Select Off.Pending
AG-7Confirm a known macOS conflict with the selected strip gesture.Pending
AG-8Make gesture conflict detection unavailable.Pending
AG-9Complete a real gesture test with consistent strip movement and no unintended macOS actions.Pending
AG-10Relaunch Miri after selecting and persisting a gesture preference.Pending
AG-11Fail or leave a gesture test inconclusive.Pending
AG-12Confirm a known macOS conflict despite a user test or user confirmation.Pending
AG-13Change the finger count, then separately change the direction.Pending
AG-14Upgrade macOS, then separately upgrade the bundled engine.Pending
AG-15Detect a change to relevant macOS gestures, then separately report such a change through Miri.Pending
AG-16Check keyboard window management while a gesture is Off pending retesting.Pending

Updates and diagnostics

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
AU-1Check the default update policy on a new installation.Pending
AU-2Enable automatic updates and start Miri with an update available.Pending
AU-3Open logs and use Copy Diagnostics.Pending
AU-4Observe network activity during management, update checks, and update downloads.Pending
AU-5Exercise diagnostics with known window titles, document paths, usernames, and raw configuration values in the test data.Pending

Public-release delivery

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
AR-1Validate the release disk image on the target Mac.Pending
AR-2Install the release through its Homebrew cask.Pending
AR-3Check the distributed source and license notices.Pending

Multi-monitor acceptance

Source: Multi-monitor acceptance.

Quick check

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
HQ-1Scroll each strip in a horizontal and then a vertical arrangement.Pending
HQ-2Scroll one strip.Pending
HQ-3Move focus and a window to the other display in both directions.Pending
HQ-4Unplug and replug the external display 3 times.Pending
HQ-5Close and open the lid once with an external display connected.Pending
HQ-6Sleep and wake 3 times.Pending
HQ-7Force-quit the engine once.Pending

Arrangements and scrolling

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
HA-1Arrange displays horizontally, with the external display on the left and then on the right.Pending
HA-2Arrange displays vertically, with the external display above and then below.Pending
HA-3Repeat each arrangement with the laptop as the main display and then with the external display as the main display.Pending
HA-4Scroll every strip to both ends with the keyboard and the trackpad.Pending
HA-5Scroll one strip.Pending
HA-6Repeat scrolling on displays with different resolutions and scaling, including the 32-inch TV.Pending

Monitor navigation

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
HM-1Move focus to the display in each direction where one exists.Pending
HM-2Move a window to the display in each direction where one exists.Pending
HM-3Issue a monitor command toward a side with no display.Pending

Display changes

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
HD-1Unplug and replug the external display 50 times.Pending
HD-2Close and open the lid 20 times with two external displays connected.Pending
HD-3Sleep and wake 50 times, including at least one overnight sleep.Pending
HD-4Rearrange displays in System Settings > Displays while Miri runs.Pending
HD-5Change the main display while Miri runs.Pending
HD-6Change the resolution and scaling of a connected display.Pending
HD-7Unplug a display that shows a native fullscreen window.Pending

Engine recovery

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
HR-1Force-quit the engine 10 times during a multi-monitor session.Pending
HR-2Force-quit the engine 3 times within 5 minutes.Pending
HR-3Maximize a tiled window on each display, including a window from a stack, then force-quit the engine.Pending

Endurance

IDCheckApp revisionEngine pinmacOSHardwareResultEvidence
HE-1Run an 8-hour working session with two displays and no restarts.Pending
HE-2Complete the 2-week daily-use period from the release scope.Pending