@nervur-org/dock 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -10
- package/package.json +4 -13
- package/GETTING_STARTED.md +0 -138
- package/GLOSSARY.md +0 -118
- package/WORLDS.md +0 -569
- package/quo-api.md +0 -196
- package/quo-app-bells.md +0 -280
- package/quo-dock.md +0 -1945
- package/quo-harbor.md +0 -874
- package/quo-human.md +0 -1042
- package/quo-mcp.md +0 -343
package/WORLDS.md
DELETED
|
@@ -1,569 +0,0 @@
|
|
|
1
|
-
# WORLDS
|
|
2
|
-
|
|
3
|
-
This is how Quo is proposed to a person and to an organisation. It sits
|
|
4
|
-
beside `quo/SPEC.md` and adds no word to it. The spec says what a
|
|
5
|
-
harbor, a ward and a being are, and what crosses a door. This paper says
|
|
6
|
-
what to make of them, so that any setup, from one person with a phone to
|
|
7
|
-
an organisation with ten thousand members, is reasoned in the same words.
|
|
8
|
-
`papers/quo-dock.md` and the papers of its sides follow this one; an
|
|
9
|
-
estate's paper follows all of them. It binds the dock and the estates, never
|
|
10
|
-
the library.
|
|
11
|
-
|
|
12
|
-
It is written in four parts, in this order, because the order is the
|
|
13
|
-
honesty of the paper. First, what Quo allows, which is more than we use.
|
|
14
|
-
Second, the choices we make inside that, each one named as a choice, with
|
|
15
|
-
what Quo would also have allowed and why we chose as we did. Third, the
|
|
16
|
-
world those choices make, home, presence, membership, envoy, route and
|
|
17
|
-
device, narrated once. Fourth, real organisations at every distance from
|
|
18
|
-
Quo, so that the reader finds their own stage and sees the next one. An
|
|
19
|
-
implementer who reads only the first part and builds something unlike the
|
|
20
|
-
rest is still building Quo.
|
|
21
|
-
|
|
22
|
-
## What Quo allows
|
|
23
|
-
|
|
24
|
-
Quo is three words. A **harbor** is the program a device runs to boot
|
|
25
|
-
wards; it owns the wire and the operating system and is nobody outside its
|
|
26
|
-
device. A **ward** is one process of its harbor, a seed, a partition and a
|
|
27
|
-
body of code, named outward by one public key derived from the seed. A
|
|
28
|
-
**being** is one ordinary object with one voice, living in a ward, with no
|
|
29
|
-
address of her own. Nothing else is Quo.
|
|
30
|
-
|
|
31
|
-
Between beings there is one kind of relation, with two ends. A **standing**
|
|
32
|
-
is a pointer a being holds to another being, through which she asks. An
|
|
33
|
-
**occupant** is a being she invited, whom her ward names when she asks.
|
|
34
|
-
Every relation is born of an **invitation** minted by one side and a
|
|
35
|
-
**knock** by the other, carries two keys, one minted by each side, and ends
|
|
36
|
-
by one side removing it. What a being answers to an occupant is decided by
|
|
37
|
-
her **gate**, which is asked for every describe and every dispatch, and it
|
|
38
|
-
is the whole of permission in Quo: there is no second list anywhere.
|
|
39
|
-
|
|
40
|
-
Two things stand at the edges. A harbor keeps the ask pointer of a ward it
|
|
41
|
-
booted, so it is that ward's **root**, and the root may invite on any being
|
|
42
|
-
of its ward and reach into any of them; that is total, and it stops at the
|
|
43
|
-
device. And a ward may hold one **public being**, who answers anyone at all
|
|
44
|
-
as `{}`, the way every stranger is at every door. What a device can do,
|
|
45
|
-
its clock, its screen, its lines to vendors, it offers by **lend**, as
|
|
46
|
-
beings in a ward of its own that another ward's being reaches by holding a
|
|
47
|
-
standing, exactly as she reaches a being on another planet.
|
|
48
|
-
|
|
49
|
-
That is the whole of it, and this is what it leaves open:
|
|
50
|
-
|
|
51
|
-
- **Quo has no person and no organisation.** A ward has an owner in the
|
|
52
|
-
sense that a root booted it, and no other sense. Who a human is, whether
|
|
53
|
-
two wards are the same party, and what a company is, are not questions
|
|
54
|
-
Quo answers.
|
|
55
|
-
- **Quo has no home.** Three boxes rooted by one party, each holding
|
|
56
|
-
standings on the other two, is Quo, and so is one box with a hundred
|
|
57
|
-
wards. Nothing says which ward, if any, is the one that matters.
|
|
58
|
-
- **Quo has no route.** It pins the two shapes a reach may take and the
|
|
59
|
-
frames they carry, because two harbors meet on those, and it says nothing
|
|
60
|
-
about where a ward lives: which hostname answers, how a harbor learns a
|
|
61
|
-
foreign pk, and whether anyone can be dialed at all are the device's. A
|
|
62
|
-
hostname, a screen and a tool list are outside the protocol entirely.
|
|
63
|
-
- **Quo has four rungs and no more.** A stranger hears the public being as
|
|
64
|
-
`{}`. An occupant hears what the gate shows that occupant. An owner
|
|
65
|
-
reaches in. A root holds the ask pointer. Guest, member, subscriber,
|
|
66
|
-
admin: every one of those is an occupant, told apart by the gate and by
|
|
67
|
-
nothing else.
|
|
68
|
-
- **Quo has no outside.** A vendor's API, a bank, a mail server, a model at
|
|
69
|
-
its client: to Quo each is either a being someone booted to speak for it,
|
|
70
|
-
or nothing.
|
|
71
|
-
|
|
72
|
-
Everything from here on is one way of filling those gaps. It is our way,
|
|
73
|
-
it is opinionated, and another implementer may fill them otherwise and
|
|
74
|
-
interoperate with us at every door, because a door judges keys and not
|
|
75
|
-
opinions.
|
|
76
|
-
|
|
77
|
-
## The choices
|
|
78
|
-
|
|
79
|
-
Six choices, each in the same shape: what Quo allows, what we choose, and
|
|
80
|
-
why. Every later sentence of this paper rests on one of them, and a reader
|
|
81
|
-
who disagrees with a choice knows exactly which sentences fall with it.
|
|
82
|
-
|
|
83
|
-
### The unit is the org
|
|
84
|
-
|
|
85
|
-
Quo allows any party to be the "you" a world is about, or no party at all.
|
|
86
|
-
|
|
87
|
-
We choose the **org**. Every "you" in this paper, in the dock and in the
|
|
88
|
-
estates is an organisation: a company, a family, a club, a service, and at
|
|
89
|
-
the smallest, one human alone, who is an org of one. An org owns wards,
|
|
90
|
-
holds standings, trusts boxes and is trusted by others. A human is never
|
|
91
|
-
modelled as something smaller than an org, and an avatar, an account or a
|
|
92
|
-
user id is never the "you"; each of those is a thing an org holds.
|
|
93
|
-
|
|
94
|
-
Why: one grammar reaches every size. What is said of a family with a box is
|
|
95
|
-
said, word for word, of a person with a phone and of a service with ten
|
|
96
|
-
thousand subscribers. The moment a person and an organisation are two
|
|
97
|
-
kinds of thing, every rule is written twice and the two drift.
|
|
98
|
-
|
|
99
|
-
### One home per org
|
|
100
|
-
|
|
101
|
-
Quo allows an org to root three boxes and call each one home, or to have
|
|
102
|
-
no place it calls home.
|
|
103
|
-
|
|
104
|
-
We choose **one home per org**, and any number of harbors under it. Home
|
|
105
|
-
is the one ward the org owns on a box it trusts, its own being is the org's
|
|
106
|
-
being, and every relation of the org meets there.
|
|
107
|
-
|
|
108
|
-
Why: the fog. Three homes each hold part of the org, and the day the org
|
|
109
|
-
wants to act as one, "when mail lands in A, tell a friend from B and write
|
|
110
|
-
it down in C", it needs one place that sees all three, and that place is a
|
|
111
|
-
fourth home standing over them, which is one home with three harbors under
|
|
112
|
-
it. Several homes is not a richer arrangement Quo permits and we forbid. It
|
|
113
|
-
is an arrangement that collapses into one home the first time the org
|
|
114
|
-
wants to think. So one home is not a cap: it is the name of the place where
|
|
115
|
-
the fog clears, and an org that has not built it yet is an org that cannot
|
|
116
|
-
yet act as one.
|
|
117
|
-
|
|
118
|
-
### Every human is an org, with or without a home
|
|
119
|
-
|
|
120
|
-
Quo allows a human to exist only as ids in other parties' wards, and never
|
|
121
|
-
as a ward of her own.
|
|
122
|
-
|
|
123
|
-
We choose to say that **every human is an org from the first moment**,
|
|
124
|
-
whether or not that org has a home yet. A human with no box is an org of
|
|
125
|
-
one whose whole existence is the standings it holds in other orgs' worlds:
|
|
126
|
-
a customer id at a shop, a member id at a club, a presence on a phone. The
|
|
127
|
-
day a box is trusted, a home is booted fresh for that org, and it joins
|
|
128
|
-
each of those memberships from there. Nothing is converted and no id
|
|
129
|
-
changes; the org gains a home and keeps everything it had.
|
|
130
|
-
|
|
131
|
-
Why: the walk. Nobody switches to Quo, and a person who has never heard of
|
|
132
|
-
it must already be in the model when they land on a website of ours. If a
|
|
133
|
-
homeless person were a different kind of thing from a person with a home,
|
|
134
|
-
getting a home would be a migration, and there is none. Homeless is a rung
|
|
135
|
-
on the org's own ladder, and the first one.
|
|
136
|
-
|
|
137
|
-
### A route says the grammar, a credential says the rung
|
|
138
|
-
|
|
139
|
-
Quo allows a device to hear bytes any way it likes, and to treat every
|
|
140
|
-
arrival as a stranger.
|
|
141
|
-
|
|
142
|
-
We choose to name **three routes** into a device, and to forbid any route to
|
|
143
|
-
fix a rung. A route is one hostname, sent by a reverse proxy to one process,
|
|
144
|
-
and it says only which grammar the bytes are in:
|
|
145
|
-
|
|
146
|
-
| route | grammar |
|
|
147
|
-
| ------ | ------------------------------------------------ |
|
|
148
|
-
| `web.` | a describe as forms and a page, for a human |
|
|
149
|
-
| `mcp.` | a describe as tools, for a model |
|
|
150
|
-
| `api.` | a describe as plain HTTP and JSON, for a program |
|
|
151
|
-
|
|
152
|
-
The rung is proven by what the caller carries, and was decided by whoever
|
|
153
|
-
minted it. No credential is the stranger, on every route, and the stranger
|
|
154
|
-
hears the public being as `{}` on every route. A credential is an
|
|
155
|
-
invitation spent once by a knock, then keys, and it names an identity in a
|
|
156
|
-
world at the rung its minter gave it: an occupant, whether guest,
|
|
157
|
-
subscriber, member or admin, told apart by the gate; or an owner, invited
|
|
158
|
-
on the ward's own door. The same credential is honoured on every route, and
|
|
159
|
-
the same identity sees the same describe whether it arrives as forms, as
|
|
160
|
-
tools or as JSON. The three routes are three renderings of one describe,
|
|
161
|
-
and a caller on one can do nothing a caller on another cannot.
|
|
162
|
-
|
|
163
|
-
Why: a person is not a route. The owner of an estate pilots it from a model,
|
|
164
|
-
presses its buttons in a tab and calls it from a script, and is the same
|
|
165
|
-
owner in all three. A route that fixed a rung would make the same human two
|
|
166
|
-
parties, one per door, which is the fog again, this time inside one box.
|
|
167
|
-
|
|
168
|
-
### A device is a harbor of the org, never a route
|
|
169
|
-
|
|
170
|
-
Quo allows a phone to be a home, a tab to be a stranger, and an app to hold
|
|
171
|
-
accounts of its own.
|
|
172
|
-
|
|
173
|
-
We choose that **a device in a hand is a harbor the org owns**, that every
|
|
174
|
-
world seen there is a presence, a ward of the org's on that device, and
|
|
175
|
-
that nothing in a hand is ever a home. A phone, a tablet, a laptop and a
|
|
176
|
-
browser tab are the same shape. The app is a browser of the org's worlds
|
|
177
|
-
with no account and no person of its own; who the org is lives at home.
|
|
178
|
-
|
|
179
|
-
Why: night and trust. A hand is reachable only while it dials, so nothing
|
|
180
|
-
runs there for the org at night, and it is lost, stolen and replaced, so no
|
|
181
|
-
one copy of the org is trusted to it. A home on a phone would be a home
|
|
182
|
-
that sleeps and may vanish, and the org would answer for the difference
|
|
183
|
-
every day. So the device is where the org is now, and home is where the
|
|
184
|
-
org is always, and the two never trade places. A device is not a fourth
|
|
185
|
-
route because it does not need one: it is Quo, ward to ward, and the human
|
|
186
|
-
touching it is an occupant of a ward that is theirs.
|
|
187
|
-
|
|
188
|
-
### A SaaS is an org that has not heard of Quo
|
|
189
|
-
|
|
190
|
-
Quo allows nothing outside its three words, so a vendor's API is not Quo
|
|
191
|
-
and cannot be spoken to.
|
|
192
|
-
|
|
193
|
-
We choose to meet every such vendor through an **envoy**: a being booted on
|
|
194
|
-
the org's side who speaks that vendor's surface, narrowed to what the org
|
|
195
|
-
exposes, one being per vendor and one relation per account. From inside the
|
|
196
|
-
org's world, Google, a bank and a booking service look exactly like orgs
|
|
197
|
-
on Quo, reached through a standing, because each is standing in for a ward
|
|
198
|
-
nobody here runs. And the mirror holds: an org on Quo is a website to every
|
|
199
|
-
human who has never heard of Quo, and a member's world to everyone who
|
|
200
|
-
has, at the same time, at the same doors.
|
|
201
|
-
|
|
202
|
-
Why: Quo bends the SaaS world and cannot wait for it to disappear. An org
|
|
203
|
-
must adopt Quo while every vendor it depends on stays as it is, and must
|
|
204
|
-
serve every customer who never adopts it. Both directions are envoys and
|
|
205
|
-
routes, and neither needs the other side to move.
|
|
206
|
-
|
|
207
|
-
## The world those choices make
|
|
208
|
-
|
|
209
|
-
### Three questions, three words
|
|
210
|
-
|
|
211
|
-
Each word of Quo answers one question for an org, and nothing else answers
|
|
212
|
-
it.
|
|
213
|
-
|
|
214
|
-
| word | the question | what it settles |
|
|
215
|
-
| ------ | ------------ | ------------------------------------------- |
|
|
216
|
-
| harbor | whose box | trust: who holds the root, who can reach in |
|
|
217
|
-
| ward | whose world | ownership: one seed, one owner, moves whole |
|
|
218
|
-
| being | whose voice | a role inside a world |
|
|
219
|
-
|
|
220
|
-
A harbor is a device and belongs to the org that holds it. A ward is the
|
|
221
|
-
unit that is owned and the unit that moves: it goes to another box whole,
|
|
222
|
-
and every standing it holds survives, because its pk is the same there. A
|
|
223
|
-
being is one voice inside a ward, and what she may be asked is her gate.
|
|
224
|
-
|
|
225
|
-
**Ownership decides the level, and nothing else does.** A thing is a being
|
|
226
|
-
in the ward of the org that owns it, and the default is always that. A chat
|
|
227
|
-
between two members of an org is a being in the org's ward. A chat between
|
|
228
|
-
two people with no org between them is a being in the home of whichever
|
|
229
|
-
hosts it, the other an occupant through their own home. A ward is booted
|
|
230
|
-
only where a thing must be owned by nobody among its members, so that it
|
|
231
|
-
can move whole or stand on a box none of them fully trusts; and then it is
|
|
232
|
-
an org, however small, with an org's home beside it. How rich a being's
|
|
233
|
-
occupant logic is never promotes her. Only ownership does, and promotion is
|
|
234
|
-
not a migration: a being's cells do not cross into another ward, so
|
|
235
|
-
becoming a ward is a new ward booted, the same class placed in it, and the
|
|
236
|
-
members invited again.
|
|
237
|
-
|
|
238
|
-
Every ward on any harbor is one of three kinds, and there is no fourth:
|
|
239
|
-
|
|
240
|
-
```
|
|
241
|
-
a home an org's world, one owner, moves whole
|
|
242
|
-
a presence a world's foothold on a device in someone's hand
|
|
243
|
-
the box's own what this harbor lends, one per harbor, never moves
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
**A harbor boots one ward of its own.** It keeps that ward's ask pointer,
|
|
247
|
-
so it is its root, and everything the box can offer lives there as beings:
|
|
248
|
-
its location, its notifications, its timer, its way of ringing a phone, its
|
|
249
|
-
line to a store, its account at a vendor. A being of any other ward reaches
|
|
250
|
-
one by `lend`, and what she gets is a standing, counted and rotated and
|
|
251
|
-
removable, like every other relation she holds. That ward never moves. Its
|
|
252
|
-
beings are the box's, they die with the box, and a home that moves to
|
|
253
|
-
another box is lent that box's instead. What the org wants asked by others,
|
|
254
|
-
a front desk, a clock with its schedules, is a being with a door in the
|
|
255
|
-
org's home like any other being of theirs.
|
|
256
|
-
|
|
257
|
-
### An org is three things
|
|
258
|
-
|
|
259
|
-
One org on Quo is three kinds of thing, each on a harbor of different
|
|
260
|
-
trust, each with a different job. For a human alone the three are the
|
|
261
|
-
same three.
|
|
262
|
-
|
|
263
|
-
- **Home** is the one ward the org owns on a harbor it trusts. Its own
|
|
264
|
-
being is the org's being: for a company, its org being; for a human, her
|
|
265
|
-
user being. Inside it live the org's envoys, its avatars and its rules.
|
|
266
|
-
Home runs day and night and is the only thing of the org's that must
|
|
267
|
-
never be lost. A home may stand on a box the org does not run, a
|
|
268
|
-
family's or a host's, and the day the org has a box of its own the home
|
|
269
|
-
moves there whole, and nobody who holds a standing at it is told.
|
|
270
|
-
- **Presence** is a ward the org owns on a harbor in a hand: a phone, a
|
|
271
|
-
desk, a browser tab. It is where the org is now: the screen someone
|
|
272
|
-
touches and what that box lends, GPS, camera, a keychain, each a standing
|
|
273
|
-
the org's being there holds at a being of the box's own ward. It holds
|
|
274
|
-
one standing at home, home holds one back to wake it, and it sees exactly
|
|
275
|
-
what home's gate shows that device. A lost phone is one standing removed
|
|
276
|
-
at home, and nothing of the org is lost.
|
|
277
|
-
- **Membership** is an id in a ward another org owns: an employee id at an
|
|
278
|
-
employer's being, a member id at a party's, a customer id at a shop's.
|
|
279
|
-
Nothing of the org lives there but the id and the key. Home holds a
|
|
280
|
-
standing at it, and it holds one back to push. The other org ends it by
|
|
281
|
-
removing one standing, and home loses that and nothing else.
|
|
282
|
-
|
|
283
|
-
A membership is never a ward of the org's, because a ward it does not own
|
|
284
|
-
is not its. A presence is never home, because its seed was minted where
|
|
285
|
-
the org happened to be. Home is one, presences are as many as the org's
|
|
286
|
-
devices, and memberships are as many as the orgs that know it.
|
|
287
|
-
|
|
288
|
-
Read from the other side, the same three words hold. An organisation's
|
|
289
|
-
home is its ward. Its members are ids at its beings, however many. Ten
|
|
290
|
-
thousand subscribers of a service are ten thousand memberships in the
|
|
291
|
-
service's ward, not ten thousand homes: their homes are elsewhere, or do
|
|
292
|
-
not exist yet, and each subscriber is an org of one either way. A ward is a
|
|
293
|
-
process, and that is the only way ten thousand fit.
|
|
294
|
-
|
|
295
|
-
**A home changes hands, and the change is one act.** A child's home is a
|
|
296
|
-
ward the parent's org owns until the child does; a friend's, one the family
|
|
297
|
-
runs until he has a box. Before that day the host's presences hold the
|
|
298
|
-
door and the child's do not. The day itself is the root minting the child's
|
|
299
|
-
own being the owner standing on that ward, `home`, and stepping back, which
|
|
300
|
-
is what setup does for everyone at boot and may do later. Nothing moves,
|
|
301
|
-
nobody is told, and from then on the door is the child's.
|
|
302
|
-
|
|
303
|
-
**Trust is the root, and it is total.** Whoever holds a box's root can
|
|
304
|
-
read every home on it, partitions and keys, and can reach into any being
|
|
305
|
-
there. A household's privacy toward each other is its trust in whoever
|
|
306
|
-
runs the box, not cryptography, and a home that wants more than that moves
|
|
307
|
-
to a box of its own. That is the whole meaning of "a harbor it trusts",
|
|
308
|
-
and it is read before a home is booted on somebody else's droplet.
|
|
309
|
-
|
|
310
|
-
### The hub is home
|
|
311
|
-
|
|
312
|
-
Every device, every model, every account and every membership of the org is
|
|
313
|
-
either an occupant of its home or a standing its home holds, and most are
|
|
314
|
-
both. The gate of the org's being is its whole permission model: what its
|
|
315
|
-
phone may ask, what its model may ask, what an employer may push. There is
|
|
316
|
-
no second list.
|
|
317
|
-
|
|
318
|
-
A rule, "when Calendly books, add it to Google", is home answering one
|
|
319
|
-
standing by asking another. There is no trigger vocabulary and no product
|
|
320
|
-
between the two: one being holds both standings and a method joins them.
|
|
321
|
-
Rules run where the hub is, so rules need a home, and that is what a home
|
|
322
|
-
gives an org that a presence cannot: something happens for it at night.
|
|
323
|
-
|
|
324
|
-
### Everything outside is one relation
|
|
325
|
-
|
|
326
|
-
Everything outside a world relates to it the same way: a standing in, a
|
|
327
|
-
standing back, or both, placed by a knock on an invitation. Two questions
|
|
328
|
-
decide the shape, and nothing else does.
|
|
329
|
-
|
|
330
|
-
**Does it speak Quo?** If it does, a standing goes straight at its door. An
|
|
331
|
-
employer's harbor, a party's, the org's own phone: each has a ward with a
|
|
332
|
-
door, and the org knocks there. Nobody stands in for it.
|
|
333
|
-
|
|
334
|
-
If it does not, an envoy stands in its place. A Google account, a Calendly
|
|
335
|
-
account, a model at its vendor's client, a shop with an old checkout: each
|
|
336
|
-
is a ward nobody here runs, on a harbor nobody here owns, that speaks no
|
|
337
|
-
Quo. So a being is booted in the box's own ward who speaks that vendor's
|
|
338
|
-
surface, narrowed to what is exposed. One being per vendor and one relation
|
|
339
|
-
per account: the credentials are in her cells, the occupant's notes say
|
|
340
|
-
which account a caller is, and a caller never names either. What home holds
|
|
341
|
-
is the standing, so a home that moves box carries no credential and is
|
|
342
|
-
placed again where it lands.
|
|
343
|
-
|
|
344
|
-
**Does it call in?** If it does, it holds a standing back. A booking
|
|
345
|
-
arrives, a payment settles, a mail lands: the outside thing's bytes reach
|
|
346
|
-
the box, since the box owns the wire, and they reach the envoy's own body,
|
|
347
|
-
because she is the being who claimed that path or opened that line at her
|
|
348
|
-
birth. She checks the signature, keeps the delivery id so a retry lands
|
|
349
|
-
once, and asks the right occupant on the right standing. Nothing arrives at
|
|
350
|
-
a door that nobody invited, and whoever is woken cannot tell a webhook from
|
|
351
|
-
a clock, and must not. If it does not call in, the relation is one way, and
|
|
352
|
-
an envoy on a phone is one way by construction, because nothing calls in
|
|
353
|
-
to a phone.
|
|
354
|
-
|
|
355
|
-
### Three routes, one describe
|
|
356
|
-
|
|
357
|
-
An org's box hears the world on three routes, and a route is a hostname the
|
|
358
|
-
reverse proxy sends to one process. `web.` speaks a being's describe as
|
|
359
|
-
forms and a page, for a human at a screen. `mcp.` speaks it as tools, for a
|
|
360
|
-
model at its client. `api.` speaks it as plain HTTP and JSON, for a
|
|
361
|
-
program, a script or a tab on another origin. A fourth voice, the `nervur`
|
|
362
|
-
command on the device itself, speaks it as lines, and reaches the daemon's
|
|
363
|
-
socket rather than a hostname.
|
|
364
|
-
|
|
365
|
-
Every route hears the same four rungs, and hears them the same way:
|
|
366
|
-
|
|
367
|
-
- **A stranger** carries nothing and hears the public being as `{}`, on
|
|
368
|
-
every route alike: as the front desk's first hello, as a public board or
|
|
369
|
-
a catalogue in JSON, as the public being's asks listed as tools. A world
|
|
370
|
-
with no public being answers a stranger silence, on every route alike.
|
|
371
|
-
- **An occupant** carries a credential: an invitation spent once, then
|
|
372
|
-
keys held by an avatar in the org's world. What the occupant hears is the
|
|
373
|
-
gate's answer for that identity, and it is the same answer on every
|
|
374
|
-
route. Guest, subscriber, member and admin are all occupants, and the
|
|
375
|
-
gate is what tells them apart.
|
|
376
|
-
- **An owner** is an occupant of the ward's own door, invited there by
|
|
377
|
-
the root, and reaches into any being of it. The owner creates and
|
|
378
|
-
places, and never does the work: the work goes through an avatar under a
|
|
379
|
-
gate, so every arrival is named and judged.
|
|
380
|
-
- **The root** holds the ask pointer, on the device and nowhere else, and
|
|
381
|
-
is no occupant of anything.
|
|
382
|
-
|
|
383
|
-
A model, a human and a program that hold the same credential are one
|
|
384
|
-
identity, and the org sees one occupant whichever route it came in on. That
|
|
385
|
-
is what makes an estate pilotable from a model, a browser and a script in
|
|
386
|
-
the same day by the same hand, with one gate deciding for all three. A
|
|
387
|
-
model is not a special kind of caller: it is a presence that acts, holding
|
|
388
|
-
one standing, seeing what the gate shows it, and what it does arrives home
|
|
389
|
-
named and counted, exactly as a tap on a phone would.
|
|
390
|
-
|
|
391
|
-
### The device and the app
|
|
392
|
-
|
|
393
|
-
A Quo app is a browser of worlds and nothing of the org. It has no account,
|
|
394
|
-
no login and no person of its own: every world it shows is a presence ward
|
|
395
|
-
on the device's harbor, and who the org is lives at home. So which app the
|
|
396
|
-
org uses is settled at home, by adding that app as a device of the org's,
|
|
397
|
-
and never by a link. A world's link opens whichever app the platform
|
|
398
|
-
verified for that world's hostname, and any Quo app that opens it is the
|
|
399
|
-
org's, since every one is the same browser. A world names in its claim
|
|
400
|
-
every app it allows to open its links, its own first. An adopter's own app
|
|
401
|
-
is the first app its member meets, and nothing more: from it she reaches
|
|
402
|
-
every world she is in, and from any other Quo app she reaches the same
|
|
403
|
-
worlds through home.
|
|
404
|
-
|
|
405
|
-
One OS user is one harbor. On a desk and on Android the OS has accounts,
|
|
406
|
-
and the app never sees the second person. A shared iPad is one org's
|
|
407
|
-
device, and a second org's presence on it is a ward of the second's, named
|
|
408
|
-
as such, under the first's lock. Building people into the app would be a
|
|
409
|
-
second grammar for identity beside the ward.
|
|
410
|
-
|
|
411
|
-
A tab is a device of the same shape: a harbor on a seed in the browser, a
|
|
412
|
-
presence ward per world, and the org's being there holding what the browser
|
|
413
|
-
lends. It differs from the phone only in how long its seed lives.
|
|
414
|
-
|
|
415
|
-
### The root boots and steps back
|
|
416
|
-
|
|
417
|
-
A harbor's root is the box's, held by the device's own rule, and it is
|
|
418
|
-
touched once per home: it boots the home ward and mints the org's own
|
|
419
|
-
being an owner standing on it. From then on the owner of that home is the
|
|
420
|
-
org. Placing an envoy, inviting a new device, joining a membership: each is
|
|
421
|
-
an ask on home, shown by the gate to the org's presences and to its model,
|
|
422
|
-
and the box is never logged into for it. The root's shell is for the day
|
|
423
|
-
the root itself must act, and no other.
|
|
424
|
-
|
|
425
|
-
### A class knows nobody
|
|
426
|
-
|
|
427
|
-
Every being is an instance of a class, and the class is written by someone
|
|
428
|
-
who has never met the org. An author ships a package with a Calendly
|
|
429
|
-
class; an estate's class file re-exports it; the harbor loads it by name;
|
|
430
|
-
the root boots `calendly/alice` with the token the box holds under that
|
|
431
|
-
name. The author sees no human, no token and no partition.
|
|
432
|
-
|
|
433
|
-
Nor does the author know the level. The same class is a being in an org's
|
|
434
|
-
ward today and the being of a ward of its own tomorrow, placed there by a
|
|
435
|
-
root's two owner asks and rewritten for none of it: its members are its
|
|
436
|
-
occupants, its gate reads them, its cells are its record, and which ward
|
|
437
|
-
boots it is never in it. A class is written to work at any level, and an
|
|
438
|
-
estate decides the level. That is what keeps a class from an author who
|
|
439
|
-
knows nobody usable by an estate that knows exactly who.
|
|
440
|
-
|
|
441
|
-
The dock provides the classes every world needs and nobody writes twice:
|
|
442
|
-
the user being, the avatar with its screen side and its model side, the
|
|
443
|
-
bell, the clock, the front desk, the faculties a box lends, and the account
|
|
444
|
-
base an author extends with only the vendor's part. An estate holds class
|
|
445
|
-
bodies and placement, and reaches every general piece through the dock.
|
|
446
|
-
`papers/quo-dock.md` is that catalogue.
|
|
447
|
-
|
|
448
|
-
### The picture
|
|
449
|
-
|
|
450
|
-
```
|
|
451
|
-
a box the org trusts a hand their box
|
|
452
|
-
ward alice (home) ward alice (presence) ward acme
|
|
453
|
-
alice, her user being her being there employee being
|
|
454
|
-
avatar "claude" <- her model ward acme (presence) id "alice" at its door
|
|
455
|
-
rules her being there
|
|
456
|
-
ward bob (home) the box's own ward
|
|
457
|
-
ward the-family (the estate's home) screen, GPS, keychain,
|
|
458
|
-
the front, the clock and its schedules notifications
|
|
459
|
-
the box's own ward
|
|
460
|
-
timer, push (web, apns, fcm),
|
|
461
|
-
calendly, google
|
|
462
|
-
|
|
463
|
-
standings, each placed by a knock on an invitation:
|
|
464
|
-
presence -> home, home -> presence her devices
|
|
465
|
-
home -> acme's being, acme's being -> home her memberships
|
|
466
|
-
home -> calendly, notes: alice an account, one way
|
|
467
|
-
home -> google, notes: alice an account that calls in
|
|
468
|
-
any being -> a faculty of its own box by lend, and never off the box
|
|
469
|
-
|
|
470
|
-
routes into the box the org trusts, one grammar each, any rung on each:
|
|
471
|
-
web. forms and a page mcp. tools api. HTTP and JSON
|
|
472
|
-
```
|
|
473
|
-
|
|
474
|
-
## Orgs at every distance from Quo
|
|
475
|
-
|
|
476
|
-
Four organisations, each real in shape, each at one stage. Every stage is a
|
|
477
|
-
state the model already holds, and no org moves from one to the next by a
|
|
478
|
-
migration. Nobody switches to Quo.
|
|
479
|
-
|
|
480
|
-
### Never heard of it: a bakery
|
|
481
|
-
|
|
482
|
-
The bakery takes bookings on Calendly, payments on Stripe and mail on
|
|
483
|
-
Google, and will never run a harbor. To an org on Quo the bakery is three
|
|
484
|
-
envoys: one being per vendor in the box's own ward, each holding the
|
|
485
|
-
bakery's account in her cells, each reached by a standing from the org's
|
|
486
|
-
home. When a booking lands, Calendly's bytes reach the envoy's own body,
|
|
487
|
-
she checks the signature, keeps the delivery id, and asks home on the
|
|
488
|
-
standing home gave her; home's rule adds it to Google by asking the second
|
|
489
|
-
envoy. The bakery is fully in the model and has done nothing. The day it
|
|
490
|
-
runs a harbor, the org's standing moves from the envoy to the bakery's own
|
|
491
|
-
door, and the rule does not change.
|
|
492
|
-
|
|
493
|
-
### Scouting: a person with the app, and a company with a tab
|
|
494
|
-
|
|
495
|
-
A person downloads the app and opens three links, a shop's, a club's and a
|
|
496
|
-
friend's. The phone is a harbor; each link boots a presence ward on it,
|
|
497
|
-
with the org's being there and one standing at the world it came from. The
|
|
498
|
-
person is an org of one with three memberships and no home. She sees all
|
|
499
|
-
her worlds in one place, because the app is a browser of worlds, and
|
|
500
|
-
nothing runs for her at night. The three orgs each know her as an id bound
|
|
501
|
-
to that phone's presence and nothing more.
|
|
502
|
-
|
|
503
|
-
A company's operations lead opens a supplier's world in a tab. The tab
|
|
504
|
-
boots a harbor on a seed in the browser, a presence ward for that world,
|
|
505
|
-
and the lead's being there. That tab is the company's first presence, in a
|
|
506
|
-
rented room: the supplier's ward knows the company by an id bound to that
|
|
507
|
-
tab's pk, and the company has no home. When the lead opens the same link on
|
|
508
|
-
her phone, the tab's ward moves in by seed and partition, rebinding the
|
|
509
|
-
same pk, and the supplier is told nothing.
|
|
510
|
-
|
|
511
|
-
### Migrating from SaaS: a filings service
|
|
512
|
-
|
|
513
|
-
A filings service has subscribers, an old checkout and a new harbor. Its
|
|
514
|
-
home is its org ward on a droplet; its subscribers are ids at its beings,
|
|
515
|
-
ten thousand memberships in one process. A subscriber who has
|
|
516
|
-
never heard of Quo arrives on the web route as a stranger, meets the front
|
|
517
|
-
desk, and the checkout she pays at is still the old one, because the
|
|
518
|
-
service's envoy to its payment vendor stands in for it. From the moment she
|
|
519
|
-
pays she is an org of one whose whole existence is a membership in
|
|
520
|
-
a filings service's world, reached from a tab or from the app.
|
|
521
|
-
|
|
522
|
-
A second subscriber already has a home on a family box. Her home holds a
|
|
523
|
-
standing at a filings service's being and it holds one back to push, and she
|
|
524
|
-
reaches the service from her phone through home as the carrier, or
|
|
525
|
-
directly on a presence. The service cannot tell the two subscribers apart
|
|
526
|
-
by route, and does not try: each is an occupant, and the gate says what each
|
|
527
|
-
may ask. The service's own owner pilots it from a model on the mcp route,
|
|
528
|
-
presses its buttons in a tab on the web route, and runs its reports from a
|
|
529
|
-
script on the api route, and is one owner on all three. The old checkout
|
|
530
|
-
stands until the payment vendor speaks Quo or the service replaces it, and
|
|
531
|
-
neither day changes a subscriber's id.
|
|
532
|
-
|
|
533
|
-
### Fully on Quo: a family estate
|
|
534
|
-
|
|
535
|
-
The family runs a droplet that never sleeps, an edge box at the house and
|
|
536
|
-
a Mac on a desk. The three are one estate because each holds standings on
|
|
537
|
-
the others, minted there and taken here, and not because they share a key;
|
|
538
|
-
each has its own root and each root stops at its device. The estate's home
|
|
539
|
-
is the family's org ward on the droplet, with the front desk, the clock and
|
|
540
|
-
its schedules. Each member's home is a ward on the same droplet, owned by
|
|
541
|
-
that member, trusted to the box the family runs. A child's home is owned
|
|
542
|
-
by a parent until the day the root mints the child the owner standing and
|
|
543
|
-
steps back. The Mac and every phone hold presences, one per world, and the
|
|
544
|
-
edge holds what the house can do as faculties of its own ward.
|
|
545
|
-
|
|
546
|
-
A member's model is an avatar in her home, holding one standing, seeing
|
|
547
|
-
what her gate shows it. Her employer is a membership, her bank an envoy,
|
|
548
|
-
her friend's world a standing at his home on his own box. When she moves
|
|
549
|
-
out and buys a box of her own, her home moves there whole, seed and
|
|
550
|
-
partition, and every standing she holds and every one held at her
|
|
551
|
-
survives, because her pk is the same there. The family is told nothing and
|
|
552
|
-
needs to be told nothing.
|
|
553
|
-
|
|
554
|
-
## Vocabulary
|
|
555
|
-
|
|
556
|
-
Org, home, presence, membership, hub, rule, envoy and route are in
|
|
557
|
-
`papers/GLOSSARY.md`, with every other word above the spec.
|
|
558
|
-
|
|
559
|
-
## Where the tree stands
|
|
560
|
-
|
|
561
|
-
This paper decides what the estates and the dock are held to, and one
|
|
562
|
-
piece of the dock is not yet in its words.
|
|
563
|
-
|
|
564
|
-
- The dock holds no org base beside the user being, and no account base
|
|
565
|
-
class. The first arrives when a service bought by an organisation is
|
|
566
|
-
read against a household, which is the pair of users that shows what an
|
|
567
|
-
org actually shares with a home. The second arrives with the second
|
|
568
|
-
vendor to need one. `papers/quo-dock.md` names the same gap from its
|
|
569
|
-
side.
|