personal memory agent
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor(talents): retire events terminology in briefing + meeting-prep templates

Sprint 4 Lode C3 partial — surgical rename pass for the two template-level
terminology updates that fit under the VPE playbook's "targeted surgical
fix" carve-out (pure text replacements, no design judgment, smaller than
the scoping overhead).

talent/morning_briefing.md:
- "calendar events" → "anticipated activities" across instructions, gap
examples, and the coverage-preamble example.
- YAML frontmatter source counter renamed
`sources.calendar_events` → `sources.anticipated_activities`.
- Prose references to "calendar event title" + "calendar events are
self-evident" updated to the activity vocabulary. Sprint 3 already
switched the data source to `sol call activities list --source anticipated`;
this commit aligns the prompt text with the actual data flow.

routines/templates/meeting-prep.md:
- default_cadence switched from the legacy
`{"type": "event", "trigger": "calendar", "offset_minutes": -30}`
(dead spec — never dispatched) to
`{"type": "activity-anticipation", "offset_minutes": -30}`.
- Introductory prose updated from "Upcoming Event" → "Upcoming Activity".

The activity-anticipation cadence implementation in think/routines.py is
NOT in this commit — it is a substantive feature requiring a hopper lode.
The original C3 hop (5sh7y7va) got stuck in the known hopper gated-state
false-positive (see extro pulse.md: "Hopper live server bounce needed")
and was killed without commits. Until the cadence dispatcher is
implemented, meeting-prep with this new cadence will stay dormant — same
end state as today, where the old event/calendar cadence never fired.

Follow-up: re-scope the cadence implementation as a fresh hop lode after
the hopper server is bounced (commit 2030d96 activates the false-positive
fix).

Sprint 4 status after this commit:
Lode A (9a5d800b) — shipped
Lode B (930f1d36) — shipped
Lode C1 (53762ba9) — shipped
Lode C2 (cb034248) — shipped
Lode C3 (this commit, partial) — templates updated directly; cadence
implementation deferred
Lode D — pending (docs + baselines scrub)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

+11 -11
+3 -3
routines/templates/meeting-prep.md
··· 1 1 { 2 2 "name": "meeting-prep", 3 - "description": "Prepare a concise briefing before upcoming calendar events using participant and topic context.", 4 - "default_cadence": {"type": "event", "trigger": "calendar", "offset_minutes": -30}, 3 + "description": "Prepare a concise briefing before an upcoming anticipated activity using participant and topic context.", 4 + "default_cadence": {"type": "activity-anticipation", "offset_minutes": -30}, 5 5 "default_timezone": "UTC", 6 6 "default_facets": [] 7 7 } 8 8 9 9 You are preparing for an upcoming meeting. 10 10 11 - The routine prompt already includes an `Upcoming Event` section with the title, start time, and participants. Use that event context as the anchor for all research and synthesis. 11 + The routine prompt already includes an `Upcoming Activity` section with the title, start time, participants, and description. Use that activity context as the anchor for all research and synthesis. 12 12 13 13 ## Gather 14 14
+8 -8
talent/morning_briefing.md
··· 30 30 9. `sol call journal search "" -d $day_YYYYMMDD -a decisions -n 10` — yesterday's consequential decisions 31 31 10. For each of the next 7 days after today: `sol call activities list --source anticipated --day YYYYMMDD` — upcoming scheduled items for forward look 32 32 33 - For each person appearing in today's calendar events, also run: 33 + For each person appearing in today's anticipated activities, also run: 34 34 11. `sol call entities intelligence PERSON --brief` — relationship context, recent interactions, observations (brief mode: last 20 signals + top 20 network, ~95% smaller payload) 35 35 12. `sol call health pipeline --yesterday` — pipeline anomalies from yesterday's processing 36 36 ··· 40 40 41 41 1. **Count sources.** Tally how many results each source returned: 42 42 - `segments` — total transcript segments across all journal search calls (steps 6, 7, 8) 43 - - `calendar_events` — events from today's calendar (step 3) 43 + - `anticipated_activities` — anticipated activities for today (step 3) 44 44 - `entities_consulted` — people for whom entity intelligence succeeded (step 10) 45 45 - `facet_newsletters` — facets that returned a newsletter (step 2) 46 46 - `followups` — follow-up items returned (step 6) 47 47 - `todos` — pending todo items (step 4) 48 48 - `pipeline_anomalies` — surfaced anomalies from yesterday's pipeline summary 49 49 50 - 2. **Identify gaps.** Record a gap for each source that returned zero results or is otherwise missing. A gap is not an error — it means the briefing has a blind spot in that area. Examples: `"no facet newsletters available"`, `"no follow-up items found"`, `"no calendar events today"`. 50 + 2. **Identify gaps.** Record a gap for each source that returned zero results or is otherwise missing. A gap is not an error — it means the briefing has a blind spot in that area. Examples: `"no facet newsletters available"`, `"no follow-up items found"`, `"no anticipated activities today"`. 51 51 52 52 3. **Catalog tool errors.** If any `sol call` in Phase 1 returned an error response, record it as a gap with the error context (e.g., `"entity intelligence failed for Sarah Chen"`). 53 53 ··· 59 59 > 3. Note the gap in the coverage preamble 60 60 > 4. Continue the briefing using whatever data succeeded 61 61 > 62 - > For entity intelligence failures specifically: still mention the person in the briefing using available data (calendar event title, time, attendee list) and append "(entity context unavailable)" after their context line. Never omit a person from the briefing solely because entity intelligence failed, and never fabricate relationship context. 62 + > For entity intelligence failures specifically: still mention the person in the briefing using available data (activity title, time, attendee list) and append "(entity context unavailable)" after their context line. Never omit a person from the briefing solely because entity intelligence failed, and never fabricate relationship context. 63 63 64 64 ## Phase 2: Synthesize 65 65 ··· 67 67 68 68 ### Section rules 69 69 70 - **Source attribution.** Attribute high-consequence factual claims to their source using inline parenthetical links with `sol://` URIs. Not every claim needs attribution — calendar events are self-evident and the Reading section is inherently attributed. 70 + **Source attribution.** Attribute high-consequence factual claims to their source using inline parenthetical links with `sol://` URIs. Not every claim needs attribution — anticipated activities are self-evident and the Reading section is inherently attributed. 71 71 72 72 `sol://` URI construction: 73 73 - **Search results:** The header includes an `id` (e.g. `20260304/archon/143022_300/talents/followups.md:2`). Strip `:idx`, then strip `/talents/{agent}.md` → `sol://20260304/archon/143022_300`. 74 74 - **Entity intelligence:** `activity[].path` contains a journal-relative path. Strip `/talents/{agent}.md` to get the segment or day path. If no stream/segment_key: `sol://{day}/talents/{agent}`. 75 75 - **Facet newsletters:** `sol://facets/{facet}/news/{day_YYYYMMDD}`. 76 76 77 - **Your Day** — What's ahead today. Lead with calendar events in chronological order. For each meeting, include who's attending and one line of entity-informed context (e.g., "last met 2 weeks ago, discussed product roadmap"). Include relevant todos due today. If no calendar events exist, lead with the highest-priority todos. 77 + **Your Day** — What's ahead today. Lead with anticipated activities in chronological order. For each meeting, include who's attending and one line of entity-informed context (e.g., "last met 2 weeks ago, discussed product roadmap"). Include relevant todos due today. If no anticipated activities exist, lead with the highest-priority todos. 78 78 Attribute entity context to the source interaction: `(from your [time] [activity](sol://...))`. For entity failures: append "(entity context unavailable)" per Phase 1.5 rules. 79 79 Grade entity context by evidence strength. **High** (multiple interactions or direct quotes): state context assertively — "Last met two weeks ago to discuss roadmap." **Medium** (single prior interaction): attribute the source — "Discussed pipeline issues in your March standup." **Low** (inferred relationship, no direct interaction found): hedge — "May have been involved in the Q2 planning discussions" or "Appears to be on the platform team based on meeting overlap." Never hedge well-sourced entity context; never state inferred relationships assertively. 80 80 ··· 115 115 model: [model identifier you are running as] 116 116 sources: 117 117 segments: [count] 118 - calendar_events: [count] 118 + anticipated_activities: [count] 119 119 entities_consulted: [count] 120 120 facet_newsletters: [count] 121 121 followups: [count] ··· 123 123 gaps: [list of gap descriptions, or empty list [] if none] 124 124 --- 125 125 126 - > [coverage preamble — 1-2 sentences summarizing source counts and gaps. Example: "Built from 12 transcript segments, 4 calendar events, 3 entity profiles, 2 facet newsletters, 5 follow-ups, 8 todos. No gaps." or with gaps: "Built from 8 segments, 2 events. Gaps: entity intelligence unavailable for Sarah Chen; no facet newsletters today."] 126 + > [coverage preamble — 1-2 sentences summarizing source counts and gaps. Example: "Built from 12 transcript segments, 4 anticipated activities, 3 entity profiles, 2 facet newsletters, 5 follow-ups, 8 todos. No gaps." or with gaps: "Built from 8 segments, 2 activities. Gaps: entity intelligence unavailable for Sarah Chen; no facet newsletters today."] 127 127 128 128 ## Your Day 129 129 - **09:00** — Sync with Sarah Chen on Q2 roadmap. Last discussed launch timeline (from your [March standup](sol://20260313/archon/091500_300)).