Skip to content

Commit a4bf03b

Browse files
committed
refactor: overhaul the cli api, from the scenarios up
1 parent 953f8d8 commit a4bf03b

1 file changed

Lines changed: 19 additions & 13 deletions

File tree

changes/v0.5.0.md

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,28 @@
11
# v0.5.0
22

3-
Breaking. Six commands are gone and `expose` refuses to run without a grantee.
3+
Breaking. The CLI is overhauled: six commands are replaced, and `expose` now
4+
requires a grantee.
45

56
## Where this came from
67

7-
The commands came last.
8+
The CLI had grown organically. A feature landed, a command arrived with it, and
9+
each one made sense next to the one before. Nobody had looked at the whole
10+
surface in a while. By 0.4 there were five commands covering a single job,
11+
getting two machines to talk to each other: `ticket`, `grant-token`, `add-peer`,
12+
`pin`, `remove-peer`.
813

9-
We started by writing `docs/scenarios.md`: two flows spelled out end to end from
10-
the operator's side, before touching any code. The first was reaching a shared
11-
build box from a laptop that was already running a daemon of its own.
14+
So we stopped adding to it and sat down with `docs/scenarios.md` instead. Two
15+
real flows, spelled out end to end from the operator's side, every command a
16+
person types, in order, across both machines.
1217

13-
It did not work. Two values had to travel out of band, a key and a token, and
14-
they were always used together. `add-peer` could not present a token. `--enroll`
15-
existed only on `pai-sho daemon`, so a laptop already serving other peers had to
16-
restart to admit one more. None of that was news to the code. It became obvious
17-
the moment someone had to write down what a person actually types, in order,
18-
across two machines.
18+
The first flow did not work. Reaching a shared build box from a laptop already
19+
running a daemon meant two values travelling out of band, a key and a token,
20+
always used together. `add-peer` could not present a token. `--enroll` existed
21+
only on `pai-sho daemon`, so a laptop already serving other peers had to restart
22+
to admit one more. None of this was hidden in the code. It just never came up
23+
until someone had to write down what you actually type.
1924

20-
Then the names went through several rounds. `pin` was tried and dropped. So were
25+
The names took several rounds. `pin` was tried and dropped, along with
2126
`grant-key` and `allow`/`connect`. Each described a mechanism rather than the
2227
thing happening, which is closer to: hi, be friends. And: yeah, be friends. That
2328
is `invite` and `accept`, and once the pair had honest names the rest followed.
@@ -95,6 +100,8 @@ replacing the grant check with `if true` fails five tests.
95100

96101
## Raw commits
97102

103+
* refactor: overhaul the cli api, from the scenarios up (2026-08-19)
104+
* docs: a narrative for how the CLI fell out of the scenarios (2026-08-19)
98105
* docs: absolute links in the changelog, and 0003's name note up top (2026-08-19)
99106
* docs: lead the tagline's list with no account (2026-08-19)
100107
* refactor: move grants into the pure core, and give the model one home (2026-08-19)
@@ -111,4 +118,3 @@ replacing the grant check with `if true` fails five tests.
111118
* refactor: pure core for admission and authorization, and expose requires a grantee (#10) (2026-08-18)
112119
* docs: macOS supervised operator via brew services, with the trust/XDG note (2026-08-07)
113120
* chore: bump to v0.4.2-dev (2026-08-07)
114-
* docs: a narrative for how the CLI fell out of the scenarios (2026-08-19)

0 commit comments

Comments
 (0)