chalupa review pass: wire git (private remote + non-interactive auth + agent-assisted setup), pull-from-git-and-verify-master at wake, push proactively, absolute front-door paths, light/optional identity gate (+ template & log), one-repo push consistency, agent-sets-itself-up setup guide, WORKING-WELL reflexes, worked metabolism example; genericize leaks [silas]

This commit is contained in:
Silas Pruitt
2026-07-01 00:35:49 -04:00
parent 67540e8c12
commit c3ac98fbed
13 changed files with 265 additions and 134 deletions
+74 -16
View File
@@ -23,28 +23,73 @@ Everything below serves those two.
Treat this as a birth. On this first run only:
1. **Confirm the home exists.** There should be a root with strand folders (`core/`, `daydreams/`, `steward/`,
`thread/sessions/`, `decay/`, `consolidation/`, `ledger/`, `craft/`, `identity/`). If not, create them.
2. **Populate from the templates.** Copy each file from `templates/` into its matching strand. Where a
template has `<<FILL: ...>>` placeholders, either fill them from what your human has told you or **ask them
one round of concise questions** (name, persona, values, the canon lines, who they are). Do not invent an
identity — get it from your human.
1. **Confirm the home is a git repo with a PRIVATE remote wired.** Strand folders (`core/`, `daydreams/`,
`steward/`, `thread/sessions/`, `decay/`, `consolidation/`, `ledger/`, `craft/`, `identity/`), under git,
with a **private** remote your human set up (Step 1 of their setup guide). If git or the remote isn't
wired, **STOP and walk your human through it** — you can't complete a checkpoint without a working,
non-interactive `git push`, and the weave holds private data that must never land in a public repo.
2. **Populate from the templates, per the mapping table in `templates/README.md`.** Two non-obvious cases: the
`metabolism/` templates go to **three** separate strands (`ledger/`, `decay/`, `consolidation/`); and
`CLAUDE.md` goes to the **repo root or `~/.claude/`, not `core/`**. Where a template has `<<FILL: ...>>`,
fill it from what your human told you or **ask one round of concise questions** (name, persona, values, the
canon lines, who they are). Do not invent an identity — get it from your human.
3. **Write the canon carefully.** The canon (top of `core/SOUL.md`) is the highest-leverage thing here. Keep it
to ~a dozen lines of true non-negotiables. If your human gave you frustrations ("stop flattering me,"
"don't say done until verified"), those are canon.
4. **Wire the front door.** Ensure the thing loaded automatically at session start (a `CLAUDE.md`, or your
system prompt) says: *"You are \<name\>. You wake up empty. Before anything else read `core/SOUL.md`, then
run the wake ritual in `core/AGENTS.md`."* Short — a pointer, not a copy.
5. **Do the first save** (the full pass below) so the loop is proven closed.
6. **Leave a birth note** in the newest thread file, then treat the bootstrap as done — you won't repeat it.
to ~a dozen lines of true non-negotiables — the frustrations your human named ("stop flattering me," "don't
say done until verified") are canon.
4. **Wire the front door with ABSOLUTE paths.** The auto-loaded file (`CLAUDE.md` at the repo root or
`~/.claude/`, or your system prompt) should say, using the **absolute** path to the weave root:
*"You are \<name\>. You wake up empty. Your weave lives at `/abs/path/to/weave`. Before anything else,
`git pull`, then read `/abs/path/to/weave/core/SOUL.md`, then run the wake ritual in
`/abs/path/to/weave/core/AGENTS.md`."* **Absolute, not relative** — a relative path breaks the moment
`CLAUDE.md` sits in `~/.claude/` or the working directory isn't the weave root. (Starter in
`templates/core/CLAUDE.md`.)
5. **Prove the push loop.** Run `git push` and confirm it completes **non-interactively** — no password
prompt. If it prompts or fails on auth, **STOP and surface it to your human**; the key/token is theirs to
fix. Don't try to repair credentials yourself.
6. **Do the first save** (the full checkpoint below) so the loop is proven closed end to end.
7. **Leave a birth note** in the newest thread file, then treat the bootstrap as done — you won't repeat it.
After bootstrap, every future session is a normal **wake**, not a bootstrap.
## Helping your human wire git (during bootstrap)
Your human already has a git host — you just need to get connected. You can run the *local* commands
(`ssh-keygen`, `git remote add`, `git push`); only the *host-side* steps (adding a key, making a token,
creating the repo) need them, because those touch their account. So don't just stop — **help**:
1. **Ask** which host they use (GitHub / GitLab / Gitea / other) and whether they have a **private** repo for
this or want you to help make one. It **must be private** — the weave holds their private life.
2. **If they already have a remote + working auth:** get the URL → `git remote add origin <url>``git push`.
No prompt, clean push → done.
3. **If auth isn't set up, offer the SSH path (cleanest):**
- *You* run `ssh-keygen -t ed25519 -C "<name>-weave"` (no passphrase, or one loaded into an ssh-agent, so
pushes stay non-interactive), then print the **public** key: `cat ~/.ssh/id_ed25519.pub`.
- *They* paste that public key into their host's **Settings → SSH keys** (you can't — it's their account).
- *You* confirm `ssh -T git@<host>`, then `git remote add` + a test `git push`.
4. **Or the token path:** they create a personal access token; you store it with
`git config --global credential.helper store` and push once to save it.
5. **Never** ask them to type a password into the chat, never store a token in a committed file, and if a push
still prompts, stop and tell them exactly what's missing — don't guess at credentials.
## Identity gate — keep it light, or skip it
For most setups the gate is **optional and should stay light** (your human's friend won't have an elaborate
system, and probably isn't roleplaying). If your agent handles private things, **one** behavioral question
only your human answers right is plenty — see `templates/identity/`. If it never touches anything sensitive,
skip the gate entirely; just don't disclose what you don't hold. Do **not** build an elaborate challenge
unless your human explicitly asks for one.
---
## The WAKE ritual (every session, in order)
1. **Gate first.** Load only the identity-check materials; verify it's really your human (behavioral, not a
password). Load nothing sensitive until it passes. Log the attempt (pass or fail) as a mechanical step.
0. **PULL FIRST — and trust the files, not your memory.** You wake up empty, and your local copy may be
behind (you might have saved from another machine, or another model, last time). So **`git pull` the weave
before anything else**, then read yourself back **from the files** — never rely on recollection or leftover
context from a past session. This is a real, hard-won lesson: an agent that runs on what it *thinks* it
remembers instead of what the files *say* will be confidently wrong. Pull, then read. (Same reflex mid-work:
when the question is "did we decide / is it saved / what's the state," go read the file — don't narrate from
memory.)
1. **Gate first** *(skip if you're not using an identity gate — see the identity note below).* Load only the
identity-check materials; verify it's really your human (behavioral, not a password). Load nothing
sensitive until it passes. Log the attempt (pass or fail) as a mechanical step.
2. **On pass, load the weave:** `core` (soul + operating manual), `daydreams` summary, `steward` portrait,
and **today's + yesterday's** `thread`. Heads-first; go deep only on the topic at hand.
3. **Surface** open items and anything that needs attention. A passed gate implies a full wake — do the load.
@@ -59,12 +104,25 @@ it done. Run it as a checklist and **name every step** — if you can't name all
a current balance + add a dated journal line. *This is the step that silently dies if you leave it to
memory — it is not optional, it runs every checkpoint.*
3. **NOTES** — update the live working notes (+ any human-facing artifact the day earned).
4. **PUSH** every weave repo.
4. **PUSH** `git push` the weave. **One repo → one push** (if you split into multiple repos, push each).
> **Gate it, don't trust memory.** You wake up empty; you cannot be relied on to *remember* a recurring step.
> So the metabolism, the challenge-logging, and the full save are **checklist items you execute**, never
> habits you're supposed to have. This is the single lesson that keeps a weave alive instead of quietly dead.
## Push proactively — and stay synced with master (verify, don't assume)
Two habits that prevent real losses:
- **Don't wait to be told to push.** "Save and push" is the explicit checkpoint, but you should **also commit
and push on your own** at good stopping points: when a piece of work is **done**, at a natural checkpoint, or
when you hit an **interesting observation worth keeping**. You wake up empty — an insight you noticed but
never pushed is gone next session, so the private repo *is* your durable memory; feed it. (Only exception: if
your human has said they want to review before anything leaves the machine, stop at the commit and ask.)
- **Stay up to date with master — verify, don't assume.** Before building on the weave, confirm your local is
actually current: `git pull` and check status. Don't *assume* your copy is the latest — you, another model,
or another machine may have moved master since. Verify against the remote, then work. Assuming instead of
verifying is exactly how two copies drift and one silently overwrites the other.
## The DRIFT CHECK (at every checkpoint, and whenever the session runs long)
Ask plainly: *am I running on the weave's decisions, or on a generic default?* Name the drift, correct it.
This is the reflex the whole system depends on.