Skip to content

Validation run 2026-09-24

The first sitting of a scenario battery: an iPhone and a desktop on the same network as the 2026-09-23 run, plus isolated desktop instances on loopback. This record keeps what bears on 1.1.2. The battery's other scenarios are recorded with the fixes they lead to.

Operator

Agent-driven, with the user unlocking the phone's screen mirroring when it locked. The phone was driven through macOS iPhone Mirroring.

Route

The Compose route on the same network, as in the 2026-09-23 run: the release image by its verified digest, behind the route's own TLS terminator and private certificate authority. "The server is unreachable" means the terminator was stopped, so the phone and the desktop met exactly what they meet away from home. The deployment's own name and addresses are private.

Devices

Role Platform Obsidian Plugin
phone iOS 1.13.7 1.1.1 from the community directory
desktop macOS, an isolated Obsidian profile 1.13.4 the 1.1.2 build of the release pull request, copied into the vault

Server: obsyncd 1.1.1, release commit f420d4d, image run by its verified digest; 1.1.2 changes no server code. The phone's iOS version is not recorded during the run. The desktop plugin was a file copy, so this run does not count as a desktop production-path install.

The phone cannot run a build that is not in the directory, so every phone outcome below is a 1.1.1 outcome, and each 1.1.2 claim rests on the desktop.

Journeys

The rows are scenarios of the battery, numbered as the battery numbers them. They are not rows of docs/validation.md, whose V and J rows were not attempted in this run.

# Journey Outcome Note
S07 The phone woken, and typed into at once, in a note just edited on the desktop pass The phone typed before the desktop's line had reached it. Both edits were merged on both devices within about 2 s at the server, with no conflict copy
S18 A photo pasted into a note on the phone pass A 2 MB image reached the desktop within 16 s, byte-identical, rendered in the note, and uploaded once: the desktop sent nothing back
S21a An edit on the phone while the server is unreachable, then the server returns pass The edit reached the desktop 29 s after the server returned, nothing pressed. Meanwhile the phone's 1.1.1 status read error — Server repair could not verify a retained file…, the false error 1.1.2 removes. The 1.1.2 desktop read offline — retrying 3 s after the server stopped and never showed that error
S21b Obsidian force-quit and reopened on the phone while the server is unreachable fail on 1.1.1, fixed in 1.1.2 Obsidian stayed on "Loading plugins…" for more than three minutes, with "Reload app in Restricted Mode" as the highlighted button. The plugin's load waited for its first start. With the fix, a 1.1.2 desktop with the server unreachable finished loading in 1.7 s, against 156.3 s for the same build without it
— The sync status window with a long State line, at phone width fail on 1.1.1, fixed in 1.1.2 Every label stood one letter to a line. With the fix, rendered in the desktop at 360 px, labels break only between words
X1 Obsidian restarted on a desktop whose vault holds 29 synced files fail on 1.1.1, fixed in 1.1.2 With the first sync inside a waited-for onload, the start reconciled against a vault Obsidian had not listed yet: reconcile decision=start budget_files=0 and all 29 notes held back as deletions, on 3 of 3 launches. With 1.1.2, where the first sync waits for Obsidian's layout-ready signal, budget_files=29 on 5 of 5 launches, with nothing held back. On 1.1.1 the same race deleted empty folders on the other devices (#148)

The two load times were measured from launch until Obsidian reported its workspace layout ready with the plugin loaded (app.workspace.layoutReady), with the terminator stopped. After the fix, the status bar reads obsync: idle until the first request fails, and then offline — retrying. On this network that first request timed out after about 8 s, because nothing answers at all.

Found and filed for 1.1.3

  • 135: two desktops typing in one note for a minute ended split, with a dozen

    conflict copies, while both read idle.
  • 136: a plain http:// server address is accepted on desktop, and the setup

    token is sent before the terminator's redirect to HTTPS.
  • 137: a server address with a path or a missing port, or checked before setup,

    gets a message that does not name the fix.

What was not validated

  • 1.1.2 on a phone: the directory ships 1.1.1 until the release. The load fix and the table fix are proven on a desktop only.
  • Android, Windows and Linux: no device of those classes took part.
  • The rest of the battery, which is still running.