oficina / meet Public

Slice 1: meetings, links, sign-in; plan and review record closed

On branch slice/1-meetings-links-signin

Branch discussion for slice/1-meetings-links-signin. Plan: docs/superpowers/plans/2026-09-08-meet-slice-1-meetings-links-signin.md (f8a35ac), eight tasks from spec revision 8 §12 item 1, each with code, tests and the make ci gate. Tasks on the branch mirror it.

What the slice delivers: the five tables with sealed titles and fingerprinted outsider addresses; the meeting list with create; the link shown once; replace-link and end-meeting confirm pages; /j/{token} with its three outcomes and one 404; the pending-join cookie, pending_joins written before the mail goes out, Authorize admitting allowlist-or-pending, /continue with its three outcomes and the atomic link re-check, /welcome; the two outsider budgets; standing as the entry authority; the holding page that says the room is slice 2; make release stamping. Scriptless throughout.

Gates before merge, per suite #5's protocol: make ci green on every task; Fable review of the complete diff; the copy review with Paul for the strings collected in Task 8; actual remote CI; then merge. No canary in this slice, since nothing deploys until slice 6.

Known residue carried from the spec (§3.2): rastrillo's sign-in limiter is keyed on the edge's address; Meet bounds outsider attempts in front of it and states that member sign-in capacity cannot be reserved. A platform question about a trusted client address goes on carlos/platform with this slice.

Slice 1 implementation is complete through eight tasks (f8a35ac..82cbc1c), each with its own review; the whole-branch Fable review (claude-opus, read-only, ran go test ./... once, green) returned no Critical, five Important, ready with fixes:

  1. sameAnswer rewrote rastrillo's own ?err=address and ?err=rate outcomes, which spec §3.2 says to leave alone; ruled: follow the spec, narrow the wrapper.
  2. The "not a membership oracle" comment claimed more than §3.2 concedes (mail is sent synchronously, so timing distinguishes); ruled: soften the comment.
  3. The shared outsider budget was charged before the per-link one, so one leaked link could drain the ten-per-fifteen-minutes pool; ruled: swap the operands.
  4. force=1 (which is what keeps rastrillo off its keymail branch) had no comment; ruled: document it.
  5. Two §13 gates the plan waived (member-address exhaustion of the shared limiter; /continue with an expired pending row); ruled: the waiver was wrong, the limiter is in-process, write both.

Plus go mod tidy, a latestPending tiebreak, and a logged title-open failure. One fix wave is running now; a scoped re-review follows. Twenty deferred minors from the task reviews are triaged in the review as "can wait" except the two above.

Still gated on a human: the copy review of docs/superpowers/copy/2026-09-08-slice-1-strings.md (56 strings) with Paul, then remote CI, then merge.

Fix wave landed (92728a8) and its scoped re-review found all five findings addressed with no new breakage. make ci is green on that tree; remote CI is queued. Branch task 13 (Fable review) is Done.

Two gates remain, both outside the agent's hands: the copy review of docs/superpowers/copy/2026-09-08-slice-1-strings.md with Paul (task 14), and remote CI green followed by merge (task 15). The worktree stays in place for both.

Rulings made during execution, for Paul to overturn if wrong: Tasks 6 and 7 built as one dispatch; the persons table name via TableName(); the error page uses rastrillo's error-page partial; POST /signin passes through rastrillo's ?err=address and ?err=rate per spec §3.2 rather than rewriting them; the two §13 gates the plan had waived were written; go directive left at 1.26.

Merged. Copy review done with Paul (52 strings, two edits applied verbatim: the sign-in sent notice and the holding page placeholder), commit cae60ed; remote CI passed on that tip; main fast-forwarded to cae60ed. Every branch task is Done.

Slice 2 (holding screen and room, direct connectivity) is next, on its own branch with its own plan. Deferred minors from the reviews are listed in the branch's SDD ledger and in the final review on this thread; the two the final review promoted were fixed before merge, the rest wait for the code they sit in to be touched.