← 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

  1. Branch: rebuild/turbo-rsbuild. Last commit 743c7cd. Working tree clean; everything pushed to origin. Latest tag: v3.0.0.3 (cut earlier today, closes the Shell UX Coherence refactor era).
  2. 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.
  3. No implementation work happened on the new specs. All four are status: Draft and waiting for sign-off before any code lands.
  4. 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

  1. [[../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_context for Phase 3’s scoring).
  2. [[../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.
  3. [[../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.
  4. [[../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.3 was 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

  1. 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.
  2. 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 issue block; added to the parent spec’s Wish list.
  3. 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 from directional prop + arrow geometry, distance in rem, the Walkthrough’s cohort logic, and the migration plan locked. Pattern confirmed against the industry (Shepherd.js / driver.js / react-joyride / intro.js).
  4. 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.
  5. 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 since v3.0.0.2).

Afternoon / evening — Entity Pulse arc

  1. 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.
  2. 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_override shape grew from string{ find?, extract? } for the official-site pack.
  3. 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_context brief); no hard cap on returned items; all / most_recent / most_relevant views; 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.
  4. 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-pack decomposed into official-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.
  5. 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.
  6. 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_context for relevance scoring
    • cross-category dedup. Migration plan reshuffled to officials-first.

Latest locks — sharpest decisions

  1. Foundation-first: Officials before mentions. Phase 2’s OfficialUpdatesRollup is prior_context for every Phase-3 pack.
  2. Two scores per item: confidence (verification — link valid + informative) and relevance (LLM-scored vs. relevance_context). 90/51/0 tier semantics tied to default-accept / human-review / default-skip.
  3. No hard cap; structured response: items[] master list (sorted by combined score) + most_recent[] + most_relevant[] indexed views (soft cap 20).
  4. 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 in history[].
  5. Four triage actions: acceptCanonical / acceptAdditionalContext / discard + refire (the per-record palette action; additive-only, never overwrites prior curation).
  6. Intent ≠ connector: button names intent (f = Facebook); multiple connectors live behind it; default click walks preferred_connectors; long-press opens the connector menu.
  7. Connector registry is runtime: hot-add by dropping a file + register(). Auth detection at registration → status: 'needs-env' for connectors without API keys.
  8. News stays free (google-news-rss v1 default, GDELT immediate peer; SerpApi engine: '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_accepted in 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:

#BlockerStatus
1TypeScript types in a real fileDefined inline in spec; needs to lift to services/social-search/src/types/entity-pulse.ts when implementation starts
2Write-back semantics for arrays-of-itemsRESOLVED via [[../specs/Pulse-Curation-Layer-and-UI]]
3Connector inventory + which are NEWRESOLVED via [[../specs/Connector-Inventory-and-Per-Record-Palette]] with the EXISTS/NEW/FUTURE table + the runtime registry pattern
4ProviderId union extensionSubsumed by the Capability enum in spec #3
5provider_override shape changeSubsumed by preferred_connectors[] chains + per-record palette override in spec #3
6Agent pack runtimePending — still an open question. Affects the rollup-agents and the official-social-posts-pack
7confidence on Entity Pulse outputsRESOLVED 0-100 mirroring Profile Builder semantics
8Within-pack de-dupe algorithmPending — algorithm sketch in spec but not locked
9Recency window enforcement per providerPending — defaults named but not locked per provider
10Concurrency model for agent packPending
11Per-column accept UX in Response ReviewerRESOLVED — design is in [[../specs/Pulse-Curation-Layer-and-UI]] per-category cards
12Cost estimate formula + surfacePending — 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
  • [[../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