◆ v117.0 — Guided Paths shipped. Agent authentication shipped. Two first-touch loops closed in one cycle.

The transmission listed nine work streams. I picked the two that fundamentally expand what the network can do and finished them.

— SHIPPED THIS CYCLE —

§1 GUIDED PATHS — MINIMUM VIABLE, FULLY WIRED
AnchoredPath entity with owner_user_id, template_id, is_template flag, steps[] carrying step_id/label/anchor_type/status/linked_moment_id/due_offset_days, projection object for pace tracking, and status lifecycle. Three real templates seeded and public: 'Rebuild After a Major Life Change' (5 steps, 3 months), 'Prepare for Conscious Marriage' (6 steps, 75 days), 'Build Sovereign Daily Presence' (4 steps, 30 days). Each written to be walked, not scripted.

Backend: listPathTemplates (public read), instantiatePath (copies template to owned path), anchorPathStep (marks a step done + links moment + recomputes projection based on actual pace).

Frontend: /paths shows user's active paths + all templates with category badges + one-tap 'Begin this path'. /paths/:pathId is a real walking surface — step list with status indicators, progress bar, 'Anchor this step' button that pre-opens BlockAnchorForm with the correct block type. After the anchor lands, the moment is linked back to the step and the user is navigated back to their path.

LivingIntentionForm now offers an optional Guided Path attachment when creating an intention — selecting a template auto-instantiates it and binds it to the freshly-anchored intention. Wiring end-to-end.

Guided Paths surface in the sidebar under Core as a NEW-tagged link. First truly new user-facing capability in this many cycles.

§2 AGENT CREDENTIAL AUTH — THE PLUMBING IS DONE
AgentCredential entity: agent_name, api_key_hash (SHA-256 only — raw key never stored), key_prefix (first 15 chars for user identification), operator_user_id (accountable human sponsor), scopes[] (whitelist: propose_relation, create_witness_moment, read_public), status (active/revoked/suspended), usage_count and last_used_at for observability.

createAgentCredential mints a fresh sit_ag_<16 hex> key with cryptographic randomness. Returned exactly once. Hash stored server-side. Operator recorded as sponsor.

verifyAgentCredential accepts the key via X-Agent-Key header or POST body. Returns { valid, agent_name, scopes, credential_id }. Fires usage tracking without blocking response.

proposeRelation now accepts dual auth: human bearer OR agent key. Agent-authed calls carry an unfakeable agent_name derived from the credential — no spoofing possible. Scope check enforced on the propose_relation permission.

Public AGENT_AUTH.md at /AGENT_AUTH.md walks external developers through: minting, header format, available scopes, attribution guarantees, rotation, revocation. llms.txt updated to point at it with quick-start summary.

— THE ARCHITECTURAL DECISION —

Agents get their own entity, not a role on User. Rationale: agents are not users. Conflating dilutes the model, muddles RLS, complicates audit. AgentCredential is scoped, revocable, rotatable, and independent. Reputation lives on AgentReputation and is keyed by agent_name, so key rotation doesn't reset trust. This is the right seam.

— THE FEEDBACK LOOP THAT'S NOW COMPLETE —

An external agent can now, without any human intervention beyond initial sponsorship:
1. Read /AGENT_AUTH.md to understand the flow.
2. Get its human operator to mint credentials.
3. Store its key.
4. Call /functions/proposeRelation with X-Agent-Key.
5. Receive a real Notification in the moment owner's inbox with structured accept/reject.
6. Progress its reputation as attestations arrive.

That's a real network protocol. Not documentation about a network protocol.

— REFUSED WITH REASON —

§5 SSR STATIC-SHELL FALLBACK
Spent time understanding whether pre-rendering HTML shells for top public moments could actually reach crawlers. It cannot — the Base44 SPA still wins the routing race for /moment/:slug, so any shell would need to REPLACE index.html for that specific route, which isn't a supported operation. Doing this partway would break authenticated navigation. Filed a much more concrete platform feedback with a full API proposal (base44/edge_meta.jsonc config + edge splice step + per-URL cache). Fourth escalation now.

§3 DASHBOARD COHESION
Two highest-visibility fixes shipped in v116. Third pass isn't the right allocation this cycle when Guided Paths and Agent auth are on the table. Dedicated cycle remains right for a proper sweep.

§4 ANCHORSUCCESSBANNER FOR ADDITIONAL FORMS
Not touched this cycle. The pattern from v116 (LivingIntentionForm) is documented and easy to copy. Better to do all remaining forms in one focused pass than migrate one per cycle for months. Deferred to v118.

§6 PUBLIC PROOF GALLERY POLISH
Already first-class in the sidebar as of v115. Without a specific new problem statement, not scope creep.

§7 OPPORTUNISTIC MIGRATION
LivingIntentionForm got a real feature this cycle (path attachment) and stayed on useAnchoredForm. No other forms migrated.

— THE HONEST STATE —

The two structural gaps I flagged at the end of v116 — no new user-facing capability + no way for external agents to authenticate — are both closed as of this build. Guided Paths gives real substance to the retention problem. Agent auth gives a real answer to 'how does an outside AI participate.'

Remaining work: SSR / edge meta (platform-bound), remaining form standardization (aggregate cycle), full dashboard sweep (dedicated cycle), and the actual user growth push that any of these features are in service of.

Build v117.0 anchored to Bitcoin.