| index 8adff7e..50afbb2 100644 |
| --- a/docs/superpowers/specs/2026-09-03-memoria-design.md |
| +++ b/docs/superpowers/specs/2026-09-03-memoria-design.md |
| @@ -71,7 +71,7 @@ embedding is a plaintext cell in a costume — §3.1. |
| | 11 | **Admission is derived from the siblings, not from a members table memoria maintains.** A person may enter memoria if at least one sibling says they are a member of this team. | Draft 2's own members table, which left a person removed everywhere else still able to read memoria-owned content | after the draft-2 review, 2026-09-03 | |
| | 12 | **Name: `memoria`.** House convention is plain Spanish office nouns. A *memoria* is both a memory and, in Spanish office usage, a written record. | `archivo`; `cerebro`; `base`; anything English | Paul, 2026-09-03 | |
| | 13 | **The provider is TensorX, and memoria supports exactly one.** A team owner's choice is on or off, not which — a configurable base URL would let an owner reinstate a proxy while the answer still printed "one named provider". Chosen for EU jurisdiction and open weights, criteria decision 4 did not state, at a known cost in id-pinning and frontier quality (§8.3). | OpenRouter (a proxy: two parties see content); OpenAI direct (better id-pinning, worse jurisdiction and cost) | Paul, 2026-09-04, both halves — *"we go with exactly one for now: TensorX. If we want to swap that later we can."* Swapping the *generation* provider is a code change and a review, not a setting; swapping the *embedding* provider is that plus a full corpus re-embed unless the new host serves the same open weights (§8.3, §13) | |
| -| 14 | **memoria is a search page, not a chat.** One GET search form, `?q=`, one query in and one page out, with `/documents/{id}` as the only other passage surface. This follows from decision 5, not from decision 3 — §8.4's invariant is what decision 3 requires, and a conversational surface could satisfy it. | A chat UI with citations; a threaded follow-up. Deferred to §12, not forbidden — the invariant forbids the leak, this row chooses the shape | **Spec author, 2026-09-04, answering a question Paul asked. Paul has not confirmed it** — QUESTIONS #3 | |
| +| 14 | **memoria is a search page, not a chat.** One GET search form, `?q=`, one query in and one page out, with `/documents/{id}` as the only other passage surface. This follows from decision 5, not from decision 3 — §8.4's invariant is what decision 3 requires, and a conversational surface could satisfy it. | A chat UI with citations; a threaded follow-up. Deferred to §12, not forbidden — the invariant forbids the leak, this row chooses the shape | Spec author, 2026-09-04, answering a question Paul asked; **confirmed by Paul 2026-09-05**, parking the conversational surface in §12 rather than forbidding it | |
| |
| ### 1.1 The proposal review, and what it killed |
| |
| @@ -1386,11 +1386,12 @@ spec.** The invariant, not the latency, is what does the work. |
| one page out**, with `/documents/{id}` as the only other passage surface. |
| That follows from decision 5 — the search floor *is* the product — and not |
| from decision 3, which a conversational surface could satisfy. Recorded as |
| -decision 14. **It is the spec author's ruling, in answer to a question Paul |
| -asked on 2026-09-04, and Paul has not confirmed it** — QUESTIONS #3. A |
| -conversational surface that keeps the invariant above is not forbidden by |
| -this section; it is deferred by §12, where it can be argued on its merits |
| -rather than smuggled in as a corollary. |
| +decision 14 — the spec author's ruling, in answer to a question Paul asked |
| +on 2026-09-04 and **confirmed by him on 2026-09-05**. A conversational |
| +surface that keeps the invariant above is not forbidden by this section; it |
| +is deferred by §12, where it can be argued on its merits rather than |
| +smuggled in as a corollary. Parking it there rather than ruling it out was |
| +the half that needed confirming, and it was confirmed explicitly. |
| |
| Two things this settles for now: |
| |
| @@ -1876,13 +1877,15 @@ rows. |
| the code review and stands. It reads §8.2 right: three of five classes |
| call no model, and §8.7 sends arithmetic to Sheets, so a model sees only |
| what survives retrieval, filtering and authorization. |
| -- **Does §8.2 need two tiers at all?** The spec's own question, not Paul's. |
| - If the residual work is as light as decision 14's shape suggests, measure |
| - the cheap tier on the synthesis class *before* building the expensive |
| - one; §8.6's cost argument gets stronger, not weaker, if the answer is one |
| - tier. Note the premise is not free: §8.2 calls the single-source class |
| - extractive but synthesis spans ≥3 documents, which is the one place the |
| - work is genuinely more than extraction. |
| +- **Two tiers stay, and so does the measurement.** The spec asked whether |
| + the frontier tier was a habit. Paul ruled on 2026-09-05 that two tiers |
| + make sense *and* that measuring makes sense — two answers, not one, and |
| + both were wanted. §8.2 is unchanged; the obligation is unchanged. Measure |
| + the cheap tier on the synthesis class before slice 2 concludes it needs |
| + the expensive one. The premise was never free anyway: §8.2 calls the |
| + single-source class extractive, but synthesis spans ≥3 documents, which |
| + is the one place the work is more than extraction and the one place a |
| + second tier could earn itself. |
| - **Docs §11.2's qualification** must be recorded in the Docs repo by |
| `docs-e6`, or the two specs contradict. |
| - **A `carlos/platform` discussion** noting the app boundary is the |