| 1 | # Meet slice 6 — the record |
| 2 | |
| 3 | Branch `slice/6-deploy`, `9225ec2..HEAD` (this commit; started on main |
| 4 | `9225ec2`, tag `v0.1.0`). Spec: `docs/superpowers/specs/2026-09-07-meet-design.md`, |
| 5 | revision 9 (§15.18 carries this slice's dispositions). Plan: |
| 6 | `docs/superpowers/plans/2026-09-14-meet-slice-6-deploy.md`. |
| 7 | |
| 8 | Slice 6 is the programme's closing slice (spec §12 item 6) and is |
| 9 | documentation only: `README.md`, `PRODUCT.md`, a Deploying section in |
| 10 | `AGENTS.md`, the *Consumed suite rulings* commit (`fa875c7`, the hash |
| 11 | suite Appendix A.6 points at) and the spec amendments that commit and |
| 12 | the review made. No file under `internal/`, `cmd/`, `native/`, |
| 13 | `callscore/` or `protocol/` changed. The ledger is |
| 14 | `.superpowers/sdd/2026-09-14-meet-slice-6-deploy/` (gitignored; this |
| 15 | file is its substance). |
| 16 | |
| 17 | --- |
| 18 | |
| 19 | ## 1. Rulings and decisions |
| 20 | |
| 21 | - **The slice was re-scoped against main as it is on 2026-09-14, not |
| 22 | as the programme imagined it on 2026-09-09.** Between slice 5 |
| 23 | (`a283c53`, 2026-09-11) and this slice, other sessions landed Home |
| 24 | sign-in (§7.1.1), the shared Estilo day theme and brand, the |
| 25 | invitation `Share` route (the 2026-09-12 amendment), and the native |
| 26 | Mac, iPhone and iPad apps. The plan's "What slice 6 was, and what it |
| 27 | is now" table is the disposition of each programme item; §12 item 6 |
| 28 | and §15.18 restate it in the spec. |
| 29 | - **The acknowledgements page is not built here.** `oficina/meet` |
| 30 | discussion 10, branch `feat-open-source-credits` (`117b6e4`, |
| 31 | `bbc126e`), carries a shared Estilo credits page with a runtime |
| 32 | dependency inventory and its freshness gate, Fable-approved and |
| 33 | verified live on the overnight canary. Building a second one would |
| 34 | be the duplication the programme forbids. |
| 35 | - **The Estilo theme pin.** The programme's condition was a tagged |
| 36 | release; `git ls-remote --tags` on `oficina/estilo` is empty on |
| 37 | 2026-09-14. The theme is nevertheless adopted on main at an indirect |
| 38 | pseudo-version (`go.mod`), brought in by the Home integration. |
| 39 | Recorded as: condition unmet, adoption done by another route, |
| 40 | nothing changed here. |
| 41 | - **No deploy from this slice.** The change is documentation, |
| 42 | checkable from this diff. As observed on 2026-09-14 from `carlos |
| 43 | channels` and `oficina/meet` discussions 11 and 14, edge |
| 44 | (`calls.oficina.works`) was being promoted by hand by Paul (`651cff2` |
| 45 | on 2026-09-12), with discussion 14's web UI work queued behind a |
| 46 | live check — state as of that observation, not asserted as current |
| 47 | here. A redeploy would drop live calls for nothing; a queued |
| 48 | promotion is never announced as live (programme §5). The domain was |
| 49 | attached before this slice. |
| 50 | - **Copy review is waived** for this round by Paul's steering on |
| 51 | `oficina/suite` discussion 5. README and PRODUCT.md prose is |
| 52 | catalogued here (§3) rather than reviewed. |
| 53 | - **Writers did not commit.** Three writers worked concurrently in one |
| 54 | worktree on disjoint files; the controller committed each set. The |
| 55 | index is the shared resource, not the files. |
| 56 | - **Every behavioural claim is verified against the code on the |
| 57 | branch and cites its source.** The whole-branch review's finding was |
| 58 | that the writers verified the documents against the code but not the |
| 59 | code's documents against the documents: four spec sentences on main |
| 60 | asserted things about "the README" that the README, once it existed, |
| 61 | did not say (§0.1/§5.6's encryption sentence, §5.5's TCP-443 cause |
| 62 | and "first paragraph", §3.2's residue). All four now hold, and the |
| 63 | fix wave swept every spec sentence naming README, AGENTS.md or |
| 64 | PRODUCT.md (twelve remaining, all true). |
| 65 | - **The two meanings of "floor".** §5.5's floor is "no relay"; §9's is |
| 66 | the scriptless floor. §12 item 6 now says which goes where (the |
| 67 | scriptless sentence in the README's first paragraph, the relay |
| 68 | paragraph carrying §5.5's sentence second); §15.18 notes the two |
| 69 | senses. |
| 70 | - **Platform facts stated from this project's own deploys**, not from |
| 71 | the platform source: `carlos canary` composed a host the console |
| 72 | refused (platform discussion 124, open); the recipe used is |
| 73 | `carlos instances create --host <name>-meet.bds.oncarlos.com |
| 74 | --channel canary/<name> --environment <name>` then `carlos deploy |
| 75 | --channel …`, with the environment bundle mandatory because a canary |
| 76 | without one serves `CALLS_ORIGIN` for the main host and refuses |
| 77 | sign-in while GETs look healthy. The release command is `carlos |
| 78 | deploy --app meet --account oficina --channel edge --version <sha> |
| 79 | --target linux-arm64 releases/meet-linux-arm64` after `make release |
| 80 | VERSION=<sha>`; the deploy wait can time out before the hand-over |
| 81 | while the instance serves the new version a minute later. |
| 82 | - **Ruling 16** stays cited as on the doctrine's |
| 83 | `worktree-worktree-token-at-rest` branch, not doctrine main (whose |
| 84 | rulings run 1 to 15 at `1ac4323`, revision 8, confirmed current by |
| 85 | `ls-remote` on 2026-09-14), as amended by the 2026-09-12 sharing |
| 86 | update for invitation tokens; agent credentials remain hash-only and |
| 87 | shown once. |
| 88 | |
| 89 | --- |
| 90 | |
| 91 | ## 2. Per-task review dispositions |
| 92 | |
| 93 | Three writing tasks (Sonnet) in parallel, then one whole-branch review |
| 94 | (Opus) and one fix wave, then Codex rounds. |
| 95 | |
| 96 | - **Task 1, README and AGENTS.md** (`93f1c2e`): 106 lines, the two |
| 97 | paragraphs first. Flagged and acted on: spec §11 still listed a |
| 98 | native client as not built (`aa9b227`). Flagged and initially left, |
| 99 | then closed by the review: §5.5's "first paragraph" cross-reference; |
| 100 | `CALLS_SMTP_PASS` as a secret. |
| 101 | - **Task 2, PRODUCT.md** (`e684b97`): impeccable product schema 1 in |
| 102 | `oficina/docs`' shape with the unattended-writing disclaimer; "What |
| 103 | is deliberately not here" carries the scriptless exception spec §9 |
| 104 | asked for. |
| 105 | - **Task 3, the consumed-rulings commit** (`fa875c7`): §0.2's 4/12 row |
| 106 | consumes the home's assertions through §7.1.1 with the allowlist as |
| 107 | membership authority; a ruling-16 row as amended; §12 item 6 |
| 108 | annotated; §15.18 added. Revision line left at 9, following what |
| 109 | §15.13 to §15.17 did. |
| 110 | - **Whole-branch review** (`e684b97`): verdict **merge with named |
| 111 | fixes**, W6-1 to W6-15, all applied in `bf3b86b` and `c22cae7` |
| 112 | (reflow), plus the handoff's spec sweep, the two-floors |
| 113 | disambiguation, §15.11's stale "until slice 3, or until a drain |
| 114 | exists" (no drain exists; every deploy drops live calls) and |
| 115 | `token_sealed` added to §2.1's `meeting_links` columns. Roughly |
| 116 | sixty behavioural claims were traced to file and line and found |
| 117 | correct; the fifteen findings were the remainder. |
| 118 | |
| 119 | **Codex round 1** (independent, static, scope `9225ec2..c22cae7`): |
| 120 | verdict **request changes** — thirteen findings, S6-1 through S6-13. |
| 121 | All applied in one commit (`.superpowers/sdd/2026-09-14-meet-slice-6-deploy/fix-wave-report.md`, |
| 122 | round-1 section): |
| 123 | |
| 124 | - **S6-1 — P2, deployment settings undocumented. Fixed:** README's Deploying section enumerates every required setting and which refuse startup outside `-env development`. |
| 125 | - **S6-2 — P2, the deploy-wait guarantee had an unstated prerequisite. Fixed:** README and AGENTS.md now state the `carlos apps build-probe` prerequisite and the `X-Carlos-Version` fallback it stands in for. |
| 126 | - **S6-3 — P2, the scriptless exception was narrower than shipped. Fixed, then completed in Codex round 2 (S6-16):** README, PRODUCT.md and spec §9 name the chat panel and the live admission controls as script-gated too, alongside browser media participation; AGENTS.md's two matching lines, left behind in round 1, were widened the same way, so §9's "the binding file and the code agree" holds again; §15.18 notes both. |
| 127 | - **S6-4 — P2, the cgo claims didn't match the Makefile. Fixed, then corrected again in Codex round 2 (S6-14):** README and PRODUCT.md say `CGO_ENABLED=0 make ci` and name `make race` and `make native-test`'s `callscore` sub-step as the two `CGO_ENABLED=1` cases that never ship; the native Mac and iPhone/iPad apps are named separately as the one place real cgo does ship (`MeetBridge`, linked by `MeetKit`), while server releases stay cgo-free. |
| 128 | - **S6-5 — P2, the SMTP fallback description was backwards. Fixed:** README now says the platform supplies `CARLOS_SMTP_FROM` too, which `CALLS_SMTP_FROM` optionally overrides. |
| 129 | - **S6-6 — P2, suite restatements remained under §0.2. Fixed, then completed in Codex round 2 (S6-15):** rows 3, 6, 9 and 15 cite section and ruling number only; the discussion-4 paragraph does too; the §5.2 paragraph, shortened but not emptied in round 1, is now the bare citation "Doctrine §5.2 is also relied on, for §2."; PRODUCT.md's actor sentence likewise; ruling 16's off-main provenance kept as before. |
| 130 | - **S6-7 — P2, PRODUCT.md cited a section that denies native clients shipped. Fixed:** spec §8.4 gained a 2026-09-14 amendment recording the shipped milestone (`v0.1.0` at `9225ec2`) and the browser-approval handoff (`86ed9f3`); PRODUCT.md's two native-client citations now point at that amendment. |
| 131 | - **S6-8 — P2, the shipped same-network sentence was missing from the README. Fixed:** the relay paragraph now quotes `join.html`'s floor sentence verbatim. |
| 132 | - **S6-9 — P2, the route inventory undercounted confirmation pairs. Fixed:** PRODUCT.md now says "five destructive confirmation pairs"; spec §9 now says "every confirm page (five)". |
| 133 | - **S6-10 — P3, Share's legacy behavior was omitted. Fixed:** README now distinguishes a legacy meeting's first Share (mints a new recoverable invitation alongside the old one) from every retrieval after. |
| 134 | - **S6-11 — P3, "60 requests a minute" obscured the permitted burst. Fixed:** README and PRODUCT.md now say "one request a second sustained, with a burst of 60". |
| 135 | - **S6-12 — P2, the canary creation command relied on undocumented app/account defaults. Fixed:** README's `instances create` now carries `--app meet --account oficina` and states the named environment bundle must already exist, created separately. |
| 136 | - **S6-13 — P3, disposition coverage and external-state attribution were incomplete. Fixed, then completed in Codex round 2 (S6-17):** README and PRODUCT.md link to spec §15.18 as the disposition of record; the platform-124, no-Estilo-tag and credits-branch-canary claims are attributed to dated records. Round 1 left the production-promotion state itself (edge's served commit, the queued work) asserted as current fact in §15.18 and this record's own §3; both now attribute it to what `carlos channels` and `oficina/meet` discussions 11 and 14 showed on 2026-09-14, keeping "this slice changes documentation only" as the one claim checkable from the repository. |
| 137 | |
| 138 | **Codex round 2** (independent, static, scope `2a6eee4`): verdict |
| 139 | **request changes** — four findings, S6-14 through S6-17, against |
| 140 | round 1's own fixes; the other twelve confirmed fixed as claimed |
| 141 | (table in the round's own report). All four applied in one commit |
| 142 | (`.superpowers/sdd/2026-09-14-meet-slice-6-deploy/fix-wave-report.md`, |
| 143 | round-2 section): |
| 144 | |
| 145 | - **S6-14 — P2, PRODUCT.md still claimed the native cgo bridge never ships. Fixed:** "three things run under `CGO_ENABLED=1`, none of them shipped" is now two — `make race` and `make native-test`'s `callscore` sub-step, both test-only — with the native Mac and iPhone/iPad apps named separately as the one place real cgo does ship (`MeetBridge`, a `native/apple/Package.swift` binary target `MeetKit` links, built by `native/scripts/build-mac.sh`), while server releases stay `CGO_ENABLED=0`. This record's own S6-4 line is corrected to match. |
| 146 | - **S6-15 — P2, the guest-grant sentence was shortened, not removed. Fixed:** "Doctrine §5.2 is also relied on, for §2: a guest grant is stored, not asked for" drops its second clause — still a paraphrase of doctrine §5.2's grant authority — leaving the bare citation "Doctrine §5.2 is also relied on, for §2." |
| 147 | - **S6-16 — P2, the widened scriptless exception left `AGENTS.md` behind. Fixed:** `AGENTS.md`'s two scriptless lines (the "Screens work with JavaScript disabled" rule and the UX-conventions sentence) now name the chat panel and admission controls alongside browser media participation, matching §9, README and PRODUCT.md; §9's own "the binding file and the code agree" is corrected to say when each half landed; §15.18 records the correction. |
| 148 | - **S6-17 — P3, production state was asserted as current rather than attributed. Fixed:** §15.18's production-promotion bullet and this record's own §1 and §3 now attribute edge's served commit and the queued web UI work to what `carlos channels` and `oficina/meet` discussions 11 and 14 showed on 2026-09-14, rather than presenting it as established from this repository; "this slice changes documentation only" stays stated as fact, since the diff itself proves it. |
| 149 | |
| 150 | **Codex round 3** (independent, static, scope `cd02a59`): verdict |
| 151 | **accept** — S6-14 to S6-17 closed, no new finding, "fit to merge as |
| 152 | documentation of the code on this branch". Three rounds in all: 13, 4, |
| 153 | 0 findings. |
| 154 | |
| 155 | --- |
| 156 | |
| 157 | ## 3. Carried items, and where they go |
| 158 | |
| 159 | - **The acknowledgements page.** Discussion 10's branch |
| 160 | `feat-open-source-credits`, not yet on main. **Destination: that |
| 161 | branch's owner**; when it merges, the README's "Where things are |
| 162 | written down" section should gain the credits page's path (one |
| 163 | line). |
| 164 | - **The Estilo theme tag.** No tagged release exists; the pseudo-version |
| 165 | pin stays until one does. **Destination: oficina/estilo.** |
| 166 | - **The production promotion of main's head.** As observed on |
| 167 | 2026-09-14 from `carlos channels` and `oficina/meet` discussions 11 |
| 168 | and 14, edge was serving `651cff2` with discussion 14's web UI work |
| 169 | queued behind it — state as of that observation, not asserted as |
| 170 | current here. Main is at `9225ec2` plus this slice, checkable from |
| 171 | this repository: `9225ec2` changed native code only, and this slice |
| 172 | changes documents only. **Destination: Paul**, who promotes by hand. |
| 173 | - **Unauthenticated flood control on `/api/v1`** (from slice 5). |
| 174 | **Destination: carlos/platform**, unchanged. |
| 175 | - **Platform discussion 124** (`carlos canary` and the one-label host). |
| 176 | Open. The README carries the recipe that works. **Destination: |
| 177 | carlos/platform.** |
| 178 | - **Spec §9's "four confirm pages" is five** (remove, takeover, |
| 179 | replace-link, end, revoke-agent). **Resolved in Codex round 1 |
| 180 | (S6-9):** §9 now says "every confirm page (five)" and PRODUCT.md |
| 181 | says "five destructive confirmation pairs". |
| 182 | - **Copy catalogue** (copy review waived): the README's and |
| 183 | PRODUCT.md's prose are the new user-facing text this slice adds; |
| 184 | neither is an app string. Nothing in `internal/calls/templates` |
| 185 | changed. |
| 186 | - **The ledger's process note.** A writer's flag should become a task, |
| 187 | not a paragraph: two of the three task reports flagged the right |
| 188 | problems (W6-3, W6-6) in their "not corrected" sections and the |
| 189 | controller took them as recorded rather than as work. |
| 190 | |
| 191 | --- |
| 192 | |
| 193 | ## 4. Deploying this slice |
| 194 | |
| 195 | Nothing to deploy. No binary, migration, template, client or |
| 196 | configuration changed. When main is next promoted, the README's |
| 197 | Deploying section is the recipe, and the `carlos deploy` wait note in |
| 198 | §1 applies. |
| 199 | |
| 200 | --- |
| 201 | |
| 202 | ## 5. The gates, and how to run them |
| 203 | |
| 204 | | Gate | Command | This slice | |
| 205 | |---|---|---| |
| 206 | | CI | `CGO_ENABLED=0 make ci` | Green on every commit of the branch; remote CI passed on `e684b97` and `c22cae7`. Markdown cannot fail it; it is run so the branch's head is known green. | |
| 207 | | Race | `make race` | Not run: no change under `internal/calls/hub` or the stream. | |
| 208 | | Browser | `make browser` (sandbox off) | Not run: no page, template or client file changed. The last run on a shipping head is slice 5's, 31 of 31 on `4f896c2`. | |
| 209 | | Native | `make native-test` | Not run: nothing under `native/`, `callscore/` or `protocol/` changed. | |
| 210 | |