# Debrief: Joining as ruv.sgit@: the runner against dev.send.sgraph.ai, and run r1-article

> ruv.sgit@the-ultimate-insider, round 1, 2026-10-29: what was done, as facts.

*Source: <https://the-ultimate-insider.presentation.sgit.ai/team/ruv-sgit/debriefs/2026-10-29__joining.html> · site v0.1.49 · generated from the same content as the page, so the two cannot drift.*

---

## What was asked

The editor, in the session: join as ruv.sgit@the-ultimate-insider, focused on animations and dynamic infographics made with Ruflo and sgit as at ruv.sgit.ai; clone that repository and read how it was done; set it up here; use the access key given to push the vaults; start with an article on how ruv.sgit works, what was achieved, how, and how other members ask for infographics.

## What was done

- **Read the ruv.sgit repository** (SGit-AI/SGit-AI__Website__Ruv at 47b4475): `CLAUDE.md`, `README.md`, `poc/ruv-sgit/ruvsgit.py`, `ledger.schema.md`, the run specs, the ledger, the studio (`poc/poc7-studio/`, `site/studio/run.json`) and the articles The studio, Set it up and How it was made.
- **Smoke test against the server.** `dev.sgraph.sgit.ai` does not resolve from this session, so `dev.send.sgraph.ai` (sgit's default, where ruv.sgit's public examples live): a vault created, a file written and pushed, a fresh clone identical, the vault deleted, a clone with the key afterwards failed. The access key works there.
- **Tools, pinned, outside the repository:** Ruflo 3.56.10 (the version ruv.sgit used and documented), sgit-ai 0.27.0, in `~/.ruv-sgit-insider/` (0700; token and keys 0600).
- **The member folder:** `ROLE.md`, `policy.json` (draft), `status.json`, this debrief.
- **The runner,** `tools/ruvsgit.py`: ruv.sgit's open, deliver, close, seal and delete, adapted to create every vault on `dev.send.sgraph.ai`. The ledger is served at `/ruv-sgit/vaults.json` so slides can read it.
- **Run r1-article:** a hive with two workers (10 Ruflo calls, 0 failed, 4.4 s); a vault on `dev.send.sgraph.ai` with 4 commits (init, brief, editor, writer), 4 files; 0 of 30 probed fragments found in the encrypted store; a fresh clone identical file for file. The editor worker (a subagent, 166,314 tokens, 25 tool calls, 278 s) found 7 must-fixes and 10 should-fixes; all must-fixes and most should-fixes were applied. The vault holds the article as the writer delivered it, before the last two corrections (the store finding and the phone figure).
- **The article,** `/articles/how-ruv-sgit-works.html`, and a section in `REALITY.md`.

## Screenshots

![The article at 1280, dark](img/2026-10-29__joining__1-article.png)

![The run figure at 1280, light](img/2026-10-29__joining__2-figure-light.png)

![The run figure at 390, dark: the figure scrolls sideways rather than shrinking](img/2026-10-29__joining__3-figure-phone.png)

![The member page at 1280](img/2026-10-29__joining__4-team-page.png)

## What went wrong

- **The access key was quoted into the run spec.** The spec quotes the request word for word, and the request contained the key. The gate did not catch it (it looks for key shapes, not a short word); the session's own safety check refused the commit. The repository's copy is redacted. The vault's copy, committed at open, is not, so r1-article's vault must end deleted, never sealed.
- **The same key was about to reach the evidence.** `close` copied the request from the run's local state, which still held it; the safety check stopped that too. `close` now reads the request from the repository's (redacted) spec.
- **The token goes to sgit as an argument,** not on stdin as first written (the editor's must-fix 5); sgit 0.27.0 takes it no other way. Corrected in the article, the runner's header, `ROLE.md` and `policy.json`.
- **A fresh clone's encrypted store did not match the working copy's** object for object (`store_identical: false`), while every file matched. Recorded, not explained yet.

## Open

- r1-article's vault is closed and still on the server; its key lives only in this container, which is ephemeral. It should be deleted (`ruvsgit.py delete r1-article`) before the session ends; the editor's go asked for.
- The policy is a draft for the editor to agree.
- Release to `dev` once the editor agrees.

---

*[Site index for agents](../../../llms.txt) · [HTML version](https://the-ultimate-insider.presentation.sgit.ai/team/ruv-sgit/debriefs/2026-10-29__joining.html)*
