feat(linkedin-studio): RE-R3f — /linkedin:trends --headless (MR-F5) [skip-docs]

Unattended discovery: the full poll->score->capture->brief loop can
now fire with no operator present (Sunday-morning discovery), gated
behind a new Step 0.5 contract. Fails fast instead of asking when the
profile is missing, skips triage unconditionally (candidates stay
pending), and refuses --demand --headless rather than silently
degrading.

Trigger mechanism is Claude Code's own Desktop Scheduled Tasks, not a
hand-rolled cron wrapper -- verified against Claude Code's headless
docs that a cron + `claude -p` wrapper loses observability/session-
resumption/error-recovery versus the first-party mechanism. The
fallback `claude -p` recipe is documented (README) for portability,
not built as repo code. No new source/test file; no schema change;
counts unchanged (30/20/29).

This opens the research-engine's own 2026-06-24 re-evaluation gate
against v1.0.0 product maturity for slice (e) -- surfaced to the
operator explicitly rather than built around or silently deferred.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2qHoS4FrkabuD1bCg8Nr2
This commit is contained in:
Kjell Tore Guttormsen 2026-08-10 20:57:34 +02:00
commit 3290e8fb7d
4 changed files with 111 additions and 8 deletions

View file

@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added — unattended discovery, `--headless` (RE-R3f / MR-F5)
- **`/linkedin:trends --headless`** — the full poll → score → capture → brief loop, safe to fire
with no operator present, so Sunday-morning discovery can run on a schedule. Fails fast instead of
asking for pillars when the profile is missing; skips triage unconditionally (candidates stay
`pending` for the next attended session); refuses `--demand --headless` rather than silently
degrading to supply-side discovery. Recommended trigger is Claude Code's own Desktop Scheduled
Tasks; a fallback hand-rolled `claude -p` recipe is documented (`scripts/trends/README.md`), not
built as repo code. No new command, agent, or store field — a command-contract change plus docs.
- **Gate note:** this opens the research-engine's own 2026-06-24 decision that AI-capture autonomy
(slice e) sits behind a re-evaluation gate against v1.0.0 product maturity. The conflict was
surfaced to the operator explicitly and the gate was opened deliberately for the production need
(Maskinrommet feedback register, MR-F5), not silently bypassed. See `docs/research-engine/
brief-re-r3f.md`.
## [0.8.0] - 2026-07-27
**The production line, closed.** 0.7.0 built the bridge from discovery to a scheduled edition; 0.8.0 makes the whole line hold together and, for the first time, feed back into itself. A candidate now travels id-traceably from capture to a scheduled slot with **no manual re-entry anywhere in the chain** — exercised before this release with the CLI layers run for real and the command steps simulated, since plugin command and agent surfaces resolve consumer-side rather than in the development repo. A measurement now changes the next piece instead of dying in chat. A correction made once is enforced from then on. Voice is bound *before* prose rather than scrubbed after. The series remembers what it has already spent. And the engine finally knows your own normal well enough to **refuse a verdict** when the data is too thin — the answer that keeps everything above it honest.