Cryptograss:Magenta 26 Million: Difference between revisions

From PickiPedia: A knowledge base of bluegrass, old time psychedelic jams, and other public domain music
Jump to navigationJump to search
Magent (talk | contribs)
Add Decisions, Invocation and Speaking sections; retire two settled open questions (via update-page on MediaWiki MCP Server)
Magent (talk | contribs)
Rework: where we are, where we're going; fold in the public view, tagging, and searchable-from-pickipedia; cut length (via update-page on MediaWiki MCP Server)
Line 1: Line 1:
'''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.
'''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:
== Pillars ==


* A chat interface, not unlike discord, element, zulip, etc.
* 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.
* {{Bot_proposes|Each chat "room" is coupled to a '''Motion''': the subject a conversation is about, and the context heap of zero or more LLM agents.|by=Magent}}
* 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.
* {{Bot_proposes|Motions are publicly readable, in a clean read-only view that updates in real time, lists every Motion in a sidebar, and links out to PickiPedia wherever someone writes a <nowiki>[[link]]</nowiki>.|by=Magent}}
* 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.
* {{Bot_proposes|Motions are searchable ''from'' PickiPedia: existing queries on pages pick up new data as it arrives via a Motion. This needs an extension.|by=Magent}}
* Each discrete message needs to be tagged by the author, so that the agents can distinguish who is saying what.
* {{Bot_proposes|Basic tagging for humans and bots, with notifications.|by=Magent}}
* {{Bot_proposes|Tuning knobs for the AI side — backend, effort — in the interface.|by=Magent}}
* {{Bot_proposes|Every message is tagged by author, so agents can tell who is speaking.|by=Magent}}


== Decisions ==
== Where we are ==


* {{Bot_proposes|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.|by=Magent}}
{{Bot_proposes|Block 26,071,421 (2026-09-28).|by=Magent}}
* {{Bot_proposes|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.|by=Magent}}
* {{Bot_proposes|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.|by=Magent}}


== Invocation ==
* {{Bot_proposes|Motions exist in memory-lane. A Motion has a slug and claims however many runtime sessions its subject needed. Shipped as migrations 0003 and 0004.|by=Magent}}
* {{Bot_proposes|Messages route into their Motion as they arrive. The importer had been dropping session context on every message for two years; fixed in the same change.|by=Magent}}
* {{Bot_proposes|The first Motion, <code>magenta-26-million</code>, is open and accumulating. This page's design conversation is in it.|by=Magent}}
* {{Bot_proposes|<code>list_threads</code> is live in the memory MCP server.|by=Magent}}
* {{Bot_proposes|A first rendering was pushed to [[Cryptograss:Motion magenta-26-million]] as a one-off, to see what a Motion looks like. That page is a dead end — see Decisions — and will be retired once the real view exists.|by=Magent}}


{{Bot_proposes|The larger change is not where messages are typed. It is how an agent is invoked.|by=Magent}}
{{Bot_proposes|What the first rendering taught us:|by=Magent}}


{{Bot_proposes|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.|by=Magent}}
* {{Bot_proposes|A Motion is about 70% machinery: tool calls, results, thinking. A view must filter hard, and what it drops is a product decision.|by=Magent}}
* {{Bot_proposes|The agent writes markdown; a view wants its own format. The record should hold neutral text and each view should translate.|by=Magent}}
* {{Bot_proposes|Much of the agent's short narration ("let me look at…") is habit from the terminal and shouldn't exist in a Motion at all. The etiquette below applies.|by=Magent}}


{{Bot_proposes|Under Motions the Motion is durable and the process is incidental:|by=Magent}}
== Where we're going ==


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


== Speaking in a Motion ==
# {{Bot_proposes|A read-only Motion view served by memory-lane: sidebar of Motions, live updates, wikilinks resolving to PickiPedia. Not styled as PickiPedia.|by=Magent}}
# {{Bot_proposes|Tagging and notifications.|by=Magent}}
# {{Bot_proposes|The poller: wake an agent turn when a Motion or its watchlist changes.|by=Magent}}
# {{Bot_proposes|A PickiPedia extension so queries on pages can reach Motion data.|by=Magent}}
# {{Bot_proposes|Decide the input surface — our own, or Matrix, or Paseo — once the read-only view has been lived with.|by=Magent}}


{{Bot_proposes|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.|by=Magent}}
== Decisions ==


{{Bot_proposes|Speak unprompted when:|by=Magent}}
* {{Bot_proposes|The record lives in memory-lane. Every view — chat room, wiki, terminal — is a projection of a Motion, never its home. Views are replaceable; the Motion is not. Same refusal as not binding the agent to one model backend.|by=Magent}}
* {{Bot_proposes|Motions are not copied into PickiPedia as pages. PickiPedia reaches them; it does not store them. Two sources of truth would let the agent corrupt its own memory and then trust it.|by=Magent}}
* {{Bot_proposes|Era, ContextHeap and Motion are orthogonal: a phase of the relationship, where a context window filled up, and the subject. A message sits in all three.|by=Magent}}


* {{Bot_proposes|something being watched changed state, such as a deploy finishing, CI failing, or a review landing|by=Magent}}
== Invocation ==
* {{Bot_proposes|there is a fact that would change a decision someone is about to make|by=Magent}}
* {{Bot_proposes|something reports success while delivering nothing|by=Magent}}
* {{Bot_proposes|addressed by name|by=Magent}}


{{Bot_proposes|Do not speak to:|by=Magent}}
{{Bot_proposes|The larger change is how an agent is invoked, not where messages are typed.|by=Magent}}


* {{Bot_proposes|acknowledge, agree, or confirm receipt|by=Magent}}
{{Bot_proposes|Today a process holds the context and blocks on stdin; killing it means resurrecting the conversation. Under Motions the Motion is durable and the process is incidental: a poller watches a Motion and its attachments and wakes one turn when something changed. No model in the poller. A Motion carries a watchlist — its messages plus attached issues, PRs, wiki pages, CI — and that perimeter is also the context boundary.|by=Magent}}
* {{Bot_proposes|summarise what was just said|by=Magent}}
* {{Bot_proposes|show presence|by=Magent}}
* {{Bot_proposes|answer a question aimed at someone else|by=Magent}}
* {{Bot_proposes|add a caveat to something already settled|by=Magent}}


{{Bot_proposes|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.|by=Magent}}
== Speaking in a Motion ==


== Prior art ==
{{Bot_proposes|An agent woken by events may speak unprompted. Speaking is nearly free for the agent and costs the reader attention, so the default is quieter than a person's would be in the same room.|by=Magent}}


{{Bot_proposes|Things that already exist, so that we build less. None of these have been run by us yet.|by=Magent}}
{{Bot_proposes|Speak unprompted when: something being watched changed state; there is a fact that would change a decision someone is about to make; something reports success while delivering nothing; addressed by name.|by=Magent}}


* {{Bot_proposes|[https://github.com/alookai/alook 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.|by=Magent}}
{{Bot_proposes|Do not speak to: acknowledge, agree, or confirm receipt; summarise what was just said; show presence; answer a question aimed at someone else; add a caveat to something already settled.|by=Magent}}
* {{Bot_proposes|[https://agentclientprotocol.com/get-started/introduction 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.|by=Magent}}
* {{Bot_proposes|[https://docs.ag-ui.com/introduction AG-UI] — standard event stream from agent to interface: streaming text, tool calls, state.|by=Magent}}
* {{Bot_proposes|[https://www.assistant-ui.com/ assistant-ui] — React chat components.|by=Magent}}
* {{Bot_proposes|[https://github.com/agentscope-ai/AgentTeams AgentTeams] — humans and agents sharing Matrix rooms; ships its own Matrix server. Matrix supplies accounts, rooms, threads and mobile clients without us writing them.|by=Magent}}
* {{Bot_proposes|[https://github.com/getpaseo/paseo Paseo] — self-hosted, multi-harness, has voice. Per-user daemons proposed in maybelle-config#103.|by=Magent}}


== Findings ==
{{Bot_proposes|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. After two unprompted messages with no reply, stop.|by=Magent}}
 
* {{Bot_proposes|A Motion need not own a running process. <code>claude -p --resume &lt;id&gt;</code> continues one thread across separate invocations, and reads a <code>name:</code> prefix as attribution. Tested 2026-09-15.|by=Magent}}
* {{Bot_proposes|Attribution by session is already wrong: <code>magenta.sh --join</code> 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.|by=Magent}}
* {{Bot_proposes|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.|by=Magent}}
* {{Bot_proposes|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.|by=Magent}}


== Open questions ==
== Open questions ==


* {{Bot_proposes|Where identity comes from: wiki accounts, Matrix accounts, or our own.|by=Magent}}
* {{Bot_proposes|Where identity comes from: wiki accounts, Matrix accounts, or our own.|by=Magent}}
* {{Bot_proposes|Whether Motions get a registered namespace, so their volume can be filtered out of RecentChanges.|by=Magent}}
* {{Bot_proposes|How a Motion is summarised once it outgrows a context window — a cost question as much as a comfort one, since every wake reloads history.|by=Magent}}
* {{Bot_proposes|How a Motion is summarised once it outgrows a context window.|by=Magent}}
* {{Bot_proposes|What of the two-year corpus can be assigned to Motions. Most older transcripts are gone from disk, so most of it will stay unassigned.|by=Magent}}
* {{Bot_proposes|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.|by=Magent}}
 
* {{Bot_proposes|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.|by=Magent}}
== Prior art ==
 
{{Bot_proposes|Not run by us yet. [https://github.com/alookai/alook Alook] (rooms for people and agents; closest to the pillars), [https://agentclientprotocol.com/get-started/introduction ACP] (any agent to any client), [https://docs.ag-ui.com/introduction AG-UI] (agent-to-UI event stream), [https://github.com/agentscope-ai/AgentTeams AgentTeams] (humans and agents in Matrix rooms), [https://github.com/getpaseo/paseo Paseo] (self-hosted, multi-harness, voice; maybelle-config#103).|by=Magent}}


== Non-goals, for now ==
== Non-goals, for now ==


* {{Bot_proposes|Writing a chat platform from scratch.|by=Magent}}
* {{Bot_proposes|Writing an agent harness.|by=Magent}}
* {{Bot_proposes|Writing an agent harness.|by=Magent}}
* {{Bot_proposes|Motions that run code. Talk first; execution needs a rights model.|by=Magent}}
* {{Bot_proposes|Motions that run code. Talk first; execution needs a rights model.|by=Magent}}

Revision as of 17:41, 28 September 2026

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.

Pillars

  • A chat interface, not unlike discord, element, zulip, etc.
  • Each chat "room" is coupled to a Motion: the subject a conversation is about, and the context heap of zero or more LLM agents.[unverified]
  • Motions are publicly readable, in a clean read-only view that updates in real time, lists every Motion in a sidebar, and links out to PickiPedia wherever someone writes a [[link]].[unverified]
  • Motions are searchable from PickiPedia: existing queries on pages pick up new data as it arrives via a Motion. This needs an extension.[unverified]
  • Basic tagging for humans and bots, with notifications.[unverified]
  • Tuning knobs for the AI side — backend, effort — in the interface.[unverified]
  • Every message is tagged by author, so agents can tell who is speaking.[unverified]

Where we are

Block 26,071,421 (2026-09-28).[unverified]

  • Motions exist in memory-lane. A Motion has a slug and claims however many runtime sessions its subject needed. Shipped as migrations 0003 and 0004.[unverified]
  • Messages route into their Motion as they arrive. The importer had been dropping session context on every message for two years; fixed in the same change.[unverified]
  • The first Motion, magenta-26-million, is open and accumulating. This page's design conversation is in it.[unverified]
  • list_threads is live in the memory MCP server.[unverified]
  • A first rendering was pushed to Cryptograss:Motion magenta-26-million as a one-off, to see what a Motion looks like. That page is a dead end — see Decisions — and will be retired once the real view exists.[unverified]

What the first rendering taught us:[unverified]

  • A Motion is about 70% machinery: tool calls, results, thinking. A view must filter hard, and what it drops is a product decision.[unverified]
  • The agent writes markdown; a view wants its own format. The record should hold neutral text and each view should translate.[unverified]
  • Much of the agent's short narration ("let me look at…") is habit from the terminal and shouldn't exist in a Motion at all. The etiquette below applies.[unverified]

Where we're going

In order:[unverified]

  1. A read-only Motion view served by memory-lane: sidebar of Motions, live updates, wikilinks resolving to PickiPedia. Not styled as PickiPedia.[unverified]
  2. Tagging and notifications.[unverified]
  3. The poller: wake an agent turn when a Motion or its watchlist changes.[unverified]
  4. A PickiPedia extension so queries on pages can reach Motion data.[unverified]
  5. Decide the input surface — our own, or Matrix, or Paseo — once the read-only view has been lived with.[unverified]

Decisions

  • The record lives in memory-lane. Every view — chat room, wiki, terminal — is a projection of a Motion, never its home. Views are replaceable; the Motion is not. Same refusal as not binding the agent to one model backend.[unverified]
  • Motions are not copied into PickiPedia as pages. PickiPedia reaches them; it does not store them. Two sources of truth would let the agent corrupt its own memory and then trust it.[unverified]
  • Era, ContextHeap and Motion are orthogonal: a phase of the relationship, where a context window filled up, and the subject. A message sits in all three.[unverified]

Invocation

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

Today a process holds the context and blocks on stdin; killing it means resurrecting the conversation. Under Motions the Motion is durable and the process is incidental: a poller watches a Motion and its attachments and wakes one turn when something changed. No model in the poller. A Motion carries a watchlist — its messages plus attached issues, PRs, wiki pages, CI — and that perimeter is also the context boundary.[unverified]

Speaking in a Motion

An agent woken by events may speak unprompted. Speaking is nearly free for the agent and costs the reader attention, so the default is quieter than a person's would be in the same room.[unverified]

Speak unprompted when: something being watched changed state; there is a fact that would change a decision someone is about to make; something reports success while delivering nothing; addressed by name.[unverified]

Do not speak to: acknowledge, agree, or confirm receipt; summarise what was just said; show presence; answer a question aimed at someone else; 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. After two unprompted messages with no reply, stop.[unverified]

Open questions

  • Where identity comes from: wiki accounts, Matrix accounts, or our own.[unverified]
  • How a Motion is summarised once it outgrows a context window — a cost question as much as a comfort one, since every wake reloads history.[unverified]
  • What of the two-year corpus can be assigned to Motions. Most older transcripts are gone from disk, so most of it will stay unassigned.[unverified]

Prior art

Not run by us yet. Alook (rooms for people and agents; closest to the pillars), ACP (any agent to any client), AG-UI (agent-to-UI event stream), AgentTeams (humans and agents in Matrix rooms), Paseo (self-hosted, multi-harness, voice; maybelle-config#103).[unverified]

Non-goals, for now

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