Merge pull request 'Design 39 bus-and-switch: the lead's answers B26-B37 met in develop' (#563) from design/39-licence-answers-3 into main

This commit was merged in pull request #563.
This commit is contained in:
2026-11-11 23:07:17 +00:00
@@ -500,3 +500,18 @@ written; they are cited as "design 39 bus-and-switch B*n*".
`key` beside the §3 fields, as `binding.changed` does (B7); the vault's `licence-bindings` keeps `licence`, `key` and
`generation`, and compares the secret's key with the binding's key. One form travels; the vault never computes §10's
key form (P1, P7).
- **B26** (the form of `carried.postgres`): `{at, tables: {<table>: {read, written}}}` (P7).
- **B27** (the carry-over in the audit log): it appends one `carried` entry, the kind §7 lists (P7).
- **B28** (an `offered` row older than 90 days): counted as read, not written (P7).
- **B29** (`adoptedFrom` at the carry-over): the newest `adopted` audit row's `node`, else its `from` (P7).
- **B30** (when bind and switch say `licence.switched`): only when the consumer moves from another licence (P8).
- **B31** (an access token asked before the vault's first view of the bindings is answered): refused, saying why (P3).
- **B32** (a first view of the bindings racing an event heard just before it): a first view never removes or replaces a
binding whose generation is newer than the view's; the newer by generation stays (P3).
- **B33** (what §19's "applied" means): the home holds the token; a home with no token is fetched again at the same
generation (P3, ADR 0266).
- **B34** (a failed usage reading): no `usage` entry is appended; it is said by `readError` and `usage-unread` (P3).
- **B35** (a reading with no weekly window): its room is unknown, and it is never a target (P3).
- **B36** (both windows at the threshold): the act names the higher, the session window on a tie (P7).
- **B37** (a setting outside its bound): it keeps its default and raises `settings.<setting>.invalid`, cleared when the
setting is fixed (P3).