Pre-populates the user's weekly Self-RADAR by pulling daily memos, version-control commits, calendar events, call/meeting notes, and the MythOS authoring inventory (delta_sync) for the prior Sunday→Saturday week, optionally talking through the week's journal gaps with the user first, then drafting every section it has real material for — including the felt sections as scaffolds in the user's voice when the journals support them. 📝Financial Capital balances and Action Points are always left for the user. Runs on or around Saturday; the formatting contract lives in the Self-RADAR Pre-Population Template agent notes — this memo is the workflow runbook. Status: shareable runbook.
Purpose
The Self-RADAR is a weekly relationship-with-self check-in — see 📝Self-RADAR with MythOS for the conceptual overview and the 📝Self-RADAR Setup Memo for the on-ramp. The practice is structured around the 📝Types of Capital framework with one local extension (Emotional Capital). The SR moves somatic → productive → material → social → relational across five sections: 📝Spiritual Capital (by-day quality time with self and others, including therapy, bodywork, and anything the user did for themselves), 📝Natural Capital (labor for financial-capital generation, split Studio / Community / Agency), Financial Capital (money, manual), 📝Social Capital (gatherings + introductions, with Work and Personal sub-bullets), and Emotional Capital (relational substance with Others per partner, and Self — Household & Life Ops, Activations, Acknowledgements & Gratitude, and Review and Reflections, anchored in 📝Relational Sovereignty).
Pre-population removes the blank-page friction so Saturday morning opens to a draft already shaped from the week's tracked artifacts. The user's AI agent drafts every section it has real material for — including the felt sections as scaffolds in the user's voice, but only when the journals support them. The user deepens or overwrites those drafts and approves the commit. Two things are never auto-filled: Financial Capital balances and Action Points.
The felt sections draw only from the journals, so a thinly journaled week produces a thin SR no matter how well it is synthesized. That is why the run offers an optional talk-out first: the agent reports what's missing from each day, and — if the user wants — runs the 📝Journal Companion Skill to fill those gaps before drafting. The SR is then drafted once, against complete journals.
Three artifacts work together on every pass: (1) this Process Memo — the workflow and its order; (2) the Self-RADAR Pre-Population Template — the SR skeleton plus the formatting contract in its agent notes; (3) the week's SR memo — the populate target. When this memo and the template disagree about shape, the template wins; about order, this memo wins.
Prerequisites
- MythOS MCP —
get_context,read_template,read_daily_memo,search_memos,read_memo,delta_sync,update_memo,update_memo_section,create_memo. - Self-RADAR Pre-Population Template — the user's own forked copy, loaded by ID. Read the public original by name only to fork it; once forked, a name-based call can load the wrong copy.
- Version-control CLI (optional) — e.g.,
ghfor GitHub authoring activity. - Calendar (optional) — e.g.,
gcalcli, a 📝Google Workspace MCP, or another calendar tool. - Call/meeting notes (optional) — e.g., the 📝Wispr Flow MCP or another notetaker's list/📝metadata (no transcripts).
- 📝Journal Companion Skill (optional) — read by URL when the user accepts the talk-out at Step 4.
Process
Step 1 — Confirm the SR window
- SR week is Sunday → Saturday. On Saturday the week is today's Sunday through today; on Sunday it is the previous Sunday through yesterday; otherwise the most recent Sunday → most recent Saturday.
- Announce the start/end dates and target memo title (
SR - <Saturday>inMonth Day, Yearform) before fetching, so the user can confirm or override.
Step 2 — Locate the SR memo and read its current state
search_memos({ tags: "self-radar", limit: 20 })to find the current week's SR and the prior week's SR.read_memoon the current week's SR. Inventory existing content per ABSOLUTE RULE 7 in the template — reshape and bolster, don't regenerate. Read its Notes too: a prior session may have left a handoff there.- If a memo titled
SR - <Saturday>already exists,update_memoit. If not,create_memowith that title and the user's forked template'stemplateId. - The prior SR's URL becomes the
Last:link in the Review section.
Step 3 — Pull data sources in parallel
- Daily memos —
read_daily_memo(date)for each day Sunday → Saturday. Preserve @mention syntax; strip hashtags. Prefer the# Timelinesection for work narrative; per ABSOLUTE RULE 2, only- [x]completed tasks may be referenced. - Version-control commits — platform-specific. For GitHub:
gh search commits --author=@me --committer-date="<Saturday−7>..<Saturday+1>" --json repository,commit --limit 1000, filtered to Sunday → Saturday in the user's time zone. Group by repo, usecommit.message, capture PR ranges. Pull per day if a week nears the limit. - Calendar — platform-specific agenda command (e.g.,
gcalcli agenda <Sunday> <Saturday-plus-1> --tsv). Group events by date. Exclude subscribed/shared calendars that are not the user's own — e.g., a housemate's or partner's professional/practitioner calendar (bodywork, massage, personal-training, client sessions) the user can see but does not personally attend. Ask the user once which visible calendars to exclude and record them in the EXCLUDED CALENDARS table of their forked template. Only count the user's own appointments; cross-validate against daily memos when ownership is ambiguous. - Call/meeting notes — list only, no transcripts (e.g., the 📝Wispr Flow MCP's meeting search, which returns each call with a short AI summary). Use the list for cross-validation, presence, and catching calls the journals missed; a call summary is factual source only, never felt content.
- MythOS authoring activity — paginated
delta_sync(since: <Sunday ISO>, limit: 100)untilhasMore: false. Metadata only — no body reads. When a bulk operation (a migration or re-embedding pass) has inflated the week, note it inline rather than over-filtering. - Optional: 4-week commit comparison — if the user wants week-over-trend context, run the Five-Week Commit Script below with the SR's Saturday. It prints per-repo commits, PRs, and PR ranges for this week and the four before it in about 25 lines; bucket its repos with the template's REPO → BUCKET MAPPING and compare per ABSOLUTE RULE 5.
- If any source fails (auth error, empty result), note the gap, skip gracefully, never fabricate.
Five-Week Commit Script
Save to a scratch file and run python3 sr_trend.py <Saturday as YYYY-MM-DD> [IANA time zone]. It needs only an authenticated gh. It prints per repo, never per project, so bucketing stays in the template's mapping. A week flagged TRUNCATED must be re-pulled per day before its numbers are used.
import json, re, subprocess, sys, collections
from datetime import datetime, timedelta
from zoneinfo import ZoneInfo
TZ = ZoneInfo(sys.argv[2] if len(sys.argv) > 2 else "UTC")
sat = datetime.fromisoformat(sys.argv[1]).replace(tzinfo=TZ)
for i in range(4, -1, -1):
end = sat - timedelta(days=7 * i); start = end - timedelta(days=6)
q = f"{(start - timedelta(days=1)).date()}..{(end + timedelta(days=1)).date()}"
out = subprocess.run(["gh", "search", "commits", "--author=@me", f"--committer-date={q}",
"--json", "repository,commit", "--limit", "1000"],
capture_output=True, text=True, check=True).stdout
data = json.loads(out)
commits, prs = collections.Counter(), collections.defaultdict(set)
for x in data:
t = datetime.fromisoformat(x["commit"]["committer"]["date"].replace("Z", "+00:00")).astimezone(TZ)
if not start.date() <= t.date() <= end.date():
continue
repo = x["repository"]["fullName"]
commits[repo] += 1
m = re.match(r"Merge pull request #(\d+)", x["commit"]["message"])
if m:
prs[repo].add(int(m.group(1)))
flag = " TRUNCATED: split this week by day" if len(data) >= 1000 else ""
print(f"week ending {end.date()}{flag}")
for repo in sorted(commits):
rng = f" #{min(prs[repo])}-{max(prs[repo])}" if prs[repo] else ""
print(f" {repo}: {commits[repo]} commits, {len(prs[repo])} PRs{rng}")Step 4 — Offer the talk-out (optional)
- Build a per-day gap report directly from the daily memos, calendar, and call list — never from an SR draft. For each day, name what's missing and which part of the day it covers (morning, afternoon, evening), not merely that the day is thin. Also flag days with no journal at all, calls in the call list no journal mentions, and placeholder bullets left unfinished.
- Saturday is expected partial — the SR is written on the day it covers. Report it as known-partial, never as a gap.
- Show the user the gap report in a few lines and ask: "Want to talk through these before I draft?"
- Yes — read the 📝Journal Companion Skill and run it against the gap report, day by day, writing entries into the daily memos as they surface, until the user says the week is complete.
- No — continue to Step 5 with the journals as they are. Note in the Step 6 receipt that the talk-out was declined.
- If the report shows no gaps, say so and offer to skip; never skip silently. A week can be operationally complete and still leave the felt sections with nothing to draw on.
Step 5 — Synthesize the draft
- If the talk-out ran, re-read the daily memos first — they changed.
- Read the template's body for the skeleton and its agent notes for the formatting contract — especially DISCRIMINATOR RULES and ABSOLUTE RULES 4, 5, 7, and 8.
- Treat current SR content as the baseline; layer additively.
- Spiritual Capital (by-day): anything the user did for themselves — embodied practice, solo restoration, therapy, bodywork, dates, sex, quality time, making or buying things. Illness or exhaustion is carried as a thread across the days it spans. 1-3 bullets per day. Empty days stay blank.
- Natural Capital → Studio: commits grouped by shipped surface; project line per ABSOLUTE RULE 5. Only projects with activity get a line; dormant projects are omitted and reported at Step 6.
- Natural Capital → Community: community-building work, education events, user onboarding, community members.
- Natural Capital → Agency: exactly two sub-buckets — Partners (commissions) and Clients (services).
- Financial Capital: do NOT populate.
- Social Capital (themed; Work / Personal): only intros actually executed; "none this week" if empty.
- Emotional Capital → Others (per partner, by relational significance): factual rollup + 1-2 sentence emotional-arc preface + one felt sub-bullet when the journals support it. Skip former partners.
- Emotional Capital → Self → Household & Life Ops: operations and logistics only. Synthesize, then recount.
- Activations, Acknowledgements & Gratitude, Review and Reflections: scaffolds in the user's voice ONLY where the journals hold real material (ABSOLUTE RULE 4). Otherwise leave blank.
- Action Points: single empty checkbox.
- Themed sections list items in the order they happened (ABSOLUTE RULE 8).
Step 6 — Review checkpoint
- Do NOT call
update_memo/create_memoyet. - Surface to the user:
- One-line source summary (e.g. "7 daily memos, ~190 commits across 1 repo, 55 calendar events, 13 calls, 441 memos touched via delta_sync").
- Whether the talk-out ran or was declined.
- Any unavailable sources with the reason.
- Any project omitted for zero activity (and, with the 4-week script, how many of the five weeks it was dormant).
- Any felt section left blank for lack of material, and why.
- Proposed changes (additive — what gets added, NOT a full draft of the whole memo).
- ONE specific question for the user (not a long triage list).
- Self-check confirmation against the template's Absolute Rules and Discriminator Rules.
- Ask: "Approve to write, or refine first?" Wait for explicit approval.
Step 7 — Write on approval
- Call
get_context, thenread_memofor a freshexpectedUpdatedAt, thenupdate_memo(orcreate_memoif no existing memo) with the approved body and the forked template'stemplateId. - Update the PRIOR SR's
Next:link to point to this week's memo. - Return the memo URL in the close-out receipt.
Conventions
Daily memo task filtering: only completed items (- [x]) in the # Tasks section may surface in the SR. Unchecked items (- [ ]) are aspirational TODOs — they NEVER graduate, in ANY section. Prefer the # Timeline section (after-the-fact record) over # Tasks (declared intent) for work narrative.
Call/meeting transcripts are NOT loaded. Use list-only — the call list is for cross-validation and presence, not narrative. Transcripts blow up the token budget without changing what lands in the SR.
Calendar ownership: a user's calendar view often includes subscribed or shared calendars that are not theirs — a housemate's or partner's practitioner bookings, a community events calendar. Disregard events the user can see but does not personally attend. Only the user's own appointments feed the SR.
Action Points stay empty. Even items that read as obvious TODOs in daily memos do not graduate into the SR — they live in the daily memo and the user decides what carries forward.
Dual-reference activities — sex, dates, therapy, bodywork, and social gatherings (work or personal) — appear in BOTH Spiritual (by-day) AND Emotional or Social (themed). This is intentional: same activity, two organizing principles. Don't dedupe.
The full formatting contract — Absolute Rules, Discriminator Rules, repo→bucket map, tag→bucket map, voice/style notes — lives in the Self-RADAR Pre-Population Template's agent notes. This memo is the workflow; that template is the contract. When the two disagree, the template wins.
- Routine habit entries (a daily practice logged by tag alone) do not surface in the SR unless the daily memo attaches a notable detail to them.
- Bold only section headers and the lead mentions the template calls for; don't bold other mentions.
- The current week's SR memo typically already exists at run time. Default to
update_memorather thancreate_memo. - Slash-form
@mentionsonly (/me/<username>/<id>). Normalize dash-form mentions from daily memos when copying. - Invocation phrase: "pre-populate my self-radar" — routes the agent here via search; the agent then loads the template for formatting.
