eleven / messenger Public

docs: manual verification target is a per-developer preference — ask if unknown (#1056)

* docs: testing happens on canaries/dev env, never localhost (Paul's standing rule)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs: manual-verification target is a stored per-developer preference, asked once

Not a mandate: one developer may always want a live canary, another may
always want localhost — the system doesn't care. Sessions ask the prompter
when no preference is recorded in their CLAUDE.local.md, then save the
answer there.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs: local testing can ride the relay (lchat try) — the middle ground

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Paul Campbell 35df06c9d01d35965920e1af1f6ec7ea302aa144 parent ff11ba1
1 file changed, +22 −0
  • CLAUDE.md +22 −0
diff --git a/CLAUDE.md b/CLAUDE.md
index 6ad439e..d677a38 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -539,6 +539,28 @@ Add tests as you go. Go handler tests use `newTestServer(t)` which returns
`npm test` (web side) and EventVectorTests (native side) — they verify the
event schema stays in sync across platforms.
+🤖 **Where manual verification happens is a per-developer preference — ask
+if you don't know it** (Paul, 2026-07-16). Whether a session verifies
+features by hand against the full stack (a per-session `test-<slug>.11ch.at`
+canary or the dev environment) or against a hand-run local server is not a
+project mandate — it's each developer's stored preference. One developer may
+always want a live canary, another may always want localhost; the system
+doesn't care. Each developer records theirs in their own `CLAUDE.local.md`;
+if the prompter's preference isn't already recorded, **ask them** before
+manual testing starts, then save the answer there so no session asks twice.
+Know what the choice trades: localhost skips the router, real TLS, push, the
+home server, and every cross-service seam. **Local testing can close most of
+that gap by riding the relay** (`lchat try` — the tunnel gateway fronts the
+local server at a real `try-*.11relay.com` origin with real TLS;
+`docs/tunnel-try.md`): local code, reached the way the world reaches it —
+the accepted middle ground when a local-preference developer needs a real
+origin, or a full-stack developer needs to test unmerged code. For a
+full-stack developer, a feature touching the singleton services (home, push,
+cloud) that can't canary today is **held for the dev environment**, not
+localhost-tested in the meantime. The automated suites are unaffected either
+way (`go test`'s httptest servers, `npm test`, the hermetic E2E rigs — those
+are tests, not testing).
+
## Deploy
Deployed as a single static binary per chat. Each chat is a **fully-isolated