Record the answers to plan 3's public API questions #52

Merged
lilleman merged 1 commits from plan3-api-answers into main 2026-09-30 17:10:13 +02:00
2 changed files with 4 additions and 7 deletions
+2 -1
View File
@@ -261,7 +261,8 @@ overturned recorded decisions without naming them. todo.md carries the reordered
and the store is per session. The spent set expires by age. and the store is per session. The spent set expires by age.
8. **`retained.ts` goes to `codec/`**; `options.ts` joins AGENTS.md's type-only ways back up. 8. **`retained.ts` goes to `codec/`**; `options.ts` joins AGENTS.md's type-only ways back up.
Public API questions, each with the review's recommendation: Public API questions, answered as the review recommends. Maintainer's call, 2026-09-30; each
lands in docs/decisions.md with the chunk that builds it:
- **Q1 (A1).** `client()` returns `{ err, client }`? Yes: the returned type changes anyway. - **Q1 (A1).** `client()` returns `{ err, client }`? Yes: the returned type changes anyway.
- **Q2 (A3).** `onSms` may return a receipt state? Yes, against the board: without it "answer, then - **Q2 (A3).** `onSms` may return a receipt state? Yes, against the board: without it "answer, then
+2 -6
View File
@@ -223,10 +223,6 @@ docs/decisions.md and the AGENTS.md map in its own PR, and deletes what it repla
file stand side by side. The architecture review of 2026-09-30 (ALIGN) set this order; its amendments file stand side by side. The architecture review of 2026-09-30 (ALIGN) set this order; its amendments
to the plan are [plan 3 §8](docs/comprehension-rewrite/plan-3.md#8-architecture-review-2026-09-30). to the plan are [plan 3 §8](docs/comprehension-rewrite/plan-3.md#8-architecture-review-2026-09-30).
- [ ] **Answer the review's public API questions Q1–Q8 before the chunk each gates.** Q4 (A6) before
`protocol/`, Q1 (A1) and Q5 before the lifecycle split, Q2 (A3), Q3 (A4) and Q6–Q8 before
answering on return. Each answer lands
as a goal or a decision, never here alone.
- [ ] **Move without changing behaviour.** `defs/` becomes `codec/`, `options.ts` becomes one defaults - [ ] **Move without changing behaviour.** `defs/` becomes `codec/`, `options.ts` becomes one defaults
table, and `result.ts` absorbs `error-from.ts`. Every file with one target moves to its folder table, and `result.ts` absorbs `error-from.ts`. Every file with one target moves to its folder
now, and the "`src/` stays flat" decision is retired in the same PR. now, and the "`src/` stays flat" decision is retired in the same PR.
@@ -236,7 +232,7 @@ to the plan are [plan 3 §8](docs/comprehension-rewrite/plan-3.md#8-architecture
on all 256 octets. on all 256 octets.
- `esm_class`, segments, receipts, message ids, time and bind; no state, so the segment - `esm_class`, segments, receipts, message ids, time and bind; no state, so the segment
reference counter goes to `SmppClient` in the lifecycle split. reference counter goes to `SmppClient` in the lifecycle split.
- The internal `gsm7` rename, with A6 if Q4 says so. - The `gsm7` rename, A6 included: `'ASCII'` becomes `'GSM7'` in every export.
- A test that fails on a spec citation without its sentence. - A test that fails on a spec citation without its sentence.
- [ ] **Build `messages/` on a `BoundedStore` that enforces its own bounds.** Reassembly refuses at its - [ ] **Build `messages/` on a `BoundedStore` that enforces its own bounds.** Reassembly refuses at its
bound instead of evicting, recorded against goals 2 and 4; the receipt merge follows Q8 and its bound instead of evicting, recorded against goals 2 and 4; the receipt merge follows Q8 and its
@@ -250,7 +246,7 @@ to the plan are [plan 3 §8](docs/comprehension-rewrite/plan-3.md#8-architecture
- `sendResp()` and `HeldMessages` are ported as they are. - `sendResp()` and `HeldMessages` are ported as they are.
- Absorbs registering a multipart send's receipt merge before its segments go out. - Absorbs registering a multipart send's receipt merge before its segments go out.
- The interop suite and goal 6's benchmarks run before it merges. - The interop suite and goal 6's benchmarks run before it merges.
- [ ] **Answer on return (A2, A4, and A3 if kept).** `handlers.ts`, `requests-in.ts` returning a `Reply`, - [ ] **Answer on return (A2, A3, A4).** `handlers.ts`, `requests-in.ts` returning a `Reply`,
`onRequest` returning one, `server/` ported, `HeldMessages` deleted. The interop suite and the `onRequest` returning one, `server/` ported, `HeldMessages` deleted. The interop suite and the
benchmarks run before it merges. benchmarks run before it merges.
- [ ] **Confirm Locality at 7 with a final scoring run.** A run reading 7.0 or above retires the - [ ] **Confirm Locality at 7 with a final scoring run.** A run reading 7.0 or above retires the