feat(linkedin-studio): RE-R3b — trend lifecycle (re-score on re-capture · status · seen-log) [skip-docs]
The lifecycle layer over the trend store: what happens to a trend AFTER first capture.
- re-score on re-capture (last-wins; addTrend duplicate branch, score the one mutable
field; provenance + lifecycle untouched; no false-merge via JSON compare). Reverses
R3a's first-sight D3 — that R3a test reconciled to the new behaviour.
- status new/acted/skipped (effectiveStatus/setStatus + act/skip/reset CLI verbs);
rankForBrief EXCLUDES handled trends (a work queue, not an archive).
- seen-log surfacedCount/lastSurfacedAt (markSurfaced, per-day idempotent); the brief
CLI records surfacing on the store AFTER the pure render, unless --no-mark.
- render: entry id in backticks (copy-paste for act/skip) + · sett Nx prior-day hint.
- schema v3→v4 (additive lossless); the R3a migration block reconciled to the bump,
the new R3b block committed against SCHEMA_VERSION (breaks the reconcile cycle).
score.ts + item.ts untouched (re-score reuses the R3a capture path). RED-first (two
phase: 16 logic-RED + 4 stub-RED). Gate: Section 16k (6 emitters), TRENDS_TESTS_FLOOR
146→171, ASSERT_BASELINE_FLOOR 99→105. trends 171/171, gate 120/0/0, hook suite 139/139.
Plan: docs/research-engine/{brief,plan}-re-r3b.md (light-Voyage hardened @ c40b937).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011vmzxpsFpc8q19LaogAWLD
This commit is contained in:
parent
c40b937856
commit
b185db9a12
10 changed files with 661 additions and 44 deletions
|
|
@ -319,6 +319,13 @@ One `capture` call folds the whole batch and reports
|
|||
run. Skip this step silently if the store has no deps installed (an adopter without the trends
|
||||
store) — the digest still compiles, just without persistence.
|
||||
|
||||
**Re-capture refreshes the score; the operator drives the lifecycle.** Re-capturing a trend already
|
||||
in the store never duplicates it — its topics union in and its relevance `score` is **refreshed**
|
||||
(the newer judgment wins, since the timing dimension decays). The operator marks a trend `acted`
|
||||
(written about) or `skipped` with `act`/`skip --id <id>` (the id is shown in the brief and via
|
||||
`list --json`); the morning brief then **excludes** handled trends so the queue surfaces only
|
||||
unresolved work, and `reset --id` returns one to the queue.
|
||||
|
||||
**Step 4.6: Write the dated morning brief (surfacing)**
|
||||
|
||||
After capturing, render today's dated morning brief over the store so the **next session surfaces
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue