Skip to content

Commit 13c5b3f

Browse files
committed
docs(s001): G1 plan v2
Four changes from the G1 review. Line 1: all three arms pre-registered before any is run, with the command for each -- (a) default configuration on the pinned toolchain, (b) otp_release overridden to 28.5.0.5, (c) whether ~> 27.0 is a hard guard in ex_tauri's code or a default it downloads against. A refusal is (a) AND (b) both failing. If (b) works there is no refusal and ADR-0004 is confirmed with the override recorded as the configuration. Output and exit code per arm. Line 3: packaging brings a Rust toolchain and the Tauri CLI, and neither is a hex package, so the mix.lock derivation cannot mark them. Both get pinned and both get VERSIONS.md rows whose marks come from rustc --version and cargo tauri --version, stated as such. Otherwise the generator's rule reads as if it covered the whole table, which is the defect B3 caught in a different costume. Line 9: the ubuntu runner has no display, so its job states which of two claims it is making -- the shell under xvfb-run, or the sidecar smoked alone. macOS and Windows runners have desktop sessions and launch the shell there. A claim that does not say which will be sent back. Line 12: an amendment to ADR-0004 is an appended correction naming what it supersedes, with a status word from the vocabulary docs/03 allows, and the alternatives table stays either way because the next person to hit R1 needs it. Rule 11's own comment now records that the main half passed vacuously on the first attempt, and how to demonstrate it properly, so the next person does not repeat it. Signed-off-by: Ayla Croft <aylacroft@proton.me>
1 parent c1b14ad commit 13c5b3f

2 files changed

Lines changed: 20 additions & 4 deletions

File tree

‎scripts/plan_check.sh‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,12 @@ section "11. Slice lifecycle matches the branch"
164164
#
165165
# Only ROADMAP.md is read: check 4 already asserts SLICE.md agrees with it, so checking both
166166
# would be checking the same fact twice and calling it two.
167+
#
168+
# Demonstrating the main half needs care, and the first attempt at it passed vacuously: checking
169+
# out main reverts THIS FILE to the version without the rule, so the run proves nothing. Bring the
170+
# branch's script onto main's worktree first:
171+
# git checkout main && git checkout <slice-branch> -- scripts/plan_check.sh
172+
# then plant a status and run. Recorded so the next person does not repeat it.
167173
roadmap_status() {
168174
awk -F'|' -v I=" $1 " '$2==I{gsub(/^ +| +$/,"",$7); print $7}' ROADMAP.md
169175
}

‎slices/001-packaging-spike/NOTES.md‎

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@
55
Posted 2026-09-06 against `537bd3a`, branch cut from `main` at `de95666`. Fifteen lines, execution order, one
66
sentence each, each naming what it produces and the red it fails on first. **No code until this is approved.**
77

8-
1. **The `ex_tauri` refusal measurement runs before any packaging work**, adding `{:ex_tauri, "~> 0.2", only: :dev}` to `mix.exs` and recording `mix deps.get` and `mix deps.compile ex_tauri` with their full output and exit codes on the pinned 28.5.0.5 / 1.20.4 — the red being `ex_tauri`'s own `otp_release: "~> 27.0"` refusing the pinned OTP, in which case I stop after this line and post the refusal, ADR-0004's five alternatives and a recommendation as a Question on the slice issue, because the pin was decided at 000 and does not move.
8+
1. **The `ex_tauri` measurement runs before any packaging work, and all three arms are pre-registered here before any is run**: **(a)** default configuration on the pinned toolchain — `mix deps.get` then `mix deps.compile ex_tauri` with `{:ex_tauri, "~> 0.2", only: :dev}` in `mix.exs`; **(b)** the same with `otp_release` overridden to `28.5.0.5` in this project's config; **(c)** whether `~> 27.0` is a hard guard in `ex_tauri`'s own code or a default it downloads against, read from the unpacked source with `mix hex.package fetch ex_tauri 0.2.0 --unpack` and `grep -rn "otp_release\|27" <src>` — output and exit code recorded per arm, **a refusal being (a) and (b) both failing**, and if (b) works there is no refusal, ADR-0004 is confirmed and the override is recorded as the configuration.
99
2. **The acceptance-criteria tag review** produces a corrected `slices/001-packaging-spike/SLICE.md` and its Manual verification queue, failing first on the mistags this slice was predicted to carry: AC4 and AC5 claim `[auto]` for things needing a desktop session or a machine that does not exist, and AC6 mixes an auto half with a manual one.
10-
3. **Burrito wiring** produces the `releases:` block in `mix.exs` and `lib/trinity/release.ex` running migrations explicitly, red on `MIX_ENV=prod mix release` failing before the release assembles at all.
10+
3. **Burrito wiring and the non-hex toolchain** produce the `releases:` block in `mix.exs`, `lib/trinity/release.ex` running migrations explicitly, a **Rust pin in `.tool-versions`** and the **Tauri CLI pinned at its measured version**, plus their two `VERSIONS.md` rows whose marks come from `rustc --version` and `cargo tauri --version` rather than from `mix.lock` — red on `MIX_ENV=prod mix release` failing before the release assembles, and on `mix versions.gen --check` if those rows are emitted as if lock membership had answered for them.
1111
4. **`lib/trinity/paths.ex`** resolves the per-OS data directory with `test/paths_test.exs` red first on each of the three branches returning the wrong root under a stubbed `:os.type/0`.
1212
5. **`lib/trinity/smoke.ex` and the `--smoke` flag** boot the endpoint on `127.0.0.1:0`, print the assigned port, and exit 0, red first on a smoke run that stays alive past its own exit call.
1313
6. **The linux x86_64 Burrito build** produces `burrito_out/trinity_linux_x86_64`, a single binary, launched and exited under `--smoke`, with `ps -eo pid,ppid,comm` captured before and after — **a leaked sidecar surviving the exit is the red**, and it is the criterion this line exists for.
1414
7. **AC1's serving proof** captures `curl -sS -o /dev/null -w '%{http_code}'` against the port the smoke run printed, red first on a binary that starts but serves nothing.
1515
8. **`docs/packaging.md`'s measurement table** records binary size from `stat -c %s` and cold-start-to-serving from a timed loop on linux x86_64 only, red on `plan_check` check 6 if it cites a path the tree does not have.
16-
9. **`.github/workflows/package.yml`** adds macos-latest and windows-latest jobs that build the artifact and run it under `--smoke`, red first on a job that reports success without an artifact in its upload step.
16+
9. **`.github/workflows/package.yml`** adds macos-latest and windows-latest jobs that build the artifact, launch the **shell** on their real desktop sessions and exit under `--smoke`, and a ubuntu-latest job that **states which of two it is** — the shell under `xvfb-run`, or the sidecar smoked alone because the runner has no display — red first on a job reporting success with no artifact in its upload step, and on any runner claim that does not say which of those two it made.
1717
10. **What a runner proves and what it cannot** is written into `docs/packaging.md` as two explicit lists — it proves the artifact builds, launches and exits clean, and it produces a launch log; it cannot produce a screenshot of a real window on a real desktop, and nothing will claim it did.
1818
11. **Every criterion needing a real desktop is tagged `[manual]` with "no machine available — Ubuntu is the only machine" as its stated reason**, never silently dropped, and the slice's exit condition names them as unproven rather than counting them.
19-
12. **ADR-0004 is confirmed or amended** from what lines 1 to 9 actually measured, red on `plan_check` check 6 if the amendment cites an alternative with no ADR of its own.
19+
12. **ADR-0004 is confirmed or amended** from what lines 1 to 9 measured, as an **appended correction that names what it supersedes** and carries a status word from the vocabulary `docs/03` allows — `accepted`, since this slice is what its current `proposed → to be confirmed by Slice 001` was waiting on — with **the alternatives table kept either way**, because the next person to hit R1 needs it; red on `plan_check` check 6 if the amendment cites an alternative with no ADR of its own.
2020
13. **`coverage.tsv` gains slice 001's row** and the drop rule does real work for the first time, red first by seeding a row more than three points under 000's **27.01** and watching `mix trinity.coverage` fail, then green at the real figure or with a reason named here.
2121
14. **`mix gate` and `scripts/plan_check.sh` both exit 0 on this branch**, with `mix phx.server` still starting without Tauri, red on either gate or on the plain server needing the desktop shell to boot.
2222
15. **The manual queue holds only what the tree cannot answer**, each item naming the machine or account it needs: a macOS desktop for AC2, a Windows desktop for AC3, a Linux desktop session for AC4's window, and the same three for AC6's window-close check — **all four are the same missing thing, a machine that is not this one.**
@@ -31,6 +31,16 @@ outside packaging, that is a Question on the slice issue, not a commit.
3131
index. If `ex_tauri` refuses it, that is ADR-0004's decision to make under its alternatives, which is what line 1
3232
routes to.
3333

34+
## Two VERSIONS.md rows the generator's rule does not cover
35+
36+
Packaging brings a **Rust toolchain** and the **Tauri CLI** into the tree. Neither is a hex package, so the
37+
`✅ in mix.lock` derivation slice 000 built **cannot mark them** — lock membership has nothing to say about either.
38+
39+
Their rows carry their own stated derivation instead: `rustc --version` and `cargo tauri --version`, named in the
40+
row the way the toolchain rows name `.tool-versions`. Without that, the generator's rule reads as if it covered
41+
the whole table, which would be the same defect finding B3 caught — a mark whose meaning is assumed rather than
42+
stated.
43+
3444
## The tag review, done now rather than at G3
3545

3646
`SLICE.md` carries seven criteria. Three are tagged `[manual]` and four `[auto]`. **Three of the four `[auto]`

0 commit comments

Comments
 (0)