diff --git a/marketing/drafts/positioning-privacy-withdrawal.patch b/marketing/drafts/positioning-privacy-withdrawal.patch new file mode 100644 index 0000000..855db72 --- /dev/null +++ b/marketing/drafts/positioning-privacy-withdrawal.patch @@ -0,0 +1,40 @@ +diff --git a/marketing/positioning.md b/marketing/positioning.md +index 1bc4973..26d6b04 100644 +--- a/marketing/positioning.md ++++ b/marketing/positioning.md +@@ -53,13 +53,20 @@ pages, marketing copy, comparison tables, meta descriptions, emails, FAQs, all o + Copy that says "13 agents" or "no data leaves the device" must have a test backing it. + If a claim cannot be pointed at code or a test, it does not go in copy. + +-### 3. Honest privacy scoping ++### 3. No privacy claim until the egress inventory exists (withdrawn 2026-10-29) + +-Telemetry and the trial email **do** leave the device. The defensible claim is: ++The claim that stood here — "No prompt or code content leaves the device" — is **false at HEAD** ++and must not be restated in any copy until it is verified and replaced. It was backed by an ++argument about envelope metadata, which says nothing about what leaves the machine. Three things ++at HEAD contradict it: crash reporting initialises with `sendDefaultPii = true`; the licence call ++sends the hardware UUID and the device name; the phone relay carries sealed prompt and reply ++payloads. `/privacy` names the hardware UUID and the device name and says nothing about crash ++reporting with PII or about the relay. + +-> **No prompt or code content leaves the device.** +- +-Never "no data leaves the device". ++So: write **no** privacy claim at all — not softened, not partial. "Telemetry and the trial email ++do leave the device" is true and insufficient; it is not a substitute. The replacement goes in ++only after FRE-333 lands an egress inventory and `/privacy` text that match what the app does. ++See FRE-326 (the `/faq` withdrawal) and FRE-333 (the inventory). + + ### 4. Sell what works today + +@@ -87,8 +94,7 @@ nothing posts itself. + | Permission gate answered from a card | awaitPolicyTable + bridge directive path (`hook/normalize.go`, `serialize.go`) | + | Fan / thermal / charge control | `helper/` (privileged helper, SMC, no kext) | + | One-time purchase, no subscription | $10 → $15 at 1.0; Stripe checkout | +-| macOS 14+ | 27 source files use the `@Observable` framework | +-| No prompt or code content leaves the device | envelope carries session/event/terminal metadata only (see `docs/agent-interface.md`) | ++| macOS 14.2+ | the CoreAudio overlay symbol the mixer uses only exists from 14.2 (NOOK-881) | + + ## Held claims (not publishable) +