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>
36 KiB
/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 -pone-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/agentspage 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-577still definesislandStatusthis way (no content → idle; complete → ready for 10 minutes → idle;integrationStale→ stale) andSessionState.swift:35,40still 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.jsonor~/.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 andPluginInstaller.uninstallstill remove only their own records at the shipped commit (removeIfOurs,stripOurGroups/groupIsOurs); the helper is still registered throughSMAppService.daemonwith 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.programsstill recognises those seven names;TerminalSend.attemptsstill builds a delivery channel only for tmux, herdr, kitty, iTerm2 and Terminal.app and refuses Alacritty by name;TerminalJumpstill 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:
IslandDisplayManagerstill owns one island per enabled display,DisplayStorestill 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:12andLSMinimumSystemVersionstill say 14.2, andDeploymentFloorTestsstill 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/weatheron the relay (SidecarRelayAPI.swift:182-196),NetworkInfoService.swift:60-88,276,SpeedTest.swift:36,57,ChangelogModel.swift:102,BugReportClient.swift:72-94— and/privacylists 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.
- 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". - The licence/trial call sends
IOPlatformUUIDand 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/statuswith the key only (:290-295). - 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
/privacylists the same set. The inventory's scope is wider than the draft first drew it — it must covermain.swift,LicenseService.swift,Info.plist,ChangelogRelease.swift,SidecarController.swift, plusSidecarRelayAPI/WeatherService(/v1/weather),NetworkInfoService,SpeedTest,ChangelogModel,BugReportClientand Sparkle's appcast — and on the Sentry side not only that it starts butsendDefaultPiiand 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.