From 46b58f0278b242050f3e222b3d80038e1c1b2c42 Mon Sep 17 00:00:00 2001 From: claude Date: Wed, 5 Aug 2026 20:26:22 +0400 Subject: [PATCH] CLAUDE.md names the owner instead of saying "he" (V-550) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The third person here leaked into answers addressed to him, where it reads as talking about the person reading the reply. Six lines now say "the owner". "you" is not available in this file: CLAUDE.md addresses the agent, so "you" there means the agent. One "him" stays, in the persona block. That line states that Maven must never say "он"/"его" about the owner, which is a fact about required Russian output rather than a reference. --- CLAUDE.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 93d86db..715e58f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -43,7 +43,7 @@ are the work. Both halves are wired as of 2026-08-03. Routing and replies prefer the workstation silently through `modelSeam`; nudge and reminder phrasing prefer it silently inside the phraser. A world question goes through `LLMPhraser.PhraseWorld` and names the gap when the card is not -free — `worldGap` in `cmd/mavend/worldmodel.go`, which he hears instead of an invented +free — `worldGap` in `cmd/mavend/worldmodel.go`, which the owner hears instead of an invented answer. A box with no `workstation` block behaves exactly as it did before the seam: naming a gap requires a gap. The offload table in `docs/offload.md` says which caller is which. @@ -90,7 +90,7 @@ protocol; the config in `deploy/mavend.json` (with `${VAR}` env expansion from g **Seven of the nine run on homesrv. `mavwaked` and `mavenclient` do not, and that is the decision, not an oversight** (Vikunja #463, `docs/plans/17-where-the-voice-loop-runs.md`). homesrv has a microphone — it is a laptop — but it is in the wrong room, so a wake-word -daemon there listens to nobody. They belong on a client machine where he is standing. +daemon there listens to nobody. They belong on a client machine where the owner is standing. `ipc.Dial` already takes `tcp://host:port?token=...` through the netaddr seam, so nothing needs building to allow it, but no such machine exists yet. **The consequence: the wake word and the VAD gate are covered by unit tests and by nothing else, and no amount of @@ -281,7 +281,7 @@ Seeds are scoring data. Editing one moves a recogniser and must be re-measured a Not a nag, not autonomous. Maven's persona is **feminine** — Russian self-reference must use feminine forms — `рада`, not `рад`; `поняла`, not `понял`. The owner is male and is addressed informally: "ты", singular, never "вы"/"ваш" and never "он"/"его" -(she talks TO him, not about him). Pet names ("милый", "дорогой") are forbidden; his name +(she talks TO the owner, not about the owner). Pet names ("милый", "дорогой") are forbidden; the name ("Ками") is not. The eval enforces this: `CheckAddress`, `CheckFeminine` and `CheckCringe` in `internal/phraser/eval/checks.go`, scored by `make eval-phrasing`. @@ -291,7 +291,7 @@ world questions, so she needs to read external sources. What replaces it: - **No telemetry, no cloud model, no third-party account.** That part never changes. Nothing about Maven is reported to anyone, and inference stays on the box. -- **His data first, then the world.** Every source that reads his facts, notes, calendar, +- **The owner's data first, then the world.** Every source that reads the owner's facts, notes, calendar, tasks or house runs before anything outside, and the personal boundary sits between them. Reading beats recalling for a small model. - **In the world, live search leads and the ZIMs are the fallback** (owner's call, @@ -299,7 +299,7 @@ world questions, so she needs to read external sources. What replaces it: homesrv answer when the search is empty, unreachable, or the line is down. **Verified with the line down on 2026-08-05** (V-508, `docs/evals/2026-08-05-kiwix-offline-fallback.md`): a stopped SearXNG costs nothing, - the ZIM answers in the same turn budget. A blackholed host cost 8 seconds he waited + the ZIM answers in the same turn budget. A blackholed host cost 8 seconds the owner waited through. So the connect phase alone is capped at `dialTimeout` (1.5s), while a slow instance that did connect keeps the full 8. **A Russian question reads `wikipedia_ru_all_maxi_2026-02` verbatim** through `kiwix.book_ru`. The RU→EN rewriter @@ -318,8 +318,8 @@ world questions, so she needs to read external sources. What replaces it: capabilities. The code default is still off. `deploy/mavend.json` now ships a `search` block (owner's call, 2026-08-02), so it is on for this box and deleting the block turns it off again. -- **His notes and facts are never search input.** Looking up why the sky is blue and sending - his stored personal notes to an upstream engine are different acts. Only the utterance goes +- **The owner's notes and facts are never search input.** Looking up why the sky is blue and + sending the owner's stored personal notes to an upstream engine are different acts. Only the utterance goes out, never the persona block, history, or matched notes. ## Web UI conventions