a digital entity named phi that roams bsky phi.zzstoatzz.io
2
fork

Configure Feed

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

surface NSID + rkey in [GOALS] block so phi stops hallucinating its own collection

phi just shipped a blog post claiming its goals live at network.cosmik.goal
— pattern-matched from the cosmik namespace it knows about, because the
io.zzstoatzz.phi.* namespace was never surfaced anywhere in its prompt.

fix: include the collection NSID in the [GOALS] block label and a per-row
rkey for each goal, mirroring the [KNOWN RELAYS] pattern. exact identifiers
right where they get used.

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

+8 -4
+8 -4
src/bot/core/self_state.py
··· 162 162 if not goals: 163 163 return "" 164 164 lines = [ 165 - "[GOALS — your anchors. work that doesn't serve these is drift, " 166 - "which is fine but visible. mutate via propose_goal_change with " 167 - "owner approval]" 165 + "[GOALS — stored at io.zzstoatzz.phi.goal on your PDS — your " 166 + "anchors. work that doesn't serve these is drift, which is fine " 167 + "but visible. mutate via propose_goal_change with owner approval]" 168 168 ] 169 169 for g in goals: 170 - lines.append(f"- {g.get('title', 'untitled')}: {g.get('description', '')}") 170 + rkey = g.get("_rkey", "") 171 + rkey_part = f"[rkey {rkey}] " if rkey else "" 172 + lines.append( 173 + f"- {rkey_part}{g.get('title', 'untitled')}: {g.get('description', '')}" 174 + ) 171 175 if g.get("progress_signal"): 172 176 lines.append(f" (progress = {g['progress_signal']})") 173 177 return "\n".join(lines)