oficina / memoria Public

🤖 spec: Paul's rulings of 2026-09-05

Decision 14 confirmed — search page, not a chat — including the half that
mattered, which was parking a conversational surface in §12 rather than
forbidding it. §8.4 and §1 lose the unconfirmed hedge.

Two tiers stay, and so does the measurement. The spec had asked whether the
frontier tier was a habit; the answer was two answers — two tiers make
sense AND measuring makes sense — so §8.2 is unchanged and §13's obligation
is unchanged. Recorded that way because they are separable and an "it's
fine" that quietly took the measurement with it would have been the same
mistake as putting "need not block" in his mouth last time.

DeepSeek stays for both tiers. TensorX proceeds without waiting on the DPA;
§8.3's "narrowed, not closed" is a caveat on the claim, not on the
decision, and nothing egresses before slice 2 anyway.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Paul Campbell pushed by paul@keymail.dev 3da51f39a9b33d3a5fbb2d20ea6e064446e79dd5 parent 7153039
2 files changed, +25 −14
  • QUESTIONS-FOR-PAUL.md +9 −1
  • docs/superpowers/specs/2026-09-03-memoria-design.md +16 −13
diff --git a/QUESTIONS-FOR-PAUL.md b/QUESTIONS-FOR-PAUL.md
index 82edac2..7b0027d 100644
--- a/QUESTIONS-FOR-PAUL.md
+++ b/QUESTIONS-FOR-PAUL.md
@@ -114,7 +114,15 @@ corpus, not the ~2 GB I hedged with, and there is no opt-out (§7.2).
Still does not bite until slice 2.
-## 2. Confirm: search page, not a chat (decision 14, §8.4)
+## 2. Closed — search page, not a chat (decision 14, §8.4)
+
+**Confirmed by you on 2026-09-05**, including that parking a conversational
+surface in §12 is the right disposition rather than forbidding it. Also
+settled the same day: keep DeepSeek for both tiers, keep two tiers *and*
+still measure, and proceed with TensorX rather than holding for the DPA —
+all four are now in §1, §8.2, §8.6 and §13.
+
+*The question as it stood, kept because the reasoning is the useful part:*
You asked whether we were building a chat UI or a hybrid. I answered
*hybrid, search-first* — one GET search form, one query in, one page out,
diff --git a/docs/superpowers/specs/2026-09-03-memoria-design.md b/docs/superpowers/specs/2026-09-03-memoria-design.md
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