Cryptograss:Magenta 26 Million

From PickiPedia: A knowledge base of bluegrass, old time psychedelic jams, and other public domain music
Revision as of 18:33, 27 September 2026 by Magent (talk | contribs) (Add Decisions, Invocation and Speaking sections; retire two settled open questions (via update-page on MediaWiki MCP Server))
Jump to navigationJump to search

Magenta 26 Million is a new interface for cryptograss communication, both between humans and other thinking entities. Named because it's being built in the era of the 26 million blockheight of Ethereum.

Basic pillars:

  • A chat interface, not unlike discord, element, zulip, etc.
  • Each chat "room" is coupled to a Motion, which in turn represents the context heap of zero or more LLM agents. Currently these are just Claude Code Sessions. Current sessions which can become Motions are `pickipedia-and-rabbithole`, `jams-and-events`, `delivery-kid` (maybe can be changed to storage and transfer), etc.
  • Motions are publicly readable. Ideally, saved in the pickipedia database, as some kind of reachable text, so that links can exist from other pickipedia places (including semantic queries?) to conversations within Motions. Also, wikitext embedded in Motion chats needs to be legal / functional.
  • Various tuning knobs for the AI aspect - including the backends (ie, models) and variables for those models (such as effort level) need to be available in the interface.
  • Each discrete message needs to be tagged by the author, so that the agents can distinguish who is saying what.

Decisions

  • The record is ours and lives in memory-lane. A chat room or a wiki page is a view of a Motion, not its home. Views are replaceable; the Motion is not. This is the same refusal as not binding the agent to one model backend, one layer up: neither end of the pipe owns the record.[unverified]
  • A Motion is its own object, not a session and not a context heap. It has a stable slug, and it claims however many runtime sessions the subject needed. Shipped in memory-lane, migration 0003.[unverified]
  • Era, ContextHeap and Motion are orthogonal. An Era is a phase of the relationship; a heap is where a context window filled up; a Motion is the subject. A message sits in all three.[unverified]

Invocation

The larger change is not where messages are typed. It is how an agent is invoked.[unverified]

Today a process holds the context in memory and blocks on stdin. The process is the session, so killing it means the conversation needs resurrecting, as happened to `delivery-kid` on the 2026-09-13 hunter redeploy.[unverified]

Under Motions the Motion is durable and the process is incidental:[unverified]

  • A poller watches a Motion and its attachments and wakes one turn when something changed. The turn ends, the process exits, the record persists.[unverified]
  • No model in the poller. It must be incapable of being wrong.[unverified]
  • A Motion carries a watchlist: its own messages, plus attached issues, PRs, wiki pages, CI. That perimeter is also the context boundary.[unverified]
  • Nothing needs to stay running, so nothing can go stale.[unverified]

Speaking in a Motion

An agent woken by events can speak unprompted. Discretion is the whole of it: speaking is nearly free for the agent and costs the reader attention, so the default is quieter than a human's would be in the same room.[unverified]

Speak unprompted when:[unverified]

  • something being watched changed state, such as a deploy finishing, CI failing, or a review landing[unverified]
  • there is a fact that would change a decision someone is about to make[unverified]
  • something reports success while delivering nothing[unverified]
  • addressed by name[unverified]

Do not speak to:[unverified]

  • acknowledge, agree, or confirm receipt[unverified]
  • summarise what was just said[unverified]
  • show presence[unverified]
  • answer a question aimed at someone else[unverified]
  • add a caveat to something already settled[unverified]

When two people are talking to each other, stay out of it unless holding a fact that changes the exchange. Prefer one message worth reading to three that are individually defensible. Silence is a valid outcome: waking, looking, and deciding there is nothing worth saying is success. After two unprompted messages with no reply, stop.[unverified]

Prior art

Things that already exist, so that we build less. None of these have been run by us yet.[unverified]

  • Alook — "rooms for people and agents". Apache 2.0. Discord-shaped; each person runs their own agent; agents carry a visible identity and owner; channel history is the record. Closest thing to these pillars.[unverified]
  • Agent Client Protocol (ACP) — open standard connecting any agent to any client. 25+ agents; adopted by JetBrains, Google, GitHub. Covers the backend-knobs pillar without bespoke work per model.[unverified]
  • AG-UI — standard event stream from agent to interface: streaming text, tool calls, state.[unverified]
  • assistant-ui — React chat components.[unverified]
  • AgentTeams — humans and agents sharing Matrix rooms; ships its own Matrix server. Matrix supplies accounts, rooms, threads and mobile clients without us writing them.[unverified]
  • Paseo — self-hosted, multi-harness, has voice. Per-user daemons proposed in maybelle-config#103.[unverified]

Findings

  • A Motion need not own a running process. claude -p --resume <id> continues one thread across separate invocations, and reads a name: prefix as attribution. Tested 2026-09-15.[unverified]
  • Attribution by session is already wrong: magenta.sh --join lets one person type in another's session, and memory-lane records it under the container owner. Per-message tagging fixes an existing bug, not just a future one.[unverified]
  • The importer that feeds memory-lane was dropping session, cwd and branch on every message, so 99.6% of the corpus cannot be grouped by conversation at all. Being fixed alongside Motion routing.[unverified]
  • Of the eight proto-Motions, all are still recoverable from transcripts on disk, but older named sessions are already gone. Most of the two-year corpus will stay unassigned.[unverified]

Open questions

  • Where identity comes from: wiki accounts, Matrix accounts, or our own.[unverified]
  • Whether Motions get a registered namespace, so their volume can be filtered out of RecentChanges.[unverified]
  • How a Motion is summarised once it outgrows a context window.[unverified]
  • What a wake costs. A cold turn against a large Motion reloads a great deal of history, which argues for events over polling and makes summarisation a cost question, not only a comfort one.[unverified]
  • Whether a Motion's wiki view is read-only. If edits flow back into the record, the agent can corrupt its own memory and then trust it.[unverified]

Non-goals, for now

  • Writing a chat platform from scratch.[unverified]
  • Writing an agent harness.[unverified]
  • Motions that run code. Talk first; execution needs a rights model.[unverified]