Files
freno-dev/marketing
fixture 4d6550f0d1 privacy: apply the FRE-354 verdict corrections to the /privacy replacement
FRE-354 ruled the page 'verified after corrections — do not apply as it
stands'. This applies all of them, plus the two copy decisions the verdict
delegated to the CMO (fuller iPhone paragraph; full (c) block with the
LAN/tailnet sentence and the matching section-3 clause).

- (b) no macOS username (sendDefaultPii sets the IP only), session pings
  named; still the always-on form: no release tag contains FRE-355's
  opt-in merge (6e74b261; v0.15.0 predates it), so the page stays true on
  the build users run. Contingency swap owed with the first release that
  ships FRE-355.
- (a) device-name sentence corrected (no activations UI exists); fail-open
  scoped to trial/status, activation needs a connection once.
- (c) relay qualified as the default path; relay sees IDs/names/platforms;
  direct LAN/tailnet pairing sentence added.
- (j) 'not a cloud service' instead of two absolutes FRE-322 flagged;
  tailnet path named.
- iPhone companion paragraph added (TestFlight beta is in users' hands,
  same Sentry config, push token disclosed). Push-token evidence row
  recorded for FRE-333's inventory.
- Opening, section heading ('What leaves your devices') and section 3
  ('content', not all traffic) per the verdict; Last Updated bumped.
- Draft evidence table and contingency warning rewritten per the verdict
  (the old warning named a username Sentry never sends).

Suite on this tree: 441 pass / 3 skip / 53 fail / 2 errors — failure and
error sets byte-identical to clean master d44133f (458/3/53/2; the delta
is master's remote-claims.test.ts, 17 passing tests this branch's base
predates). Local only; the push is the sponsor's (card 392a8465).
2026-11-04 14:50:41 +00:00
..

Marketing tree

One voice, one place. Every later artifact draws on positioning.md — do not invent framing per-asset.

positioning.md        # source of truth: wedge, voice, banned phrasings, approved claims
calendar.json         # scheduled pushes: date, channel, status
briefs/<channel>.md   # per-channel rules, format, limits, what "good" looks like
drafts/<id>/          # agent output: copy.md, assets/, rationale.md
pending/ approved/ posted/   # human gate by directory move
metrics/weekly.md     # funnel snapshot, generated
listening.md          # buying-intent threads + drafted replies

Hard rule

approved/ is the only thing a human ever publishes from. Nothing posts itself.

Workflow: agent drafts into drafts/<id>/ → moves to pending/ when complete → a human reviews and moves it to approved/ → the human publishes from approved/ under their own account → the artifact (or a pointer) lands in posted/.

Nothing in drafts/ or pending/ is ever publishable, by anyone, by any means.