chore(linkedin-studio): release v0.7.0

Trend engine → production bridge. CHANGELOG [0.7.0] documents N5 (/linkedin:trends
command + trend-spotter pin-fix + triage), N6 (proposal + reader-side layer + F6
calibration), N7 (trend→newsletter bridge + F7 band-cap gate). Version synced:
plugin.json + README badge + CLAUDE.md header → 0.7.0.

Landed feedback: MR-F3 (trend→newsletter bridge) @ 1adb7f4.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014bE7VbkmR3cqHFEeGfzgwb
This commit is contained in:
Kjell Tore Guttormsen 2026-07-23 21:27:01 +02:00
commit 0b34218a38
4 changed files with 28 additions and 4 deletions

View file

@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.7.0] - 2026-07-23
**Trend engine → production bridge.** The discovery pass becomes a first-class command, gains a reader-side proposal + actionability layer, and is wired directly into the long-form pipeline: a trend now flows id-traceably from discovery to a scheduled edition, and a candidate with no formulable reader-grip can no longer inflate the top band.
### Added — trend discovery command (N5)
- **`/linkedin:trends`** — trend-discovery pass: delegates to `trend-spotter` (default long-form mode), persists to the trend store + a dated morning brief, triages per candidate (act/skip). Commands 29 → 30. (`a8e3cac`)
- **`trend-spotter` model-pin removed** — the agent now inherits the session model instead of being pinned to `sonnet`, so a discovery pass runs at the session's tier. (`a8e3cac`)
### Added — trend proposal + reader-side layer (N6)
- **Proposal fields on the trend record**`angle` / `targetLevel` / `rationale` / `relatedIds`, plus the reader-side `actionability` (is a reader-grip formulated?) / `verdict` (BÆRENDE/STØTTE/NYHET) and `readerQuestion` / `painPoint` / `saturation`. All additive-optional; store schema stays v4 (no migration). (`65b6033`)
- **Candidate lifecycle**`new → selected → acted | skipped`; a `select` verb + `--ids` batch triage (partial hit = exit 0, all-miss = exit 2). (`65b6033`)
- **Band-distribution calibration (MR-F6)** — the scoring SSOT now states the expected distribution (Immediate ≥8 is the exception, target ≤~3 of 20), checkable across runs against the persisted composite. (`bace49f`)
### Added — trend→newsletter bridge + actionability gate (N7)
- **Trend→newsletter bridge (MR-F3)**`/linkedin:newsletter` Step 1 accepts a trend id and pre-fills the brief (angle / target-level / key-points / source-URLs) from the stored candidate; `articles.NN.sourceTrendId` records the provenance (additive-optional, no edition-state schema bump); Step 10 auto-`act`s the source trend on scheduling so the discovery→production loop closes deterministically; Step 2 gains an external fact-package intake path (kilde-så-draft with finished research). `grep -ci trend commands/newsletter.md`: 0 → 18. (`1adb7f4`)
- **F7 band-cap gate (MR-F7)** — a candidate whose reader-grip is explicitly not formulated (`actionability.formulated=false`) is capped to at most `High` regardless of composite. Pure and deterministic; it overrides the composite→band derivation **downward only** (the real composite is preserved), wired into the capture path so the persisted priority is gated. (`1adb7f4`)
### Landed feedback
- **MR-F3** (trend→newsletter bridge) — landed @ `1adb7f4`.
## [0.6.0] - 2026-07-17
**Catch-up release.** Everything since the v0.5.3 tag ships here (28 commits, `git log --oneline v0.5.3..HEAD` is the source of truth), and the sections below also document work that shipped **inside** earlier tags but was never changelogged (see the catch-up note at the end).