linkedin-studio/references
Kjell Tore Guttormsen 2a8459c674 feat(linkedin-studio): RE-R3d — temporal overlay (first-mover + saturation) [skip-docs]
R3 slice (b): the rest of hull #3. The morning brief now reads the temporal axis
the R3b seen-log records but the ranking ignored. Two DERIVED signals, computed at
brief time from already-persisted fields (publishedAt/capturedAt -> ageDays,
surfacedCount), never stored:

- first-mover: recent (ageDays <= --first-mover-days, default 2) AND never surfaced
  on a prior day -> ranked up, badge "first ute". Future-dated (ageDays<0) excluded.
- saturation: surfaced on >= --saturation-at (default 3) prior days -> ranked down,
  badge "mettet (Nx)". Self-surfacing (our seen-log), not market coverage.
- warming (1..at-1) keeps the R3b "sett Nx" badge but only at >=2 (contract intact);
  neutral carries no badge.

SB1 derived (no schema bump: SCHEMA_VERSION 4 / BRIEF_SCHEMA_VERSION 1 untouched).
SB2 the R3a relevance composite stays the PRIMARY sort key; the temporal rank is a
new cmp key after pillar-overlap, before effectiveDate -> re-orders only WITHIN a
(composite, overlap) tier. temporalSignal is pure (saturationAt clamped >=1).

Prior-day surfacings exclude today (via lastSurfacedAt), so a same-day re-render is
byte-identical (caught by the R3c run-daily SC7 regression; fixes a latent R3b
prior-day imprecision too). brief CLI gains --first-mover-days / --saturation-at;
schedule untouched (nightly uses defaults).

Wiring: trend-spotter.md (prose), trend-scoring-modes.md (one-line consumer note),
README (## Temporal overlay), gate Section 16m (+6 unconditional -> ASSERT floor
111->117), TRENDS_TESTS_FLOOR 192->216. Counts 29/19/27 unchanged. Zero new files.

Gate: Passed 132 / Failed 0; trends 216/216; hook suite 139/139 untouched.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011vmzxpsFpc8q19LaogAWLD
2026-06-26 12:10:42 +02:00
..
ab-testing-framework.md refactor(linkedin-studio): S31a multiplier-scrub (reference-docs) — unsourced "Nx" reach/format multipliers -> SSOT 2026-06-20 09:29:25 +02:00
algorithm-signals-reference.md fix(linkedin-studio): S29c terminology-scrub — "thought leadership" → neutral (references/) 2026-06-20 05:44:05 +02:00
analytics-tools-guide.md feat(ultraplan-local): v1.6.0 — /ultraresearch-local deep research command 2026-04-08 08:58:35 +02:00
articles-strategy-guide.md refactor(linkedin-studio): S31a multiplier-scrub (reference-docs) — unsourced "Nx" reach/format multipliers -> SSOT 2026-06-20 09:29:25 +02:00
collaborations-guide.md refactor(linkedin-studio): S31a multiplier-scrub (reference-docs) — unsourced "Nx" reach/format multipliers -> SSOT 2026-06-20 09:29:25 +02:00
content-angles.md refactor(linkedin-studio): S29e terminology-scrub — rename thought-leadership-angles.md -> content-angles.md + all pointers 2026-06-20 06:39:49 +02:00
content-framework.md feat(linkedin-studio): de-niche content framework + planner calendar — recast/rename to content-framework.md (B-S2a) [skip-docs] 2026-06-23 10:02:26 +02:00
data-path-convention.md feat(linkedin-studio): SB-S3e — retire dead content-history + read-side brain reconcile [skip-docs] 2026-06-23 22:13:45 +02:00
engagement-frameworks.md feat(linkedin-studio): de-niche rest-sweep — vary KTG-beat examples across surfaces (B-S2b) [skip-docs] 2026-06-23 10:50:28 +02:00
first-comment-strategy.md feat(linkedin-studio): de-niche rest-sweep — vary KTG-beat examples across surfaces (B-S2b) [skip-docs] 2026-06-23 10:50:28 +02:00
glossary.md feat(linkedin-studio): de-niche content framework + planner calendar — recast/rename to content-framework.md (B-S2a) [skip-docs] 2026-06-23 10:02:26 +02:00
growth-roadmaps.md fix(linkedin-studio): S29c terminology-scrub — "thought leadership" → neutral (references/) 2026-06-20 05:44:05 +02:00
linkedin-formats.md refactor(linkedin-studio): S31c descriptive-%-scrub — platform-norm percentages asserted as fact -> SSOT 2026-06-20 09:54:44 +02:00
linkedin-growth-playbook-2025-2026.md refactor(linkedin-studio): S31c descriptive-%-scrub — platform-norm percentages asserted as fact -> SSOT 2026-06-20 09:54:44 +02:00
linkedin-monetization-strategies.md fix(linkedin-studio): S29c terminology-scrub — "thought leadership" → neutral (references/) 2026-06-20 05:44:05 +02:00
linkedin-visual-style.md fix(linkedin-studio): S29c terminology-scrub — "thought leadership" → neutral (references/) 2026-06-20 05:44:05 +02:00
longform-quality-rules.md feat(linkedin): v2.2.0 — harden longform gates from 2nd production run 2026-05-28 20:50:56 +02:00
low-frequency-posting-strategy.md feat(ultraplan-local): v1.6.0 — /ultraresearch-local deep research command 2026-04-08 08:58:35 +02:00
newsletter-strategy-guide.md feat(ultraplan-local): v1.6.0 — /ultraresearch-local deep research command 2026-04-08 08:58:35 +02:00
opportunity-generation.md feat(linkedin-studio): de-niche rest-sweep — vary KTG-beat examples across surfaces (B-S2b) [skip-docs] 2026-06-23 10:50:28 +02:00
poll-strategy-guide.md feat(linkedin-studio): de-niche rest-sweep — vary KTG-beat examples across surfaces (B-S2b) [skip-docs] 2026-06-23 10:50:28 +02:00
scheduling-strategy.md fix(linkedin-studio): S29c terminology-scrub — "thought leadership" → neutral (references/) 2026-06-20 05:44:05 +02:00
trajectory-strategy-adjustments.md refactor(linkedin-studio): S31c descriptive-%-scrub — platform-norm percentages asserted as fact -> SSOT 2026-06-20 09:54:44 +02:00
trend-scoring-modes.md feat(linkedin-studio): RE-R3d — temporal overlay (first-mover + saturation) [skip-docs] 2026-06-26 12:10:42 +02:00
troubleshooting-guide.md refactor(linkedin-studio): S31c descriptive-%-scrub — platform-norm percentages asserted as fact -> SSOT 2026-06-20 09:54:44 +02:00
url-processing-templates.md feat(linkedin-studio): de-niche rest-sweep — vary KTG-beat examples across surfaces (B-S2b) [skip-docs] 2026-06-23 10:50:28 +02:00
video-strategy-guide.md refactor(linkedin-studio): S31c descriptive-%-scrub — platform-norm percentages asserted as fact -> SSOT 2026-06-20 09:54:44 +02:00