← Corpus / augment-it / reminder
Pickup notes — 2026-06-02
Today's session closed the Shell UX Coherence refactor's last threads (Tooltip-System sharpened to a family + Walkthrough, bundle picker dropdown, tag v3.0.0.3 cut and pushed) and then went deep on a NEW bundle: **Entity Pulse**. By session end, four interlocking specs cover the bundle's design — Entity-Pulse-Bundle itself (foundation-first 4-phase DAG with three categories, seven source-bound packs, three rollup-agents), Pulse-Curation-Layer-and-UI (three layers raw/curated/finalized + four triage actions), Connector-Inventory-and-Per-Record-Palette (registry + per-record per-intent button palette), plus the prior Tooltip-System for the chip menus. Nothing implemented past the existing Phase 0-6 UX refactor; all four new specs are Draft. Migration plans cross-reference each other; foundation-first sequencing means OfficialUpdates ships first, gates the rest. The user said start fresh; this is your map.
- Path
- reminders/Pickup-2026-06-02.md
- Authors
- Michael Staton
- Augmented with
- Claude Code on Claude Opus 4.7 (1M context)
- Tags
- Augment-It · Pickup · Next-Steps · Entity-Pulse · Pulse-Curation · Connector-Inventory · Tue Jun 02 2026 00:00:00 GMT+0000 (Coordinated Universal Time)
Pickup notes — 2026-06-02
TL;DR for the next session
- Branch:
rebuild/turbo-rsbuild. Last commit743c7cd. Working tree clean; everything pushed to origin. Latest tag:v3.0.0.3(cut earlier today, closes the Shell UX Coherence refactor era). - What landed today: closing UX-refactor threads + the start of a new architectural arc around the Entity Pulse Bundle. Four interlocking specs now cover it.
- No implementation work happened on the new specs. All four are
status: Draftand waiting for sign-off before any code lands. - Honor the branch-cadence rule (see [[../../memory/feedback_branch_cadence.md]] if you’re an agent reading this): commit + push to trunk for tiny changes / spec edits; branch + PR only for substantive multi-file features. We bled out PR-theater this session.
Read these specs in this order
- [[../specs/Entity-Pulse-Bundle]] (v0.0.0.5) — the bundle that
drove most of today’s design work. Read the Philosophy section,
then Foundation-first sequencing, then the four-phase orchestration
shape. Everything else is detail. Three categories
(OfficialUpdates / MediaMentions / SocialsMentions), seven
source-bound packs, three rollup-agents, four-phase DAG with
foundation-first sequencing (Officials gate the rest;
OfficialUpdatesRollup is
prior_contextfor Phase 3’s scoring). - [[../specs/Pulse-Curation-Layer-and-UI]] (v0.0.0.1) — the three-layer data model (raw / curated / finalized) per category per row per run. Three triage actions (acceptCanonical / acceptAdditionalContext / discard) + bulk variants. Per-record re-fire (from spec #3 below) is the fourth triage action, additive-only.
- [[../specs/Connector-Inventory-and-Per-Record-Palette]]
(v0.0.0.1) — hot-swap connector registry + per-record per-intent
button palette. The button names the intent (
f= Facebook), not the connector. Multiple connectors live behind one button. Resolves engineering-handoff blocker #3 (connector inventory) with a real pattern not a static checklist. - [[../specs/Tooltip-System]] (v0.0.0.2) — the icon-tooltip family (Simple / Rich / Popover) + Walkthrough. Already sharpened earlier today. Adjacent: the per-record palette’s connector menus will rely on this when both ship.
Optional context the Entity Pulse arc points at:
- [[../blueprints/Packs-and-Bundles-Pattern]] — the parent pattern. Has a candidate addendum coming for pulse-shaped bundles + agent packs + phased orchestration.
- [[../specs/Shell-and-Micro-Frontend-UX-Coherence]] (v0.0.1.3)
— the UX refactor spec. All six phases shipped + four follow-on
decisions (§7-§11). Tag
v3.0.0.3was cut against this.
Session arc — what happened today
Today was two distinct phases. The first half closed out the Shell UX Coherence refactor cleanly; the second half went deep on Entity Pulse.
Morning / midday — closing the UX refactor era
- Bundle picker dropdown — Pack Runner’s Step 3 (Bundle) was a
pill-button segmented control; the Step 1 (Record set) on the
same surface was a
<select>. Sibling-symmetric principle §2: they should match. Swapped to a dropdown. - Tooltip-System stub — surfaced when the user noticed native
title=tooltips weren’t showing reliably. Stubbed[[../specs/Tooltip-System]]with the gap + migration plan; annotated principle §8 with a⚠ Hanging issueblock; added to the parent spec’s Wish list. - Tooltip-System sharpening — user pushed back: tooltips
aren’t ONE component, they’re a family. Plus the Walkthrough
surface for onboarding / returning-since-milestone tours. Spec
rewritten with the three-component family (Simple / Rich /
Popover), the
fromdirectional prop + arrow geometry,distancein rem, the Walkthrough’s cohort logic, and the migration plan locked. Pattern confirmed against the industry (Shepherd.js / driver.js / react-joyride / intro.js). - Branch-cadence feedback — user called out that I was over-using branches for tiny changes. Saved as memory feedback [[../../memory/feedback_branch_cadence.md]]. Going forward: trunk for spec edits / tiny CSS / single-file tweaks; branch + PR for substantive multi-file features.
- Annotated tag
v3.0.0.3— wrote a real narrative tag message capturing the whole Shell UX Coherence arc (six phases shipped, four follow-on decisions, +24K insertions across 168 files sincev3.0.0.2).
Afternoon / evening — Entity Pulse arc
- Entity-Pulse-Bundle initial spec (v0.0.0.1) — user named
the new bundle: find press / updates / blog for an entity, plus
news mentions, plus a social-pulse agent that uses
row.socials[]from a prior Profile Builder run. - SerpApi as peer provider (v0.0.0.2) — user asked how SerpApi
fits as a provider. Added it for the official-site find-index
stage; locked news pack on the FREE path (“Google News feels
like we can do free and separate”). Pre-v3.0.0.5
provider_overrideshape grew fromstring→{ find?, extract? }for the official-site pack. - Confidence + relevance + Philosophy (v0.0.0.3) — user
sharpened two engineering-handoff blockers. Locked: every item
carries TWO 0-100 scores (confidence + LLM-scored relevance
against a
relevance_contextbrief); no hard cap on returned items;all/most_recent/most_relevantviews; cost discipline for LLM scoring at fan-out scale. User added the Philosophy framing while edits were in flight: “LLMs fan out, humans filter in.” Promoted to a top-level spec section. - Major restructure to three categories + Pulse-Curation
stub (v0.0.0.4) — user sharpened the taxonomy: OfficialUpdate
has three content_types (blog / press_release / social_post),
MediaMention has three (news_coverage / thematic_inclusion /
deep_analysis), SocialsMention is NEW (third-party mentions
across platforms). The old
social-pulse-packdecomposed intoofficial-social-posts-pack(entity’s own) +socials-mentions-pack(third-party). User said the rollups should be “true rollups” (every item + indexed views, not just summary). User also named the new sibling spec:Pulse-Curation-Layer-and-UI.md— created as the three-layer (raw / curated / finalized) data model + triage UX. Cross- linked both ways. - Connector-Inventory-and-Per-Record-Palette (v0.0.0.1) —
user sharpened engineering-handoff blocker #3 (connector
inventory) past a checklist. Connectors should be hot-swappable
at runtime + the per-record palette UX (one button per intent,
multiple connectors behind it, short label
f/in/wp) is the killer interaction. Resolves #3 with a real pattern. - Foundation-first sequencing (v0.0.0.5) — user-locked: “the
first thing is to identify and pull in their own blog /
press-releases, so that is first order of operations.” Bundle
restructured from two-pass to four-phase DAG: OfficialUpdates
gates everything; MediaMentions + SocialsMentions pull the
OfficialUpdatesRollup as
prior_contextfor relevance scoring- cross-category dedup. Migration plan reshuffled to officials-first.
Latest locks — sharpest decisions
- Foundation-first: Officials before mentions. Phase 2’s
OfficialUpdatesRollup is
prior_contextfor every Phase-3 pack. - Two scores per item:
confidence(verification — link valid + informative) andrelevance(LLM-scored vs.relevance_context). 90/51/0 tier semantics tied to default-accept / human-review / default-skip. - No hard cap; structured response:
items[]master list (sorted by combined score) +most_recent[]+most_relevant[]indexed views (soft cap 20). - Three-layer curation per category per row per run:
raw_output(immutable LLM result) →curated_output(live, updates as human triages) →finalized_output(immutable snapshot when human marks done). Re-firing creates new raw + curated; previous finalized stays inhistory[]. - Four triage actions:
acceptCanonical/acceptAdditionalContext/discard+refire(the per-record palette action; additive-only, never overwrites prior curation). - Intent ≠ connector: button names intent (
f= Facebook); multiple connectors live behind it; default click walkspreferred_connectors; long-press opens the connector menu. - Connector registry is runtime: hot-add by dropping a file +
register(). Auth detection at registration →status: 'needs-env'for connectors without API keys. - News stays free (
google-news-rssv1 default, GDELT immediate peer; SerpApiengine: 'google_news'available behind override but never default). Officials use SerpApi for find-index + Firecrawl for extract.
Where to start next session
Three credible directions, ordered by what’s cheapest to begin:
A. Implement Entity Pulse step 1 from the migration plan
official-blog-pack standalone (find-index via SerpApi + extract
via Firecrawl). Single-pack mini-bundle for testing. Output
OfficialUpdateItem[] (content_type: 'official_blog_entry').
No rollup, no curation layer, no LLM scoring yet
(provider_override.score: 'none'). Purpose: get the find-index
two-stage pattern working end-to-end on a real domain with no
orchestration complexity. Requires SerpApi + Firecrawl connectors
to land first.
B. Implement Connector-Inventory step 1 in parallel
The connector registry + Capability enum + base shape, no
functional change yet (parallel infrastructure). Then migrate
existing Profile Builder packs to declare intent + short_label
preferred_connectors. This is a code-only change that proves the pattern in the smallest existing surface (Profile Builder) without Entity Pulse complexity.
C. Implement Decision §10 from the UX refactor
Adaptive Request Reviewer — composite slot whose active member is chosen by the incoming request type. This is the last piece of the old UX-refactor arc that’s locked but not implemented. Pack Runner’s “Fire” → “Review →” change is part of this. It also becomes the natural surface for surfacing the Entity Pulse bundle’s cost estimate (per-bundle cost budget open question).
My lean: B first (smallest; proves the registry pattern in isolation), then A (Entity Pulse step 1 needs connectors), then C (independent track, can pick up anytime).
Open architectural questions still on the board
- Cross-category promotion in triage — a MediaMentions item
belongs in
row.fields.canonical.official_links[]? UI needs a “Promote to other category” affordance. ([[../specs/Pulse-Curation-Layer-and-UI]] Open questions.) - Re-fire merge resolution — when a re-fire produces an item
with the same URL as a previously-finalized canonical entry,
surface
previously_acceptedin metadata. (Same spec.) - Per-record fire budget — palette could trigger 20 re-fires at SerpApi rates. v1: no enforcement; surface per-row LLM-call estimate. (Connector-Inventory Open questions.)
- Profile Builder retroactive adoption order — for both the Pulse Curation Layer AND the connector palette: migrate Profile Builder BEFORE or AFTER Entity Pulse ships? Lean: before — proves patterns in isolation. (Cross-spec.)
- Bundle-level chain override per pack — bundles declare
per-pack
connector_chain_override? (Connector-Inventory Open questions.) - Summary regeneration on heavy curation — when the human discards 80% of the items, the original summary no longer reflects the kept set. v2 candidate. (Pulse-Curation.)
Engineering-handoff blockers — status
These were named when the user asked for a PM-hat read on Entity Pulse. Status as of session end:
| # | Blocker | Status |
|---|---|---|
| 1 | TypeScript types in a real file | Defined inline in spec; needs to lift to services/social-search/src/types/entity-pulse.ts when implementation starts |
| 2 | Write-back semantics for arrays-of-items | RESOLVED via [[../specs/Pulse-Curation-Layer-and-UI]] |
| 3 | Connector inventory + which are NEW | RESOLVED via [[../specs/Connector-Inventory-and-Per-Record-Palette]] with the EXISTS/NEW/FUTURE table + the runtime registry pattern |
| 4 | ProviderId union extension | Subsumed by the Capability enum in spec #3 |
| 5 | provider_override shape change | Subsumed by preferred_connectors[] chains + per-record palette override in spec #3 |
| 6 | Agent pack runtime | Pending — still an open question. Affects the rollup-agents and the official-social-posts-pack |
| 7 | confidence on Entity Pulse outputs | RESOLVED 0-100 mirroring Profile Builder semantics |
| 8 | Within-pack de-dupe algorithm | Pending — algorithm sketch in spec but not locked |
| 9 | Recency window enforcement per provider | Pending — defaults named but not locked per provider |
| 10 | Concurrency model for agent pack | Pending |
| 11 | Per-column accept UX in Response Reviewer | RESOLVED — design is in [[../specs/Pulse-Curation-Layer-and-UI]] per-category cards |
| 12 | Cost estimate formula + surface | Pending — open question in [[../specs/Connector-Inventory-and-Per-Record-Palette]] |
Branch + git state
- Current branch:
rebuild/turbo-rsbuild(development tier) - Last commit:
743c7cd spec(context-v): Entity-Pulse-Bundle foundation-first sequencing (v0.0.0.5) - Working tree: clean
- Origin: all pushed
- Latest tag:
v3.0.0.3(annotated; closes the Shell UX Coherence arc) - Open PRs: none
- Open feature branches: none (everything from today on trunk per the cadence rule)
How to verify state on next session
git fetch --tags
git log --oneline -8 # last 8 commits on trunk
git status # should be clean
git describe --tags # should show v3.0.0.3 + commits-since
ls context-v/specs/Entity-Pulse-Bundle.md # exists, v0.0.0.5
ls context-v/specs/Pulse-Curation-Layer-and-UI.md # exists, v0.0.0.1
ls context-v/specs/Connector-Inventory-and-Per-Record-Palette.md # exists, v0.0.0.1
Related
- [[../specs/Entity-Pulse-Bundle]] (v0.0.0.5)
- [[../specs/Pulse-Curation-Layer-and-UI]] (v0.0.0.1)
- [[../specs/Connector-Inventory-and-Per-Record-Palette]] (v0.0.0.1)
- [[../specs/Tooltip-System]] (v0.0.0.2)
- [[../specs/Shell-and-Micro-Frontend-UX-Coherence]] (v0.0.1.3, refactor era done)
- [[../blueprints/Packs-and-Bundles-Pattern]] — candidate addendum coming
- [[Pickup-2026-06-01]] — yesterday’s pickup (the UX refactor era)
- [[../../memory/feedback_branch_cadence.md]] — branch cadence rule from today