Skip to content

Commit f95ca4d

Browse files
committed
docs(s001): ADR-0004's second appended correction — still proposed, for a different reason
Q2, answered yes at G4. Supersedes two rows of the first correction's table and nothing else: macOS is now built natively and serves on a runner, and Windows builds here and on a runner since the owner installed 7z. The ADR's literal exit condition — a running smoke build on macOS and Windows — is satisfied for the sidecar. The status still does not move, because the condition was written about the wrong thing. This ADR chooses a desktop SHELL, and a Burrito binary that boots and serves says nothing about that choice: every alternative in its table would pass, since they all wrap the same BEAM. What is established about the shell: it opens a real window on exactly one OS, Linux, run by the owner, with a screenshot. It compiles on three. It has never been launched on macOS or Windows. One shell running on one OS is not a decision about a cross-platform shell, and the fallback stays untriggered rather than eliminated. New lift condition replaces the first correction's: a window on macOS and on Windows, and the sidecar observed dying with its window by a mechanism this project owns. The build-and-launch half is done and was never the question. Caught while writing the G3 repost, which claimed this correction existed before it did — the fifth claim-ahead-of-tree this slice, and the first I caught before it left the machine. mix gate exit=0. Signed-off-by: Ayla Croft <aylacroft@proton.me>
1 parent 9ca8ac2 commit f95ca4d

1 file changed

Lines changed: 74 additions & 0 deletions

File tree

‎docs/adr/0004-desktop-shell-ex-tauri.md‎

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,77 @@ half on both. It does not satisfy the window half on any OS, and no runner will.
8888

8989
No date is set on this, because the condition is a machine becoming available and I do not know
9090
when that is.
91+
92+
---
93+
94+
## Second correction, 2026-09-07 — Slice 001 G4. **Still `proposed`, and now for a different reason.**
95+
96+
**This supersedes two lines in the first correction's table above**, and nothing else in it. That
97+
table read:
98+
99+
> | Running smoke build on **macOS** | **not done** | The `macos_aarch64` target cross-compiles under Zig, unsigned. Nothing here can execute it. |
100+
> | Running smoke build on **Windows** | **not built** | Burrito unpacks the Windows ERTS `.exe` with 7z; none is installed and installing one needs root. |
101+
102+
**Both are now done, and neither is what this ADR is about.**
103+
104+
### What changed
105+
106+
**macOS**: the `package` workflow builds it natively on `macos-latest` — 12 435 992 bytes — and
107+
it serves HTTP 200 under `--no-halt --smoke`, exiting on its own with the process list unchanged
108+
either side.
109+
110+
**Windows**: the owner installed 7z, so it now cross-builds here as well —
111+
`desktop_windows_x86_64.exe`, 27 316 224 bytes — and it builds natively on `windows-latest` and
112+
runs under `--smoke`. **It has not been observed serving**; that step has been blocked by three
113+
Windows-only defects in the workflow, all now fixed, and the answer is not yet in.
114+
115+
**So this ADR's literal exit condition — "a running smoke build on macOS and Windows" — is
116+
satisfied for the sidecar.** The status still does not move, and the reason is that the
117+
condition was written about the wrong thing.
118+
119+
### Why `proposed` is still right
120+
121+
**This ADR chooses a desktop shell.** Its subject is `ex_tauri` versus a hand-rolled Tauri
122+
sidecar versus elixir-desktop versus Electron versus local-server-plus-tray. A Burrito binary
123+
that boots and serves says nothing about any of them: **every alternative in the table would
124+
pass that test**, because they all wrap the same BEAM.
125+
126+
What has been established about the *shell*, as opposed to the sidecar:
127+
128+
* **`mix ex_tauri.dev` opens a real window showing the scaffold** — on **one** operating system,
129+
Linux, run by the owner on 2026-09-07, with a screenshot at
130+
`slices/001-packaging-spike/proof/ac4-linux-window.png`. That is the first evidence in this
131+
project that the chosen shell does the thing it was chosen for.
132+
* The shell **compiles** on all three targets in CI. Compiling is not running, and no job claims
133+
otherwise.
134+
* On macOS and Windows the shell has **never been launched**. Those are AC2 and AC3, both
135+
`[manual]`, both needing a desktop that does not exist here.
136+
137+
**One shell running on one OS is not a decision about a cross-platform shell.** The fallback
138+
path remains **untriggered**, not eliminated: its trigger is "Windows fails with `ex_tauri`",
139+
and the Windows *shell* has still never been attempted.
140+
141+
### And a defect the choice has to answer for
142+
143+
Slice 001 G4 measured the sidecar's death when its parent dies, which is what "closing the
144+
window stops the sidecar" means in practice:
145+
146+
* dev path, through a real window: **14–19 ms**, six runs — but **not** by `ex_tauri`'s
147+
heartbeat, whose 1500 ms timer never fired. `SIGKILL` matches `SIGTERM`, so it is the stdio
148+
pipe closing, which is the OS and not this library.
149+
* production shape, three runs: **orphaned past 7.6 s, still answering HTTP 200**, with
150+
`ExTauri.ShutdownManager` compiled in.
151+
152+
**Across every measurement in slice 001 the heartbeat has never been observed to fire.** The
153+
mechanism this ADR's chosen shell provides for the problem is present and unexercised. That is
154+
not a reason to reject `ex_tauri` — no alternative has been shown to do better — but it is a
155+
reason not to write `accepted` beside it yet.
156+
157+
### Lift condition, replacing the first correction's
158+
159+
**Owner: Ayla Croft.** This ADR is confirmed or amended when **`mix ex_tauri.dev` has opened a
160+
window on macOS and on Windows**, and when the sidecar has been observed dying with its window
161+
on at least one of them **by a mechanism this project owns**. The build-and-launch half is done
162+
and was never the question.
163+
164+
No date: the condition is two machines becoming available, and I do not know when that is.

0 commit comments

Comments
 (0)