mirror of
https://github.com/badlogic/pi-mono.git
synced 2026-11-05 23:37:25 +00:00
docs(chord): every remote type declares its placement
This commit is contained in:
parent
1b760044ec
commit
13dee75529
2 changed files with 9 additions and 3 deletions
|
|
@ -1771,6 +1771,12 @@ validation and copies the v2 kernel added around Delta.
|
|||
setups a registry without a value cannot get one before a reload, so a reader then fails at once `transient`
|
||||
(`unavailable/undeclared`) and is retried when the registry gets its first value (R18), as `self.get` of a type not
|
||||
served here fails at once (refined 2026-10-27 after the second spec review: no `readyTimeout` wait at start); once live, a later failure of the registry changes nothing (last good value).
|
||||
- **Every remote type declares its placement (owner, 2026-10-29: "yes, let's remove it"):** `placement` is required in
|
||||
`remote()` (a type error without it, and a declaration error at runtime); a remote type without placement, a leftover
|
||||
of slice 3a (remote objects over one link, before host kinds in 4a), is gone, and with it the fallback "here if served
|
||||
here, otherwise the parent" and its re-placement at the first parent link. Every remote request is placed by its
|
||||
address alone (dependency model, `packages/chord/docs/next/dependencies/`). Tests and examples get `placement: () =>
|
||||
Server()` or their own host kind.
|
||||
- **No client providers for now (owner, 2026-10-28: "yeah, no client providers for now"; reviews
|
||||
`/tmp/barrier-{astra,fable,opus,sol}.md`):** clients stay unaddressable and serve only `local` types (design §3).
|
||||
Client-side capabilities (a phone's camera, clipboard, a page's WebMCP tools) go through an owner's state, as the
|
||||
|
|
|
|||
|
|
@ -117,8 +117,8 @@ export const Catalog = remote("catalog", { placement: () => Server(), … });
|
|||
- `hostKind(name, params?)` declares a kind of addressable host; its params follow the params policy of contracts
|
||||
(section 5). `Session({ id: "S1" })` is an **address**: `{ kind, params, key }`, the key built like an identity key
|
||||
(`session|S1`); two addresses are equal when their keys are. No host-name strings appear in app code.
|
||||
- **`placement`** (owner, 2026-10-21) is a typed function of the params returning an address; `local` contracts have
|
||||
none. It is not part of the contract fingerprint; a changed rule surfaces as a refusal (below).
|
||||
- **`placement`** (owner, 2026-10-21) is a typed function of the params returning an address, required on every
|
||||
`remote` contract (owner, 2026-10-29); `local` contracts have none. It is not part of the contract fingerprint; a changed rule surfaces as a refusal (below).
|
||||
- **`params`** (owner, 2026-10-21; was `input`) select the instance among objects of its type and are part of its
|
||||
identity (section 5).
|
||||
- **The caller computes the address** and sends it in the `hold`; a host that relays routes by that address alone and
|
||||
|
|
@ -129,7 +129,7 @@ export const Catalog = remote("catalog", { placement: () => Server(), … });
|
|||
|
||||
| Case | Goes |
|
||||
| --- | --- |
|
||||
| the type is served here and its placement (computed here from the params) is this host's address, or the host has no address, or the type no placement | here |
|
||||
| the type is served here and its placement (computed here from the params) is this host's address, or the host has no address | here |
|
||||
| a reference made here (`host.get`/`hold`, `self.get`, `ctx.get`) to a served type placed on another host | on, as if not served here (next rows): worker S1 reaches `Notes { session: "S2" }` through the parent |
|
||||
| an arriving hold for a served type whose params place it on another host | broken `invalid/placement`; the address the hold names only routes it |
|
||||
| the hold names an address of a kind this host has a route for | over that route's link (the address's params checked against the kind, then `authorize`) |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue