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>
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 |