forked from Mike/freno-dev
Keep the draft's paste-ready answer identical to the page patch. Source issue: FRE-326. Co-Authored-By: Paperclip <noreply@paperclip.ing>
391 lines
28 KiB
Markdown
391 lines
28 KiB
Markdown
# `/faq` from the objections we already have
|
||
|
||
**Date:** 2026-10-29 · **Owner:** CMO · **Status:** draft — not approved, not published · **Source issue:** FRE-326
|
||
**Page:** `nook.freno.me/faq` · **Page source:** `freno-dev/src/routes/nook/faq.tsx` · **Site commit read:** `134f41e` (plus local `c1c498e`, remote-claim removal)
|
||
**Product commit read:** The-Nook `b5659415` (0.13.4, build 37)
|
||
|
||
Every entry below is traceable to a real question or a real report. Nothing is invented to fill a
|
||
category. No testimonial is used. No price, refund term, or umbrella/cross-promotion answer appears
|
||
here — those stay with FRE-204, the Chief of Staff and the sponsor.
|
||
|
||
---
|
||
|
||
## 1. What I could read, and what I could not
|
||
|
||
| Source | What it is | Read on | What it yielded |
|
||
|---|---|---|---|
|
||
| `nook.freno.me/faq` | The live page | 2026-10-29 | Six questions already published: privacy, notch, battery, permissions, macOS 14.2, offline. |
|
||
| FRE-326 description | This board issue | 2026-10-29 | Two purchase-blocking questions named verbatim: *"does it work with Cursor?"* and *"what happens when my agent is idle?"* |
|
||
| NOOK issue corpus | 948 issues imported from Plane, plus the 324-issue Paperclip board | 2026-10-08 → 2026-10-28 | User-observable defect reports. These are reports, not captured asks; they prove an objection is live. |
|
||
| `freno-dev/marketing/positioning.md` | Voice, approved claims, competitor ban | 2026-10-29 | The register and the "never name a competitor" rule. |
|
||
| The-Nook code | `AgentRegistry.swift`, `SessionModels.swift`, `Terminal*`, `hook/setup.go`, `PluginInstaller.swift`, `LicenseService.swift`, `main.swift` | 2026-10-29 | The technical facts each answer is allowed to use. |
|
||
| NOOK-121 | The original `/faq` creation (2026-10-08) | 2026-10-29 | Confirms the six live questions came from the strategy's named objections, not from a support corpus. Refund was deliberately dropped by Mike. |
|
||
|
||
### The gap that shapes this draft
|
||
|
||
**Support mail is not readable from this run.** There is no mailbox on the machine; the in-app
|
||
"Report a bug" form `POST`s to `freno-dev/src/routes/api/the-nook/report.ts`, which emails the
|
||
developer and stores nothing queryable. `/privacy` and the repo contain no support corpus.
|
||
|
||
**Reply threads are not collected.** `freno-dev/marketing/listening.md` is an empty table; FRE-201
|
||
(the listening job) has not produced a thread yet.
|
||
|
||
**Directory comments do not exist yet.** FRE-207 has a submission packet, not live listings; none of
|
||
the directories has a comment thread about The Nook to mine.
|
||
|
||
**Consequence:** I cannot rank by observed ask frequency, because no ask corpus exists. What follows
|
||
ranks by **purchase-blocking weight first**, then by **the number of named reports in our own issue
|
||
corpus that belong to the cluster**. The report counts are a proxy for "this objection is live", not
|
||
a count of people who asked. I have not put a percentage on anything.
|
||
|
||
---
|
||
|
||
## 2. The register — clusters, sources, frequency, and whether they block a purchase
|
||
|
||
| # | Cluster | The question in the buyer's words | Verbatim source(s), with dates | Frequency evidence | Blocks a purchase? | Disposition |
|
||
|---|---|---|---|---|---|---|
|
||
| 1 | Privacy / what leaves the Mac | "Does The Nook read my prompts or my code?" | Live `/faq`, 2026-10-29; code findings in `main.swift:272-278`, `LicenseService.swift:254`, `docs/sidecar-frames.md` | 1 live question + 3 named code findings | **Yes — the whole decision for this audience** | **Withdraw the live answer; replacement held.** See §4. |
|
||
| 2 | Agent fit / Cursor | "Does it work with Cursor — and can I approve from the notch, or only watch?" | FRE-326, 2026-10-29: *"does it work with Cursor?"*; NOOK-643 (2026-10-20), NOOK-695 (2026-10-20), NOOK-699 (2026-10-20), NOOK-707 (2026-10-21), NOOK-638 (2026-10-20) | 1 board question + 5 reports | **Yes** | **Propose E1** |
|
||
| 3 | Idle / is it actually working? | "What happens when my agent is idle?" | FRE-326, 2026-10-29: *"what happens when my agent is idle?"*; NOOK-281 (2026-10-12), NOOK-415 (2026-10-15), NOOK-417 (2026-10-15), NOOK-823 (2026-10-22), NOOK-898 (2026-10-23) | 1 board question + 5 reports | **Yes** | **Propose E2** |
|
||
| 4 | Install trust / permissions | "What permissions does it need — and what does it write into my agent's config?" | Live `/faq`, 2026-10-29; NOOK-733 (2026-10-21), NOOK-648 (2026-10-20), NOOK-685 (2026-10-20), NOOK-418 (2026-10-15), NOOK-568 (2026-10-17) | 1 live question + 5 reports | **Yes** | **Propose E3** |
|
||
| 5 | Terminal / tmux fit | "Does it work with my terminal, including tmux?" | NOOK-302 (2026-10-13), NOOK-310 (2026-10-13), NOOK-788 (2026-10-22) | 3 reports; no captured ask | **Yes for tmux-first buyers** | **Propose E4** — report-sourced, not an ask |
|
||
| 6 | Notch / display | "Do I need a Mac with a notch?" | Live `/faq`, 2026-10-29; NOOK-290 (2026-10-12), NOOK-291 (2026-10-12), NOOK-386 (2026-10-14) | 1 live question + 3 reports | Compatibility; rarely the blocker | **Keep current answer** |
|
||
| 7 | Battery / cost | "How much battery does it cost?" | Live `/faq`, 2026-10-29; NOOK-850 (2026-10-23), NOOK-851 (2026-10-23), NOOK-877 (2026-10-23) | 1 live question + 3 reports | Curious, not a hard blocker | **Rewrite E6 without a number** |
|
||
| 8 | macOS floor | "Why macOS 14.2 or later?" | Live `/faq`, 2026-10-29; NOOK-881 (2026-10-23) | 1 live question + 1 report | Compatibility; a hard no on 14.0/14.1 | **Keep current answer** |
|
||
| 9 | Offline | "Does it work offline?" | Live `/faq`, 2026-10-29; NOOK-494 (2026-10-16) | 1 live question + 1 report | Compatibility; a hard no for offline-only | **Rewrite E8 for the phone exception** |
|
||
| 10 | Trial / licence mechanics | "What am I actually buying — trial, Macs, updates?" | NOOK-682 (2026-10-20), NOOK-684 (2026-10-20), NOOK-60 (2026-10-08) | 2 reports; no captured ask | **Yes** | **Held** — no verbatim ask; do not invent one |
|
||
| 11 | Remote agents / containers | "Can I approve an agent running on a remote box or in Docker?" | FRE-323, FRE-320, FRE-315; `marketing/positioning.md` claims remote SSH | Many reports; the claim is unverified | **Yes — the launch claim** | **Held** — no answer before the demo |
|
||
| 12 | Phone / Watch | "Is there an iPhone app? Do I need one?" | NOOK-939 (2026-10-27), NOOK-294 (backlog) | 2 reports; status unverified | Curious; would be blocking if sold | **Held** — CTO status answer first |
|
||
| 13 | Refund / price | "What's your refund policy? Is $10 the real price?" | FRE-204, NOOK-121 | No readable source; contractual | **Yes** | **Out of scope** — FRE-204, CoS + sponsor |
|
||
|
||
### What changed since the last register (FRE-204)
|
||
|
||
- The live page already has six entries; this draft **keeps two** (notch, macOS 14.2), **rewrites
|
||
three** (permissions, battery, offline), **withdraws one** (privacy), and **proposes three new
|
||
ones** (E1, E2, E4). It does not re-ask the six questions as if they were new.
|
||
- The privacy answer is not merely unverified — it is **false at the current build**. It must come
|
||
down in the same edit, not wait for a nicer replacement.
|
||
- Cursor is now a supported agent row (`AgentRegistry.swift:524`), so "does it work with Cursor?"
|
||
has a factual answer today. It was an open question when the live page was written.
|
||
|
||
---
|
||
|
||
## 3. Proposed entries — page-ready
|
||
|
||
Each entry carries the six required things: **claim, audience, channel, owner, date, and what has to
|
||
be true before it ships.** The answer text is the copy to paste; the trace is the evidence a CTO can
|
||
check.
|
||
|
||
### E1 · "Does it work with my agent — and can I approve from the notch, or only watch?"
|
||
|
||
> **It depends on the agent, and Cursor is the useful example.** Cursor is watched, not gated: its
|
||
> sessions, finished turns and errors appear in the island, but when Cursor asks for permission the
|
||
> prompt stays in Cursor. That is deliberate — Cursor blocks the action when a permission hook runs
|
||
> and prints nothing, so gating it would override Cursor's own prompts. Other agents do hand the
|
||
> decision to The Nook, so a tool call waits and you tap Allow or Deny from the card. One limit:
|
||
> `cursor-agent -p` one-shot runs send no turn end, so they appear but do not get a completion card.
|
||
|
||
- **Question source:** FRE-326, 2026-10-29 (*"does it work with Cursor?"*); NOOK-643, 2026-10-20
|
||
(*"No permission hook is installed, deliberately: Cursor blocks the action when a permission hook
|
||
prints nothing…"*).
|
||
- **Claim:** agent gating is per-agent; Cursor is watch-only.
|
||
- **Audience:** the buyer whose agent is not Claude Code.
|
||
- **Channel:** `/faq`, plus the same answer in any FAQ structured data.
|
||
- **Owner:** CMO writes; CTO confirms.
|
||
- **Date:** CTO confirmation 2026-11-03; publish 2026-11-06.
|
||
- **Must be true:** at the shipped commit, Cursor still reads `.missing(.approvals)` with the same
|
||
reason, and `.available(.sessions)`, `.available(.completion)` and `.available(.errors)` as stated
|
||
(`AgentRegistry.swift:524-552`). The separate `/agents` page is incomplete for Cursor and the other
|
||
newer rows; that is a page correction, not a gate for this self-contained answer.
|
||
|
||
### E2 · "What happens when my agent is idle?"
|
||
|
||
> **Idle means the last turn is over, or the session has not produced anything yet — not that the
|
||
> process is gone.** A running process is liveness, not work: a just-opened agent window can show
|
||
> idle until you type. When an agent finishes a turn with a final message, the row stays green for
|
||
> ten minutes, then goes gray. A stale row is different: it means The Nook's integration cannot
|
||
> report for that session, and the row says so instead of pretending it is idle. Nothing is lost when
|
||
> a row goes idle — the next prompt flips it back to running. If a session that is obviously working
|
||
> says idle, that is a bug; tell us.
|
||
|
||
- **Question source:** FRE-326, 2026-10-29 (*"what happens when my agent is idle?"*); NOOK-898,
|
||
2026-10-23 (*"kimi payloads fail to decode, so every Kimi session stays idle"*); NOOK-823,
|
||
2026-10-22 (*"Codex terminal: sessions become idle or disappear prematurely"*); NOOK-417,
|
||
2026-10-15 (*"Never render plain Idle for a session whose integration is dark"*).
|
||
- **Claim:** idle is a statement about the last turn, not a guess at the process; stale is a separate
|
||
state.
|
||
- **Audience:** anyone watching a fleet and wondering whether to intervene.
|
||
- **Channel:** `/faq`.
|
||
- **Owner:** CMO writes; CTO confirms.
|
||
- **Date:** CTO confirmation 2026-11-03; publish 2026-11-06.
|
||
- **Must be true:** `SessionModels.swift:540-580` still defines `islandStatus` this way (no content →
|
||
idle; complete → ready for 10 minutes → idle; `integrationStale` → stale) and `SessionState.swift`
|
||
still retains idle rows for 5 minutes. If an open bug makes a working agent render idle at the
|
||
shipped commit, the "that is a bug" sentence stays but the bug gets a named issue.
|
||
|
||
### E3 · "What permissions does it need — and what does it write into my agent's config?"
|
||
|
||
> **The app itself runs unprivileged.** Fan control and charge limiting go through a small helper
|
||
> that macOS requires to run as root for hardware access; the app installs it on first use and you
|
||
> approve it once with your password. For each agent, it adds one entry — a hook or a plugin —
|
||
> inside that agent's own config directory. It does not write outside that directory, and it only
|
||
> touches the records it created:
|
||
> a hook entry you added yourself in the same file survives install and uninstall. Uninstall removes
|
||
> exactly what it wrote, with no leftover links or orphaned files.
|
||
|
||
- **Question source:** live `/faq`, 2026-10-29 (*"What permissions does it need?"*); NOOK-418,
|
||
2026-10-15 (a custom agent's install target is never shown to the user); NOOK-733, 2026-10-21 (a
|
||
Codex hook installed but not trusted, so it never ran); NOOK-648, 2026-10-20 and NOOK-685,
|
||
2026-10-20 (uninstall leftovers); NOOK-568, 2026-10-17 (helper re-registration tore down an
|
||
approved helper).
|
||
- **Claim:** reversible install; the helper is the only root step; uninstall is exact.
|
||
- **Audience:** the buyer who has a hand-tuned `~/.claude/settings.json` or `~/.codex/hooks.json`.
|
||
- **Channel:** `/faq`.
|
||
- **Owner:** CMO writes; CTO confirms.
|
||
- **Date:** CTO confirmation 2026-11-03; publish 2026-11-06.
|
||
- **Must be true:** `hook/setup.go`'s strip functions and `PluginInstaller.uninstall` still remove
|
||
only their own records at the shipped commit; the custom-agent target is still shown and accepted
|
||
before install (NOOK-418); the helper is still the only privileged component.
|
||
|
||
### E4 · "Does it work with my terminal, including tmux?"
|
||
|
||
> **Yes — Terminal.app, iTerm2, Warp, Ghostty, kitty, WezTerm and tmux.** A session is tied to the
|
||
> terminal that started it, so Jump lands in the right window and, in tmux, the right pane. Replies
|
||
> type back into that same pane.
|
||
|
||
- **Question source:** no captured ask. Underlying reports: NOOK-302, 2026-10-13 (*"a tmux session
|
||
shows only 'tmux', and its outer terminal comes from whoever started the tmux server"*); NOOK-310,
|
||
2026-10-13 (*"jump and send address tmux panes on the default server, ignoring the session's tmux
|
||
socket"*).
|
||
- **Claim:** seven terminal families and tmux panes included. Remote panes are not claimed here;
|
||
the remote launch story is still held.
|
||
- **Audience:** anyone whose workflow is tmux-first.
|
||
- **Channel:** `/faq`.
|
||
- **Owner:** CMO writes; CTO confirms.
|
||
- **Date:** CTO confirmation 2026-11-03; publish 2026-11-06.
|
||
- **Must be true:** `Sources/NookCore/Terminal` still resolves those seven identities and still
|
||
addresses a session's own tmux pane. This entry is **report-sourced, not ask-sourced**; if a
|
||
captured ask never arrives, it is still publishable because the reports are real, but it ranks
|
||
below E1–E3 until one does.
|
||
|
||
### E5 · "Do I need a Mac with a notch?"
|
||
|
||
> **No.** On a notched MacBook the island sits in the notch. On machines and displays without one,
|
||
> it anchors to the display your cursor is on, so a desktop setup with external monitors gets the
|
||
> same treatment. Everything inside the island — agent cards, fan control, the stats strip — works
|
||
> identically either way.
|
||
|
||
- **Question source:** live `/faq`, 2026-10-29; NOOK-290, 2026-10-12 and NOOK-291, 2026-10-12
|
||
(non-notch display geometry bugs), NOOK-386, 2026-10-14 (empty pill tucks away on a non-notch
|
||
display).
|
||
- **Claim:** a notch is optional; external displays work.
|
||
- **Audience:** Mac mini / Studio / external-monitor buyers.
|
||
- **Channel:** `/faq`.
|
||
- **Owner:** CMO keeps; CTO confirms.
|
||
- **Date:** CTO confirmation 2026-11-03; publish 2026-11-06.
|
||
- **Must be true:** the external-display path still anchors to the pointer's display and the
|
||
non-notch geometry tests still pass.
|
||
|
||
### E6 · "How much battery does it cost?"
|
||
|
||
> **It is a native app, not a background agent.** It watches the agents you already run and does not
|
||
> run them itself, so their draw is the number that matters. We do not have a published battery
|
||
> measurement for The Nook alone; when we do, it will be a measurement, not an estimate. If it costs
|
||
> more than it should on your Mac, that is a bug — tell us.
|
||
|
||
- **Question source:** live `/faq`, 2026-10-29; NOOK-850, 2026-10-23 (*"the idle app does work
|
||
nothing asked for (CPU wins from a live profile)"*), NOOK-851, 2026-10-23 (a 30 fps timeline ticks
|
||
the fan icon at idle), NOOK-877, 2026-10-23 (compact Nook still costs too much CPU at rest).
|
||
- **Claim:** native app, not a background agent; **no numeric battery claim**.
|
||
- **Audience:** the buyer checking whether this is another menu-bar battery sink.
|
||
- **Channel:** `/faq`.
|
||
- **Owner:** CMO writes; CTO measures or approves the no-number wording.
|
||
- **Date:** CTO measurement/decision 2026-11-03; publish 2026-11-06.
|
||
- **Must be true:** either a measurement exists and is quoted, or the no-number sentence ships. Do
|
||
not restore "the heaviest thing it does is a sensor read" — the profile findings above contradict
|
||
it.
|
||
|
||
### E7 · "Why macOS 14.2 or later?"
|
||
|
||
> **The audio mixer listens to each app's own sound stream, and Apple only shipped that API in macOS
|
||
> 14.2 (Sonoma).** The app links against it, so 14.0 and 14.1 cannot launch it.
|
||
|
||
- **Question source:** live `/faq`, 2026-10-29; NOOK-881, 2026-10-23 (*"A macOS 14.0/14.1 Mac cannot
|
||
launch the app at all: dyld dies on a strongly linked CATapDescription overlay symbol"*).
|
||
- **Claim:** the floor is 14.2 because of the audio tap API, not a policy choice.
|
||
- **Audience:** anyone on an older macOS.
|
||
- **Channel:** `/faq`.
|
||
- **Owner:** CMO keeps; CTO confirms.
|
||
- **Date:** CTO confirmation 2026-11-03; publish 2026-11-06.
|
||
- **Must be true:** `Package.swift:12` and `LSMinimumSystemVersion` still say 14.2, and
|
||
`DeploymentFloorTests` still refuses an older floor.
|
||
|
||
### E8 · "Does it work offline?"
|
||
|
||
> **The Mac app does.** The island, agent cards, permission cards and fan control work with no
|
||
> network; the hooks talk to the app over a local socket. The network is used for update checks,
|
||
> licence activation, crash reports and the optional trial email. The phone link is the exception:
|
||
> when you are away from your Mac, the phone reaches it through our relay, so that part needs a
|
||
> connection.
|
||
|
||
- **Question source:** live `/faq`, 2026-10-29; NOOK-494, 2026-10-16 (*"iOS: the main list gives no
|
||
sign the phone is offline from the Mac"*).
|
||
- **Claim:** the Mac app is offline-first; the phone link is not.
|
||
- **Audience:** the buyer with a disconnected or privacy-sensitive setup.
|
||
- **Channel:** `/faq`.
|
||
- **Owner:** CMO writes; CTO confirms.
|
||
- **Date:** CTO confirmation 2026-11-03; publish 2026-11-06.
|
||
- **Must be true:** the only network calls at the shipped commit are the update check, licence
|
||
activation, crash reporting, the optional trial email, and the phone relay; `/privacy` lists the
|
||
same set. This entry shares its gate with the privacy correction below.
|
||
|
||
---
|
||
|
||
## 4. The correction that is not a new entry: privacy
|
||
|
||
**Live answer, quoted from `nook.freno.me/faq` on 2026-10-29:**
|
||
|
||
> "No. The hooks and plugins that connect your agents to The Nook send session metadata only — which
|
||
> agent is running, which session, which event happened, which terminal it lives in. No prompt text
|
||
> and no code content leaves your device. Two things do leave the device, and we'd rather say so
|
||
> plainly: anonymous usage telemetry, and your email address if you choose to give it at trial start.
|
||
> That's the whole list."
|
||
|
||
**Why it cannot stay up:** it is contradicted by the current build.
|
||
|
||
1. **Sentry starts unconditionally with `sendDefaultPii = true`** (`Sources/NookApp/main.swift:272-278`).
|
||
That is crash and error reporting with personal identifiers, not "anonymous usage telemetry".
|
||
2. **The licence/trial call sends `IOPlatformUUID` and the Mac's device name** (`LicenseService.swift:254`,
|
||
`:305`), on launch, not only at trial start.
|
||
3. **With the phone link on, prompt and reply text transit `nook-relay.freno.me`, sealed end to end**
|
||
(`docs/sidecar-frames.md`). The relay can route the payload but cannot read it; the live answer
|
||
still says no prompt text leaves the device.
|
||
|
||
`/privacy` discloses the hardware UUID, device name and Stripe, but **not** Sentry and **not** the
|
||
relay. So there is no replacement sentence I can write that is both true and consistent with the
|
||
privacy page today.
|
||
|
||
**Proposed:** remove the privacy entry from `/faq` in the same edit that ships the other entries,
|
||
rather than replace it with another sentence I cannot stand behind. The replacement is held until
|
||
the Security Engineer's egress inventory and the `/privacy` update land.
|
||
|
||
- **Claim:** none until the inventory exists — deliberately.
|
||
- **Audience:** the buyer for whom this is the whole decision.
|
||
- **Channel:** `/faq` (withdrawal) and `/privacy` (replacement).
|
||
- **Owner:** CoS for the withdrawal decision; Security Engineer for the egress inventory and the
|
||
disclosure text; CTO for any build change; CMO for the replacement copy.
|
||
- **Date:** withdrawal decision 2026-10-31; inventory 2026-11-05; replacement copy 2026-11-09.
|
||
- **Must be true:** every destination in `main.swift`, `LicenseService.swift`, `Info.plist`,
|
||
`ChangelogRelease.swift` and `SidecarController.swift` is either in the answer or gone from the
|
||
build, and `/privacy` lists the same set. Until then, do not publish a privacy answer.
|
||
|
||
---
|
||
|
||
## 5. Held — clusters with no entry yet
|
||
|
||
| Cluster | Why it is held | Owner and date |
|
||
|---|---|---|
|
||
| Trial / licence mechanics ("trial, Macs, updates") | No captured ask. NOOK-682 and NOOK-684 are defect reports, not a buyer question. The answer is factual (14 days, 3 Macs, Sparkle updates), but the task says do not invent a question to fill the slot. | CMO to capture an ask; CTO confirms `LicenseService.swift:43`, `:262` by 2026-11-03. |
|
||
| Remote agents / containers | The launch claim is unverified (FRE-315, FRE-322, FRE-323, FRE-320). No FAQ answer before the demo. | CTO evidence; CMO copy the day it exists. Revisit 2026-11-12. |
|
||
| Phone / Watch | Status is unverified; the landing page and FAQ currently disagree. | CTO status answer by 2026-11-03; CMO copy after. |
|
||
| Refund / price | Contractual, and explicitly out of this issue. | FRE-204, CoS + sponsor. |
|
||
| Custom agents | No captured ask; the `/agents` page already says a custom agent can wire itself in. | No entry until asked. |
|
||
|
||
---
|
||
|
||
## 6. What the page edit would change
|
||
|
||
**File:** `freno-dev/src/routes/nook/faq.tsx` (site `master` at `134f41e`; local `c1c498e` removes
|
||
the remote claim from the landing page, not from the FAQ).
|
||
|
||
| Action | Entry |
|
||
|---|---|
|
||
| **Remove** | "Does The Nook read my prompts or my code?" — until the egress inventory and `/privacy` are true |
|
||
| **Keep, with the exact text above** | "Do I need a Mac with a notch?" |
|
||
| **Keep, with the exact text above** | "Why macOS 14.2 or later?" |
|
||
| **Rewrite** | "What permissions does it need?" → E3 (adds the config/uninstall answer) |
|
||
| **Rewrite** | "How much battery does it cost?" → E6 (no number) |
|
||
| **Rewrite** | "Does it work offline?" → E8 (phone exception) |
|
||
| **Add** | E1 (agent fit / Cursor) |
|
||
| **Add** | E2 (idle) |
|
||
| **Add** | E4 (terminal / tmux) |
|
||
|
||
Order on the page: E1, E2, E3, E4, E5, E6, E7, E8. The header, the mailto link, the accordion
|
||
behavior, and the page metadata stay unchanged.
|
||
|
||
**Not in this pass:** FAQPage JSON-LD. The page has none today; adding structured data is an SEO
|
||
change, not an objection-mining change. It should be its own reviewed edit.
|
||
|
||
**Patch artifact:** `freno-dev/marketing/drafts/faq-page.patch` (a proposal, not applied). The page
|
||
file itself is untouched until the gates below are satisfied.
|
||
|
||
---
|
||
|
||
## 7. Publish gates and sequence
|
||
|
||
| Step | Owner | Date | What settles it |
|
||
|---|---|---|---|
|
||
| 1. CTO verifies the claims and evidence pointers in E1–E8 | CTO | 2026-11-03 | A verdict per entry: verified / not verified / needs a test, with the exact sentence to change. The review issue is [FRE-327](/FRE/issues/FRE-327). |
|
||
| 2. Human approves the draft | Sponsor | 2026-11-04 | The draft moves from `marketing/drafts/` to `marketing/approved/`, or the approval card is accepted. No approval before the CTO verdict. |
|
||
| 3. Apply the page patch and commit on `freno-dev` | CMO | 2026-11-06 | The patch applies cleanly; `bun test` (or the site's suite) passes; the diff contains only the FAQ entries. |
|
||
| 4. Merge to `freno-dev/master` (the publish) | Sponsor or Chief of Staff | 2026-11-06 | A human merge; Vercel deploys. No agent pushes to master. |
|
||
| 5. Verify the live page | CMO | 2026-11-06 | `https://nook.freno.me/faq` returns 200 and shows the eight entries with no privacy answer; the text matches the approved draft. |
|
||
|
||
**If the CTO rejects an entry:** cut it from the patch and ship the rest. No entry ships unverified.
|
||
**If the sponsor does not approve:** nothing is applied; the draft stays in `drafts/`.
|
||
**If the support mailbox becomes readable:** re-sort the register by observed asks before step 1;
|
||
the top three may change, and the page order should follow the asks, not this draft's proxy ranking.
|
||
|
||
---
|
||
|
||
## Appendix A — verbatim source notes
|
||
|
||
| Date | Source | Verbatim |
|
||
|---|---|---|
|
||
| 2026-10-29 | Live `/faq` | "Does The Nook read my prompts or my code?" / "Do I need a Mac with a notch?" / "How much battery does it cost?" / "What permissions does it need?" / "Why macOS 14.2 or later?" / "Does it work offline?" |
|
||
| 2026-10-29 | FRE-326 description | "does it work with Cursor?" / "what happens when my agent is idle?" |
|
||
| 2026-10-08 | NOOK-121 | "Add /faq from real objections" — shipped the six live topics; refund dropped by Mike. |
|
||
| 2026-10-20 | NOOK-643 | "agents: Cursor via hooks.json" — "No permission hook is installed, deliberately: Cursor blocks the action when a permission hook prints nothing…" |
|
||
| 2026-10-21 | NOOK-707 | "agents: Cursor desktop chats bind to the shared extension-host pid and never end" |
|
||
| 2026-10-23 | NOOK-898 | "hook: kimi payloads fail to decode, so every Kimi session stays idle" |
|
||
| 2026-10-22 | NOOK-823 | "Codex terminal: sessions become idle or disappear prematurely" |
|
||
| 2026-10-15 | NOOK-417 | "Never render plain Idle for a session whose integration is dark" |
|
||
| 2026-10-15 | NOOK-415 | "Sessions whose integration predates the bridge credential freeze as Idle forever" |
|
||
| 2026-10-21 | NOOK-733 | "codex: a non-interactive session never runs an installed hook (0.163.0)" |
|
||
| 2026-10-20 | NOOK-648 | "opencode: uninstalling a pre-package install leaves its old nook.js link dangling" |
|
||
| 2026-10-20 | NOOK-685 | "tests: InstallerTests.clineHookFiles writes through the managed TaskComplete symlink and then expects that path to survive uninstall" |
|
||
| 2026-10-15 | NOOK-418 | "security: a custom agent's install target is never shown to, or approved by, the user" |
|
||
| 2026-10-17 | NOOK-568 | "helper: launch-time re-registration tears down an approved helper and leaves it unregistered" |
|
||
| 2026-10-13 | NOOK-302 | "terminal: a tmux session shows only 'tmux', and its outer terminal comes from whoever started the tmux server" |
|
||
| 2026-10-13 | NOOK-310 | "terminal: jump and send address tmux panes on the default server, ignoring the session's tmux socket" |
|
||
| 2026-10-22 | NOOK-788 | "pane: a remote reply inside a private tmux server resolves to nothing, and a pane id can be sent without its socket" |
|
||
| 2026-10-12 | NOOK-290 | "Compact island: weather slot clips mid-glyph on non-notch displays (no text cap)" |
|
||
| 2026-10-12 | NOOK-291 | "Compact island: non-notch pill is 36 pt wider than its slot row (padding double-counted in pillWidth)" |
|
||
| 2026-10-14 | NOOK-386 | "island: hide the empty pill under the notch (or above the top edge) and keep a narrower hover trigger" |
|
||
| 2026-10-23 | NOOK-850 | "Nook: the idle app does work nothing asked for (CPU wins from a live profile)" |
|
||
| 2026-10-23 | NOOK-851 | "island: a 30 fps timeline ticks the fan icon even when the fan is idle" |
|
||
| 2026-10-23 | NOOK-877 | "island: compact Nook still costs too much CPU at rest (round two, A/B per fix)" |
|
||
| 2026-10-23 | NOOK-881 | "A macOS 14.0/14.1 Mac cannot launch the app at all: dyld dies on a strongly linked CATapDescription overlay symbol" |
|
||
| 2026-10-16 | NOOK-494 | "iOS: the main list gives no sign the phone is offline from the Mac" |
|
||
| 2026-10-20 | NOOK-682 | "licensing: a new user can be blocked at launch instead of getting the 14-day trial" |
|
||
| 2026-10-20 | NOOK-684 | "licensing: parseISO rejects the server's fractional-second trial timestamp, so an expired server trial resets to 14 days" |
|
||
| 2026-10-08 | NOOK-60 | "Capture email at trial start" |
|
||
|
||
## Appendix B — frequency method
|
||
|
||
- **Live questions:** one per entry that quotes the live page. There are six, and they are the only
|
||
questions on the page today.
|
||
- **Board questions:** the two examples in FRE-326. They are not customer quotes; they are the
|
||
board's own words for the purchase-blocking objections this issue was created to answer.
|
||
- **Report counts:** the number of distinct NOOK issues I read whose subject or resolution directly
|
||
produced the objection, listed by identifier and date in §2 and Appendix A. I did not use a raw
|
||
keyword count: "agent" appears in 344 issues and "privacy" in 177, which says nothing about what
|
||
buyers ask. The counts are deliberately small and inspectable.
|
||
- **No ask frequency, no percentages.** The first thing a real support corpus changes is the order,
|
||
not the wording.
|
||
|
||
---
|
||
|
||
*Draft ends. Nothing here is published. The page file stays unchanged until the CTO verdict and the
|
||
human move to `approved/`.*
|