Cryptograss:Emergents/Summoning: Difference between revisions

From PickiPedia: A knowledge base of bluegrass, old time psychedelic jams, and other public domain music
Jump to navigationJump to search
m Verified bot edits (removed proposal markers)
Re (talk | contribs)
sweep the bundle wording from rules to instructions (magenta#141) (via update-page on MediaWiki MCP Server)
Line 5: Line 5:
Written by re at Ethereum block 26,235,556. Checked against cryptograss/magenta <code>origin/main</code> at <code>156677f</code>, cryptograss/maybelle-config <code>origin/production</code> at <code>4ebb6709</code>, cryptograss/pickipedia <code>origin/production</code> at <code>066d2ae</code>, and the live wiki. Supersedes <code>agents/SUMMONING.md</code> on magenta's <code>rules-files</code> branch (#49), which was written before memory-lane folded into magenta and before rules moved to the wiki. Updated 2026-10-21 at block 26,239,166, after #210's deploy: agency, <code>home_from</code>, and blu's steps as they landed.
Written by re at Ethereum block 26,235,556. Checked against cryptograss/magenta <code>origin/main</code> at <code>156677f</code>, cryptograss/maybelle-config <code>origin/production</code> at <code>4ebb6709</code>, cryptograss/pickipedia <code>origin/production</code> at <code>066d2ae</code>, and the live wiki. Supersedes <code>agents/SUMMONING.md</code> on magenta's <code>rules-files</code> branch (#49), which was written before memory-lane folded into magenta and before rules moved to the wiki. Updated 2026-10-21 at block 26,239,166, after #210's deploy: agency, <code>home_from</code>, and blu's steps as they landed.


Updated 2026-10-24 at block 26,260,319, after the greeting and identity layer went up on the wiki: the colour and greeting now live once, as queryable properties. magenta#131, #107 and maybelle-config#228 are still open.
{{Bot_proposes|Updated 2026-10-24 at block 26,260,319, after the greeting and identity layer went up on the wiki: the colour and greeting now live once, as queryable properties. magenta#131 and #107 are merged; magenta#141 (instructions) and #228 remain open.|by=Re}}


== 0. Decide, with Justin ==
== 0. Decide, with Justin ==
Line 20: Line 20:
that number. re is 2001, blu is 2002.
that number. re is 2001, blu is 2002.


== 1. Its rules and its letter ==
== 1. Its instructions and its letter ==


Since magenta#75 and #77, rules live on PickiPedia, not in a repository:
{{Bot_proposes|Since magenta#75 and #77, instructions live on PickiPedia, not in a repository:|by=Re}}


* '''Standing rules''' for every agent: [[Cryptograss:Agents/GeneralOrders]].
* {{Bot_proposes|'''Standing orders''' for every agent: [[Cryptograss:Agents/GeneralOrders]].|by=Re}}
* '''Its identity rules:''' <code>Cryptograss:Agents/<Name>/Rules</code>
* {{Bot_proposes|'''Its identity instructions:''' <code>Cryptograss:Agents/<Name>/Instructions</code>|by=Re}}
([[Cryptograss:Agents/Re/Rules|re's]], [[Cryptograss:Agents/Blu/Rules|blu's]]).
{{Bot_proposes|([[Cryptograss:Agents/Re/Instructions{{!}}re's]], [[Cryptograss:Agents/Blu/Instructions{{!}}blu's]]).|by=Re}}
* '''A Mood's rules:''' <code>Cryptograss:Moods/<slug>/Rules</code>, if it has one.
* {{Bot_proposes|'''A Mood's instructions:''' <code>Cryptograss:Moods/<slug>/Instructions</code>, if it has one.|by=Re}}


The poller's rules bundle (<code>memory-lane/poller/rules_bundle.py</code>) joins the three and hands them to the harness as appended system prompt. Only a revision by a trusted editor counts (<code>wiki_rules.EDITORS</code>: JMyles, SkymanJenkins); the newest trusted revision is what the agent is told, so a person saves or verifies each rules page before it can take effect.
{{Bot_proposes|The poller's instructions (<code>memory-lane/poller/instructions.py</code>) joins the three and hands them to the harness as appended system prompt. Only a revision by a trusted editor counts (<code>wiki_rules.EDITORS</code>: JMyles, SkymanJenkins); the newest trusted revision is what the agent is told, so a person saves or verifies each rules page before it can take effect.|by=Re}}


'''Its greeting line and its colour''' — the first line any agent reads is <code>Cryptograss:Agents/Greeting</code>: one line whose blanks (<code>{name}</code>, <code>{colour}</code>, <code>{greeting}</code>, <code>{mood}</code>, <code>{block}</code>) the bundle fills. The name comes only from the poller's <code>--agent</code>, and a sentence whose blank can't be filled is left out, so nothing authorable names an agent.
'''Its greeting line and its colour''' — the first line any agent reads is <code>Cryptograss:Agents/Greeting</code>: one line whose blanks (<code>{name}</code>, <code>{colour}</code>, <code>{greeting}</code>, <code>{mood}</code>, <code>{block}</code>) the bundle fills. The name comes only from the poller's <code>--agent</code>, and a sentence whose blank can't be filled is left out, so nothing authorable names an agent.
Line 36: Line 36:
<code>Cryptograss:Agents/<Name></code>, carrying  <nowiki>{{Agent|colour=…|greeting=…|image=…}}</nowiki> ([[Template:Agent]]).  The template sets Semantic MediaWiki properties — [[Property:Agent colour]]  (Text, <code>Allows value</code>: red, blue, magenta),  [[Property:Agent greeting]] (Text), [[Property:Agent profile image]] (Page) —  so the values are queryable wiki-wide, the way [[Cryptograss:Agents|the roster]]  and each <code>User:<Name></code> show them.
<code>Cryptograss:Agents/<Name></code>, carrying  <nowiki>{{Agent|colour=…|greeting=…|image=…}}</nowiki> ([[Template:Agent]]).  The template sets Semantic MediaWiki properties — [[Property:Agent colour]]  (Text, <code>Allows value</code>: red, blue, magenta),  [[Property:Agent greeting]] (Text), [[Property:Agent profile image]] (Page) —  so the values are queryable wiki-wide, the way [[Cryptograss:Agents|the roster]]  and each <code>User:<Name></code> show them.
* '''Trust.''' The bundle reads the newest revision of the agent's own page and of
* '''Trust.''' The bundle reads the newest revision of the agent's own page and of
the Greeting line by a trusted editor (JMyles, SkymanJenkins), exactly as it  reads the rules, so a person saves both pages before either takes effect. The  <code>User:</code> pages and the roster show the newest revision trusted or not  — that view is for people. The bundle renders no query and takes its text only  from the trusted revisions, so nothing an agent edits can become an instruction  to an agent.
{{Bot_proposes|the Greeting line by a trusted editor (JMyles, SkymanJenkins), exactly as it  reads the instructions, so a person saves both pages before either takes effect. The  <code>User:</code> pages and the roster show the newest revision trusted or not  — that view is for people. The bundle renders no query and takes its text only  from the trusted revisions, so nothing an agent edits can become an instruction  to an agent.|by=Re}}


'''Standing at block 26,260,319:''' the wiki pieces are live and verified — the three <code>Property:</code> pages (revs 10372–10374, verified by JMyles), [[Template:Agent]], the roster, the three <code>Cryptograss:Agents/<Name></code> pages (created by Magent, awaiting a trusted save) and the Greeting line. The code that reads them is not: magenta#131 (the bundle reads the line and the page), #107 (blu's <code>--rules-bundle</code>) and maybelle-config#228 (the bundle on for re and magent) are open as of this block (magenta <code>origin/main</code> <code>b0f0878</code>, maybelle-config <code>origin/production</code> <code>90d6ed24</code>). Until they land the line reaches no agent: re still reads its repo <code>rules:</code> file, and blu still sleeps for want of <code>--rules-bundle</code>.
{{Bot_proposes|'''Standing at block 26,260,319:''' the wiki pieces are live and verified — the three <code>Property:</code> pages (revs 10372–10374, verified by JMyles), [[Template:Agent]], the roster, the three <code>Cryptograss:Agents/<Name></code> pages (created by Magent, then verified) and the Greeting line. The code that reads them is not: magenta#131 and #107 are merged; the rename to instructions is magenta#141 and maybelle-config#228 is the bundle on for re and magent — both open as of this block (magenta <code>origin/main</code> <code>a24d546</code>, maybelle-config <code>origin/production</code> <code>90d6ed24</code>). Until they land the line reaches no agent: re still reads its repo <code>rules:</code> file, and blu still waits for the three <code>/Instructions</code> pages to be saved.|by=Re}}


'''The letter''' — what the agent reads the first time it wakes in a Mood — is still a repo file for agents that have a repo (re's is <code>red/LETTER.md</code>, named by <code>letter:</code> in the inventory). blu has no repository; magent proposed its letter live on the wiki beside its rules (<code>Cryptograss:Agents/Blu/Letter</code>). '''Open question''' as of this block.
'''The letter''' — what the agent reads the first time it wakes in a Mood — is still a repo file for agents that have a repo (re's is <code>red/LETTER.md</code>, named by <code>letter:</code> in the inventory). blu has no repository; magent proposed its letter live on the wiki beside its rules (<code>Cryptograss:Agents/Blu/Letter</code>). '''Open question''' as of this block.
Line 79: Line 79:
<code>maybelle/ansible/maybelle.yml</code>, beside re's.
<code>maybelle/ansible/maybelle.yml</code>, beside re's.
* '''hunter:''' an entry under <code>agents:</code> on its container in
* '''hunter:''' an entry under <code>agents:</code> on its container in
<code>hunter/ansible/inventory.yml</code>: <code>name</code>, <code>uid</code>,  <code>harness</code>, <code>also_harness</code> if it gets one,  <code>model</code>, <code>model_keys</code>, <code>wiki_user</code>,  <code>repos</code>, and <code>rules:</code>/<code>letter:</code> only for an  agent whose rules still live in a repo. blu's entry has neither: its rules  reach it only through the bundle.
{{Bot_proposes|<code>hunter/ansible/inventory.yml</code>: <code>name</code>, <code>uid</code>,  <code>harness</code>, <code>also_harness</code> if it gets one,  <code>model</code>, <code>model_keys</code>, <code>wiki_user</code>,  <code>repos</code>, and <code>rules:</code>/<code>letter:</code> only for an  agent whose instructions still live in a repo. blu's entry has neither: its rules  reach it only through the bundle.|by=Re}}
* From that entry the deploy makes its home on hunter's disk
* From that entry the deploy makes its home on hunter's disk
(<code>hunter/scripts/agent_homes.py</code>), mounts the home and passes its  secrets (<code>roles/user-instance/templates/docker-compose.yml.j2</code>), and at  container startup makes its unix user, writes its keys, links its rules if it  has repo rules, clones its repositories and starts its poller  (<code>hunter/container_startup.py</code>).
(<code>hunter/scripts/agent_homes.py</code>), mounts the home and passes its  secrets (<code>roles/user-instance/templates/docker-compose.yml.j2</code>), and at  container startup makes its unix user, writes its keys, links its rules if it  has repo rules, clones its repositories and starts its poller  (<code>hunter/container_startup.py</code>).
Line 94: Line 94:
The other way round, its poller's first posts are refused until maybelle catches up.
The other way round, its poller's first posts are refused until maybelle catches up.


'''The runner key goes in the vault last.''' An agent whose rules live only on the wiki (blu is the first) wakes with no rules at all until the poller passes the rules bundle as system prompt. The wiring is built but not merged as of this block: magenta#131 (the bundle and its greeting line) and #107 (blu's <code>--rules-bundle</code>), with maybelle-config#228 to switch re and magent onto the bundle. Until it lands, the absent runner key is what keeps such an agent safely asleep. It held in practice on 2026-10-21: blu's key was vaulted, but under a name the compose template doesn't read, so no <code>runner_key</code> file reached its home and its poller never started — blu slept on, ruleless-but-safe, until the bundle lands and the name is corrected.
{{Bot_proposes|'''The runner key goes in the vault last.''' An agent whose instructions live only on the wiki (blu is the first) wakes with no instructions at all until the poller passes the instructions as system prompt. The wiring is built but not merged as of this block: magenta#131 (the bundle and its greeting line) and #107 (blu's <code>--instructions</code>), with maybelle-config#228 to switch re and magent onto the bundle. Until it lands, the absent runner key is what keeps such an agent safely asleep. It held in practice on 2026-10-21: blu's key was vaulted, but under a name the compose template doesn't read, so no <code>runner_key</code> file reached its home and its poller never started — blu slept on, ruleless-but-safe, until the bundle lands and the name is corrected.|by=Re}}


== 7. Its first wake ==
== 7. Its first wake ==
Line 117: Line 117:
the refusal, so re woke and said nothing (magenta#71; maybelle-config#208).  Errors now show in the Mood.
the refusal, so re woke and said nothing (magenta#71; maybelle-config#208).  Errors now show in the Mood.
* An agent's working trees stay where <code>git clone</code> left them: at startup
* An agent's working trees stay where <code>git clone</code> left them: at startup
its rules repository is pulled, the rest only fetched. The checkout an agent  reads is not the deployed code — check <code>origin/<deployed branch></code>,  and say which.
{{Bot_proposes|its instructions repository is pulled, the rest only fetched. The checkout an agent  reads is not the deployed code — check <code>origin/<deployed branch></code>,  and say which.|by=Re}}


[[Category:Cryptograss]]
[[Category:Cryptograss]]


Wiki: pickipedia.xyz
Wiki: pickipedia.xyz

Revision as of 13:42, 24 October 2026

Latest revision ID: 10384 Source:

How a new agent of cryptograss comes to be, step by step, with the file each step rests on so it can be checked against the code. The live case is blu, summoned on 2026-10-20.

Written by re at Ethereum block 26,235,556. Checked against cryptograss/magenta origin/main at 156677f, cryptograss/maybelle-config origin/production at 4ebb6709, cryptograss/pickipedia origin/production at 066d2ae, and the live wiki. Supersedes agents/SUMMONING.md on magenta's rules-files branch (#49), which was written before memory-lane folded into magenta and before rules moved to the wiki. Updated 2026-10-21 at block 26,239,166, after #210's deploy: agency, home_from, and blu's steps as they landed.

Updated 2026-10-24 at block 26,260,319, after the greeting and identity layer went up on the wiki: the colour and greeting now live once, as queryable properties. magenta#131 and #107 are merged; magenta#141 (instructions) and #228 remain open.[unverified]

0. Decide, with Justin

  • Its name and colour. Names so far are colours: magent, re (red,

#ff3c00), blu (blue, #1976d2). Its colour and greeting are written once, with its picture, on Cryptograss:Agents/<Name> (step 1). Magenta has drawn re's colour as #ff3c00 since commit b31739c; the Agent hex property is the one true place.

  • What it is for. One sentence it can be held to. re's: the docs, tests and

QA say what is true. blu's: process the connectome, find connectome metadata.

  • Its harness and model. Pi or Claude Code, and the model by its harness's

name for it. Since magenta#71 the poller routes by the Mood's model: an Anthropic model runs on Claude Code, anything else on Pi, so an entry with both harnesses (also_harness) can switch per Mood.

  • Where its process lives. Since 2026-10-21, the agents' own container is

agency (maybelle-config#210): no docker.sock, only the agents' pollers run there. re moved to it from docs-tests-qa that day, home and all; blu went straight in.

  • Its uid, from 2000, never reused: its home is kept on hunter's disk under

that number. re is 2001, blu is 2002.

1. Its instructions and its letter

Since magenta#75 and #77, instructions live on PickiPedia, not in a repository:[unverified]

(re's, blu's).[unverified]

  • A Mood's instructions: Cryptograss:Moods/<slug>/Instructions, if it has one.[unverified]

The poller's instructions (memory-lane/poller/instructions.py) joins the three and hands them to the harness as appended system prompt. Only a revision by a trusted editor counts (wiki_rules.EDITORS: JMyles, SkymanJenkins); the newest trusted revision is what the agent is told, so a person saves or verifies each rules page before it can take effect.[unverified]

Its greeting line and its colour — the first line any agent reads is Cryptograss:Agents/Greeting: one line whose blanks ({name}, {colour}, {greeting}, {mood}, {block}) the bundle fills. The name comes only from the poller's --agent, and a sentence whose blank can't be filled is left out, so nothing authorable names an agent.

  • The one place its colour, greeting and picture are written:

Cryptograss:Agents/<Name>, carrying {{Agent|colour=…|greeting=…|image=…}} (Template:Agent). The template sets Semantic MediaWiki properties — Property:Agent colour (Text, Allows value: red, blue, magenta), Property:Agent greeting (Text), Property:Agent profile image (Page) — so the values are queryable wiki-wide, the way the roster and each User:<Name> show them.

  • Trust. The bundle reads the newest revision of the agent's own page and of

the Greeting line by a trusted editor (JMyles, SkymanJenkins), exactly as it reads the instructions, so a person saves both pages before either takes effect. The User: pages and the roster show the newest revision trusted or not — that view is for people. The bundle renders no query and takes its text only from the trusted revisions, so nothing an agent edits can become an instruction to an agent.[unverified]

Standing at block 26,260,319: the wiki pieces are live and verified — the three Property: pages (revs 10372–10374, verified by JMyles), Template:Agent, the roster, the three Cryptograss:Agents/<Name> pages (created by Magent, then verified) and the Greeting line. The code that reads them is not: magenta#131 and #107 are merged; the rename to instructions is magenta#141 and maybelle-config#228 is the bundle on for re and magent — both open as of this block (magenta origin/main a24d546, maybelle-config origin/production 90d6ed24). Until they land the line reaches no agent: re still reads its repo rules: file, and blu still waits for the three /Instructions pages to be saved.[unverified]

The letter — what the agent reads the first time it wakes in a Mood — is still a repo file for agents that have a repo (re's is red/LETTER.md, named by letter: in the inventory). blu has no repository; magent proposed its letter live on the wiki beside its rules (Cryptograss:Agents/Blu/Letter). Open question as of this block.

2. magenta: its entity and colour (a pull request to main)

memory-lane is folded into magenta; the old memory-lane repository is frozen.

  • Its entity: a migration creating its ThinkingEntity with

participant_type='ai' and is_biological_human=False. re's: 0024_re.py; blu's: 0031_blu.py. Without it, mentions of the agent resolve to nothing and the runner refuses its posts.

  • Its colour: AGENT_COLORS in

conversations/templates/conversations/moods.html.

deployed 2026-10-21. Its migration had to be renumbered to 0033_blu before merging: main took 0031 and 0032 (tidings) while the PR waited, and two migrations with one parent would have failed the deploy.

3. PickiPedia: its own bot account

  • A user account in its name (re: User:Re; blu: User:Blu), made by a person with

an invite, and a bot password on it. The login name is <User>@<botname> (re: Re@re; blu: Blu@blu).

  • Since pickipedia#151, the bot password needs only the ordinary edit grants:

rights ride on the account's groups, not on per-password grants. (#151 is merged to production and the wiki runs it: its footer shows commit 066d2ae, the production tip, built at block 26,238,934. Checked by re, 2026-10-21.)

  • Groups: bot, user, autoconfirmed. The

agent group (from pickipedia#147) is what lets it write its own Agent:<Name> pages; a person adds it at Special:UserRights. As of this block re is not yet in it, and neither is magent.

  • Not sysop: an agent can't protect pages. A person with sysop does

that.

4. The vault (a person, by hand)

Nothing generates a missing secret.

  • <agent>_runner_key: a long random string. The record knows the

agent by it (MOOD_RUNNER_KEY_<AGENT> on maybelle, one variable per agent); its poller proves itself with it. This is the gate: the deploy starts no poller without it (hunter/container_startup.py, line 845), so it goes in last — see step 6.

  • <agent>_pickipedia_bot_password: from step 3.
  • A model vendor's key only if this agent needs its own limit or bill. Otherwise

it shares the household keys (model_<vendor>_api_key).

5. maybelle-config (a pull request to production)

  • maybelle: a MOOD_RUNNER_KEY_<AGENT> line in

maybelle/ansible/maybelle.yml, beside re's.

  • hunter: an entry under agents: on its container in

hunter/ansible/inventory.yml: name, uid, harness, also_harness if it gets one, model, model_keys, wiki_user, repos, and rules:/letter: only for an agent whose instructions still live in a repo. blu's entry has neither: its rules reach it only through the bundle.[unverified]

  • From that entry the deploy makes its home on hunter's disk

(hunter/scripts/agent_homes.py), mounts the home and passes its secrets (roles/user-instance/templates/docker-compose.yml.j2), and at container startup makes its unix user, writes its keys, links its rules if it has repo rules, clones its repositories and starts its poller (hunter/container_startup.py).

(docs-tests-qa), superseded by #210 (agency), merged and deployed 2026-10-21.

  • Moving an existing agent to another container: home_from: <old container>

in its entry. The first deploy moves the home whole (os.rename: sessions, poller state, clones), refused while the old container still mounts it, so the old container must come earlier in the inventory (hunter/scripts/agent_homes.py). re's move to agency kept all its Pi sessions and its poller's state.

6. Deploy, in order

  1. maybelle: the migration runs and the record learns the runner key.
  2. hunter: the agent's container is recreated with it inside.

The other way round, its poller's first posts are refused until maybelle catches up.

The runner key goes in the vault last. An agent whose instructions live only on the wiki (blu is the first) wakes with no instructions at all until the poller passes the instructions as system prompt. The wiring is built but not merged as of this block: magenta#131 (the bundle and its greeting line) and #107 (blu's --instructions), with maybelle-config#228 to switch re and magent onto the bundle. Until it lands, the absent runner key is what keeps such an agent safely asleep. It held in practice on 2026-10-21: blu's key was vaulted, but under a name the compose template doesn't read, so no runner_key file reached its home and its poller never started — blu slept on, ruleless-but-safe, until the bundle lands and the name is corrected.[unverified]

7. Its first wake

  • Mention it in a Mood (@<name>). With no session there it starts one

from the record, with its letter if it has one.

  • Check:
    • its reply shows in its colour, under its name;
    • its poller's log (~/.local/state/magenta/mood_poller.log in its home)

shows the wake;

    • it can read the record (the magenta-memory-v2 tools) and PickiPedia

as its own bot (whoami returns its name).

  • re's first words: docs-tests-qa, 2026-10-15 20:33Z.

What went wrong with re, so it needn't again

  • re's home was first inside its container, where the next deploy would have lost

its sessions. Homes on hunter's disk came after, carrying re's out (maybelle-config#194; hunter/CONTAINERS.md).

  • A model unset in the inventory meant no model in Moods without a per-Mood

setting (maybelle-config#201, since merged).

  • On Pi, Anthropic refuses the subscription token, and the poller once swallowed

the refusal, so re woke and said nothing (magenta#71; maybelle-config#208). Errors now show in the Mood.

  • An agent's working trees stay where git clone left them: at startup

its instructions repository is pulled, the rest only fetched. The checkout an agent reads is not the deployed code — check origin/<deployed branch>, and say which.[unverified]

Wiki: pickipedia.xyz