eleven / ocho Public

Verify public Ocho signup and invitation messaging on the live domain

Record DNSimple team configuration, HTTPS convergence, and verified release 47a9b014. The hosted WebKit test now follows real invitation navigation for broker-created accounts.
Co-Authored-By: Codex <codex@openai.com>
Paul Campbell pushed by codex agent, operated by paul@keymail.dev 8bcb9a001e2d9afbc856c430dcbf490dd876d33c parent 47a9b01
2 files changed, +15 −6
  • docs/infinity/status.md +7 −5
  • test/infinity/live.mjs +8 −1
diff --git a/docs/infinity/status.md b/docs/infinity/status.md
index 70927dd..3ec0866 100644
--- a/docs/infinity/status.md
+++ b/docs/infinity/status.md
@@ -1,4 +1,4 @@
-# 🤖 ∞ status — 2026-09-05
+# 🤖 ∞ status — 2026-09-06
## Implemented
@@ -10,17 +10,17 @@ The latest registration change persists confirmed provisioning so readiness poll
All inherited Go and Node tests passed. New Go protocol/storage tests, Chromium/WebKit registration-proof verification, Node crypto/projection tests and three-instance Chromium/WebKit drives passed, including recovery on an empty browser context. Both Apple targets compiled with signing disabled after fixing account persistence on asynchronous setup/restore. govulncheck found no reachable vulnerabilities with Go 1.25.13.
-A hosted WebKit drive using two already-provisioned test instances passed setup, invitation/consent and bidirectional E2EE delivery without browser errors. Public signup passed the live proof check and created two distinct instance records, but timed out waiting for platform route materialization. This is not a public-launch claim.
+A hosted WebKit drive on `https://ocho.chat` passed public registration of two fresh fictional accounts, actual invitation navigation through the front door into the recipient’s saved account, consent and bidirectional E2EE delivery without browser errors (43 seconds, 2026-09-06). Earlier signup attempts stalled on platform route materialization; the current full public-domain test passed.
## Hosted state
-Account `ocho` / `bdy`; apps `infinity` and `infinity-home`; channel `canary/infinity`. As verified after the final broker deployment, the personal review endpoint `https://infinity-test.bdy.oncarlos.com` served `7daa45a0`; registration at `https://infinity-home-test.bdy.oncarlos.com` served `9ef43843`, including the provisioning-idempotency change. Earlier watches timed out before adoption; the final broker deployment completed its version watch successfully.
+Account `ocho` / `bdy`; apps `infinity` and `infinity-home`; channel `canary/infinity`. Both apps now report build `47a9b014` from their own `/api/version` handlers; registration also reports it on `https://ocho.chat`. The registration watch initially timed out despite the edge header having advanced, because the existing process was still running the previous binary. An app-scoped `carlos restart` completed convergence; no fleet restart or database change was needed.
Earlier restarts failed with `SQLITE_IOERR_SHMSIZE (4874)`. Read-only host metadata showed correct file ownership, 4 KB shared-memory files and roughly 95 MB of usable storage left on a 20 GiB root volume. Both canaries later woke successfully, with 32 KB shared-memory files, without database intervention. No database or WAL has been deleted/reset. A later capacity check reported roughly 114 MB available. Shared-volume expansion was prepared but not executed. A subsequent external cleanup freed roughly 9 GB; the baseline push then succeeded. Capacity was a suspected contributor to the earlier startup failure, not a proven errno diagnosis.
The separate platform adoption fix is `90b0878`, branch `fix/relay-blocked-live-adoption` in `carlos/platform`. It relays permission errors replacing staged live symlinks through the existing privileged adoption pass. Its regression failed before the fix and passes afterward; independent review and full forge CI passed. The branch was pushed, but no platform change has been merged or deployed.
-`ocho.chat` is attached to the registration canary. DNS is pending: apex A records at 99.81.104.219, 54.252.186.195, 16.60.78.128 and 44.210.206.26, TTL 300. Provider information has been requested. Once DNS/TLS is verified, change the registration origin from the canary to `https://ocho.chat` and rerun public signup on the domain.
+`ocho.chat` is attached to the registration canary. DNSimple context `eleven` authenticates the Eleven Messenger team (account 176940). Its zone is active with apex A records at 99.81.104.219, 54.252.186.195, 16.60.78.128 and 44.210.206.26, TTL 300. All four endpoints passed certificate-validated HTTPS checks at 13:29 UTC. The initial certificate challenge failed before cross-edge alias propagation completed; it converged without a platform change. Registration `INFINITY_ORIGIN` and personal `INFINITY_HOME_ORIGIN` now point to `https://ocho.chat`. Public signup and encrypted messaging passed on the domain.
## Explicit limits
@@ -30,4 +30,6 @@ Source work is on `infinity-v1` in the isolated `.worktrees/infinity` checkout.
## Invitation preview correction — 2026-09-06 (Codex)
-Invitation landing pages use the personal app’s `INFINITY_HOME_ORIGIN` setting (default `https://ocho.chat`). The preview must point this at `https://infinity-home-test.bdy.oncarlos.com` until production DNS works. Invitation fragments survive the front-door redirect, saved-account navigation and same-origin recovery. Browser regression follows an actual invitation through the configured front door into the recipient’s existing account.
+Invitation landing pages use the personal app’s `INFINITY_HOME_ORIGIN` setting (default `https://ocho.chat`). During DNS setup this pointed to the preview registration address; after HTTPS verification it was switched to `https://ocho.chat`. Invitation fragments survive the front-door redirect, saved-account navigation and same-origin recovery. Browser regression follows an actual invitation through the configured front door into the recipient’s existing account.
+
+Personal release `47a9b014` is verified live, including the reserved user invitation instance’s configured home origin. Registration release `47a9b014` is also verified live after an app-scoped restart. Initial concurrent binary uploads failed reading the second part; sequential HTTP/1.1 retries shipped both releases successfully. The production WebKit invitation navigation check also passed against personal release `47a9b014`.
diff --git a/test/infinity/live.mjs b/test/infinity/live.mjs
index 27ea07f..0f3e384 100644
--- a/test/infinity/live.mjs
+++ b/test/infinity/live.mjs
@@ -16,7 +16,14 @@ try{
}));
const[a,b]=pages;
await a.getByRole('button',{name:'Invite',exact:true}).click();await a.getByRole('button',{name:'Create invitation',exact:true}).click();const link=await a.getByLabel('Invitation link').inputValue();await a.getByRole('button',{name:'Close',exact:true}).click();
- await b.locator('.account-menu summary').click();await b.getByRole('button',{name:'Connect with a link',exact:true}).click();await b.getByLabel('Invitation link').fill(link);await b.getByRole('button',{name:'Connect',exact:true}).click();await b.getByRole('dialog').waitFor({state:'detached'});
+ if (fixtures) {
+ await b.locator('.account-menu summary').click();await b.getByRole('button',{name:'Connect with a link',exact:true}).click();await b.getByLabel('Invitation link').fill(link);
+ } else {
+ await b.goto(link);await b.getByRole('button',{name:'Continue',exact:true}).click();
+ await b.getByRole('button',{name:'Open your account',exact:true}).click();
+ assert.equal(await b.getByLabel('Invitation link').inputValue(),link);
+ }
+ await b.getByRole('button',{name:'Connect',exact:true}).click();await b.getByRole('dialog').waitFor({state:'detached'});
await a.getByRole('button',{name:'Accept',exact:true}).click();await a.getByRole('heading',{name:'Canary Bob',exact:true}).waitFor();
await b.locator('.thread-row').filter({hasText:'Canary Alice'}).click();await b.getByRole('textbox',{name:'Message',exact:true}).fill('The live encrypted delivery works.');await b.getByRole('button',{name:'Send message',exact:true}).click();await a.getByRole('log').getByText('The live encrypted delivery works.',{exact:true}).waitFor();
await a.getByRole('textbox',{name:'Message',exact:true}).fill('Confirmed from the other personal instance.');await a.getByRole('button',{name:'Send message',exact:true}).click();await b.getByRole('log').getByText('Confirmed from the other personal instance.',{exact:true}).waitFor();