Files
freno-dev/marketing/drafts/faq-from-objections.md
Paperclip Agent f20389e64e faq: keep the drafts copy of the plan in step with The-Nook
Byte-identical to The-Nook drafts/faq-from-objections.md at b86a980b. The plan now
names the rule-3 patch and FRE-334, the Chief of Staff's withdrawal ask.

Source issue: FRE-326.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-29 06:11:35 +00:00

36 KiB
Raw Blame History

/faq from the objections we already have

Date: 2026-10-29 · Owner: CMO · Status: CTO-verified 2026-10-29 (FRE-329); awaiting human approval — 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: c1c498e (branch faq/from-objections-2026-10-29, unmerged) Product commit read: The-Nook f9cbd879 — the exact revision the CTO verified against (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 POSTs 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 Rewrite E5 — the pointer-display sentence was never true
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 one (macOS 14.2), rewrites four (permissions, battery, offline, and notch — whose pointer-display sentence the CTO found was never true), 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.

CTO verdict (FRE-329, 2026-10-29)

The CTO read The-Nook f9cbd879, the site at c1c498e and the live page, and checked every entry against the code. No entry is cut. Six change text, exactly as below; E1 and E7 ship as written.

Entry Verdict What changed in this revision
E1 Agent fit / Cursor verified nothing
E2 Idle verified, one sentence tightened the row-eviction sentence
E3 Permissions / config not verified three sentences: Login Items toggle, per-event entries, ~/.nook
E4 Terminal / tmux not verified one sentence: which terminals take a typed reply
E5 Notch not verified one sentence: one island per enabled display, not the pointer's display
E6 Battery verified, one clause tightened "never runs them in the background"
E7 macOS 14.2 verified nothing
E8 Offline not verified one sentence, plus a six-row network list in its gate
§4 privacy all three findings confirmed; withdrawal is right positioning.md rule 3 comes down in the same change

The verdict adds two things to the plan, both now in §4 and §7: the false claim's source rule in marketing/positioning.md — rule 3 and its approved-claims row — must be struck in the same change as the withdrawal, or the next page restates it; and the egress inventory's scope widens to cover weather, the network panel, the speed test, the changelog, the bug report and Sparkle, plus Sentry's sendDefaultPii and trace sample rate.

The verdict's full text and its per-sentence evidence is FRE-329's faq-verdict document. Nothing in it is reproduced here as a new claim; the entry text below is the verdict's own replacement wording, except E4, where I took the verdict's first option (keep the Alacritty clause) and narrowed the jump sentence, which the verdict itself notes is open -b for three of the seven names.


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. No FAQ structured data in this pass — see §6.
  • Owner: CMO writes; CTO verified 2026-10-29.
  • Date: CTO verified 2026-10-29 (FRE-329); publish on approval, target 2026-11-05.
  • 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:523-555, which is where the CTO read it). 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 brings it back and flips it to running. The row itself leaves the island 15 minutes after the turn (5 if the turn ended without a reply), so a long-quiet session reappears on its next event instead of sitting there. 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 verified 2026-10-29.
  • Date: CTO verified 2026-10-29 (FRE-329); publish on approval, target 2026-11-05.
  • Must be true: SessionModels.swift:511,552,564-577 still defines islandStatus this way (no content → idle; complete → ready for 10 minutes → idle; integrationStale → stale) and SessionState.swift:35,40 still evicts a finished turn after 15 minutes, 5 when it ended without a reply. 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 registers it on first use and takes you to System Settings › General › Login Items & Extensions, where you switch it on once. For each agent it adds what that agent needs — a hook group per event it listens to, or one plugin link — inside the agent's own config file or directory. It keeps its own files under ~/.nook — the hook binary and one plugin copy per agent — and adds only its own entries to that agent's config. A hook entry you added yourself in the same file survives install and uninstall, and it only touches the records and switches it created. Uninstall removes exactly what it wrote — and switches off what it turned on — 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 verified 2026-10-29.
  • Date: CTO verified 2026-10-29 (FRE-329); publish on approval, target 2026-11-05.
  • Must be true: hook/setup.go's strip functions and PluginInstaller.uninstall still remove only their own records at the shipped commit (removeIfOurs, stripOurGroups/groupIsOurs); the helper is still registered through SMAppService.daemon with a Login Items toggle and no password prompt (PrivilegedHelper.swift:62-112,204-208); the custom-agent target is still shown and accepted before install (NOOK-418); the only host switch uninstall flips is Amp's own hook-enable flag (PluginInstaller.swift:379-385) — and the answer now says so.

E4 · "Does it work with my terminal, including tmux?"

Yes — it recognises Terminal.app, iTerm2, Warp, Ghostty, kitty, WezTerm and tmux. Four of those take a typed reply; the rest are watched. A session is tied to the terminal that started it. Jump lands in the right window for Terminal.app, iTerm2, kitty and any tmux pane — in tmux, the right pane; on Warp, WezTerm and Ghostty it brings the app forward instead. Replies type straight back into Terminal.app, iTerm2, kitty and any tmux pane; on Warp, WezTerm and Ghostty you answer in the app's own window, and Alacritty takes no typed reply from another app at all.

  • 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 verified 2026-10-29.
  • Date: CTO verified 2026-10-29 (FRE-329); publish on approval, target 2026-11-05.
  • Must be true: TerminalAncestry.programs still recognises those seven names; TerminalSend.attempts still builds a delivery channel only for tmux, herdr, kitty, iTerm2 and Terminal.app and refuses Alacritty by name; TerminalJump still raises the app rather than the window for Warp, WezTerm and Ghostty. 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 sits at the top centre of the display — the same pill with the same slots. You get one island on every display it is turned on for (all connected displays on first launch), each anchored to the top of its own screen; Settings › Displays trims that list, and the pointer only decides which display's floating controls are live. 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 the question and rewrites the answer; CTO verified 2026-10-29.
  • Date: CTO verified 2026-10-29 (FRE-329); publish on approval, target 2026-11-05.
  • Must be true: IslandDisplayManager still owns one island per enabled display, DisplayStore still snapshots every connected display on first launch (DisplayStore.swift:52-59), and the non-notch geometry tests still pass. Nothing tests that first-launch snapshot today — that is a test gap to file, not a gate on this answer.

E6 · "How much battery does it cost?"

It is a native app, not a background agent. It watches the agents you already run and never runs them in the background, 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 verified the no-number wording 2026-10-29.
  • Date: CTO verified the no-number wording 2026-10-29; publish on approval, target 2026-11-05.
  • 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 verified 2026-10-29.
  • Date: CTO verified 2026-10-29 (FRE-329); publish on approval, target 2026-11-05.
  • 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, plus a few things only when you use them: weather (asked for through our relay, with the location you chose), the network panel's IP-and-ISP lookup, the speed test, the changelog in Settings, and a bug report if you send one. 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 verified 2026-10-29.
  • Date: CTO verified 2026-10-29 (FRE-329); publish on approval, target 2026-11-05.
  • Must be true: the only network uses at the shipped commit are the update check, licence activation, crash reporting, the optional trial email and the phone relay, plus exactly these five user-triggered ones — /v1/weather on the relay (SidecarRelayAPI.swift:182-196), NetworkInfoService.swift:60-88,276, SpeedTest.swift:36,57, ChangelogModel.swift:102, BugReportClient.swift:72-94 — and /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). Precision from the verdict: the identifiers ride on activation, not on every launch — a licensed Mac's launch call is /status with the key only (:290-295).
  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.

The rule that produced the falsehood comes down with it. The CTO's verdict traces the live answer to freno-dev/marketing/positioning.md rule 3 (“Honest privacy scoping”) and to the matching approved-claims row, which state the defensible claim as “No prompt or code content leaves the device” with the backing “envelope carries session/event/terminal metadata only”. That backing is true of the hook→app envelope and says nothing about what leaves the device, so if rule 3 stands while the FAQ answer comes down, the next page restates the claim. Rule 3 and that row are struck in the same commit as this patch (§7 step 3; the same edit also fixes the stale “macOS 14+” row in that table, which NOOK-881 retired).

  • Claim: none until the inventory exists — deliberately.
  • Audience: the buyer for whom this is the whole decision.
  • Channel: /faq (withdrawal), /privacy (replacement), marketing/positioning.md (the rule).
  • 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 and the rule-3 strike.
  • Date: withdrawal decision 2026-10-31; inventory 2026-11-05; replacement copy 2026-11-09; rule-3 strike in the same commit as the page patch (§7 step 3).
  • Must be true: every egress in the inventory is either in the answer or gone from the build, and /privacy lists the same set. The inventory's scope is wider than the draft first drew it — it must cover main.swift, LicenseService.swift, Info.plist, ChangelogRelease.swift, SidecarController.swift, plus SidecarRelayAPI/WeatherService (/v1/weather), NetworkInfoService, SpeedTest, ChangelogModel, BugReportClient and Sparkle's appcast — and on the Sentry side not only that it starts but sendDefaultPii and the trace sample rate. 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; the branch is cut from local c1c498e, which removed 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
Rewrite (correction only) “Do I need a Mac with a notch?” → E5 (per-display island, not the pointer's display)
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, six-row network list)
Add E1 (agent fit / Cursor)
Add E2 (idle)
Add E4 (terminal / tmux)
Edit The file header comment that cites positioning.md rule 3 → “Privacy is deliberately absent until the egress inventory and /privacy make an honest answer possible.”
Edit The PageHead description, which still advertises the privacy question → the new eight-entry list

Order on the page: E1, E2, E3, E4, E5, E6, E7, E8. The mailto link, the accordion behavior and the page title 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 — and E1 no longer promises it.

Patch artifacts: freno-dev/marketing/drafts/faq-page.patch, regenerated for this revision, and freno-dev/marketing/drafts/positioning-privacy-withdrawal.patch for the rule-3 strike step 3 needs to land with it (both proposals, neither applied). The page file and positioning.md are untouched until the gates below are satisfied; faq-page.patch re-checked against freno-dev master c1c498e on 2026-10-29 and applies cleanly.


7. Publish gates and sequence

Step Owner Date What settles it
1. CTO verifies the claims and evidence pointers in E1–E8 CTO done 2026-10-29 FRE-329, verdict in its faq-verdict document: E1/E7 verified as written, E2/E6 verified after one sentence each, E3/E4/E5/E8 corrected above, no entry cut. Applied in this revision.
2. Human approves this revision Sponsor target 2026-10-31 The draft moves from marketing/drafts/ to marketing/approved/, or the confirmation card on FRE-326 is accepted. The card names the privacy withdrawal, which is part of the same page edit.
2b. Withdrawal of the false privacy answer and of positioning.md rule 3 Chief of Staff — asked in FRE-334 target 2026-10-31 A CoS decision, recorded on this issue. If the CoS declines, the seven non-privacy entries can still ship; the privacy answer does not stay up and does not get replaced.
3. Apply the page patch, strike rule 3 + its approved-claims row, commit on freno-dev CMO 2026-11-03 The patch applies cleanly; the site's own suite passes; the diff contains only the FAQ entries, the page comment/description, and the positioning.md strike. One commit, so the page and the rule move together.
4. Merge to freno-dev/master (the publish) Sponsor or Chief of Staff 2026-11-05 A human merge; Vercel deploys. No agent pushes to master.
5. Verify the live page CMO 2026-11-05 https://nook.freno.me/faq returns 200 and shows the eight entries with no privacy answer; the text matches the approved draft, sentence for sentence.

If the CTO had rejected an entry: cut it from the patch and ship the rest — it did not reject any. 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 3; the top three may change, and the page order should follow the asks, not this draft's proxy ranking. If a Must be true line stops being true before step 3 — a fix regresses, a line moves — the entry goes back to the CTO, not onto the page.


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-29 FRE-329 CTO verdict “Four entries ship as written, two ship after a wording fix… two (E3, E4) currently say something false to a buyer.” Every correction in §3 is that document's own replacement sentence.
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 sponsor approves this revision and a human merges it.