diff --git a/packages/chord/docs/decisions.md b/packages/chord/docs/decisions.md index 2d5a97b86..494e87789 100644 --- a/packages/chord/docs/decisions.md +++ b/packages/chord/docs/decisions.md @@ -2419,6 +2419,20 @@ validation and copies the v2 kernel added around Delta. (10) the phone gets it after 1-2 days on slayer, about 10 minutes down, rollback by checkout; (11) a small shim reloads pages left open across the deploy, removed with v1. Server, workers, the terminal bundle and the web bundle switch in one deploy (v1 and v2 links do not talk); prep and cleanup steps deploy on their own. +- **Mistakes that wait are reported at once (owner, 2026-11-03: "yes"; p2 port footguns 1, 2, 9, + `/home/badlogic/p2-port/chord-footguns.md`):** requests keep waiting for providers (slice 7a), but a mistake no + longer looks like slowness. (a) `get`, `hold` and `registry` on a host that has not loaded throw at once ("call + `host.load` first"; a client host with nothing to load calls `load([])`). (b) When a load or reload publishes, a + registry with contributions and no provider is reported through `onError` at once, naming the registry and its + contributors. (c) A request waiting unbound (`not_served`, `waiting`) is reported once through `onError` after 5 s, + naming what it waits for; it keeps waiting until its `readyTimeout` as before. (d) An invalid plugin name is a + programming error: `load` and `reload` throw instead of listing it in the report's `failed`. +- **No limit on calls in progress per link; references in a method act as the caller (owner, 2026-11-03: "i guess + it's fine without, guess we document it"; p2 port footguns 7, 11):** v1's `maxCalls` per link has no counterpart and + gets none (the call window N bounds calls per origin; part limits bound sizes); documented. `ctx.get` in a method + acts as the method's caller (decision of slice 4a, unchanged): a server object acting as itself towards a worker + takes the reference with `self.get` in its own object or a server root; documented with p2's `Search.rebuildIndex` + example in the guide and the porting notes. - **A plugin's npm dependencies are bundled; external only by opt-in (owner, 2026-10-29: "explicit opt in + (a)"):** a plugin's `dependencies` are installed into its own `node_modules` (`npm install --ignore-scripts`) and bundled into each facet that imports them (host packages, its `peerDependencies`, stay external and are passed in). On Node a diff --git a/packages/chord/docs/slices.md b/packages/chord/docs/slices.md index 70c978522..b002245da 100644 --- a/packages/chord/docs/slices.md +++ b/packages/chord/docs/slices.md @@ -195,6 +195,10 @@ deleted (the slice's spec and code are the record). Moved here from `carry-over. ### After slice 11 +- **Mistakes that wait are reported at once** (decision of 2026-11-03): (a) use before `load` throws, (b) an unserved + registry with contributions reported at publication, (c) a request waiting unbound reported after 5 s, (d) an + invalid plugin name throws; tests for each; the guide documents no per-link call limit and `ctx.get` acting as the + caller (the `Search.rebuildIndex` example). - **Messages and languages in the app kit** (decision "Messages and languages in the app kit", proposal `docs/i18n/`): `defineMessages`, `t.message`/`t.render`, `MessagesOf`, the `Translations` registry with fallbacks and conflicts, the locale preference per principal (default from the device, live switch, `lang`/`dir` on