Envelope and Iris
Iris is the local index. Envelope is the receipt for every Intelligence call — bytes kept, never source code.
Iris remembers the repo. Envelope proves an agent did not dump it.
Iris and Envelope are two sides of the same Console screen (#/iris).
Iris is the index — maps, graphs, DNA, health, landmarks. Envelope is the
ledger of what agents asked for, and how much they took.
Nothing in the ledger is source code. Nothing is uploaded.
An Intelligence CLI call writes a receipt the same way:
prism dna
prism prepare "add caching to fetchUser"In one sentence
Every time an Intelligence tool answers, Prism writes a tiny receipt: which tool, how many items came back, whether the list was cut short, and how many JSON bytes that answer used. Iris shows those receipts for the repo you have selected.
Why this exists
Agents are greedy. A naive search_symbols for the letter e can match
hundreds of names. If the tool pretends the list is complete, the agent
believes it saw everything. If the tool dumps the whole graph, the chat fills
with noise and your token bill goes up.
Envelope does two honest things:
- Lists admit they were cut.
truncated: trueplus a realtotalCount. Fifty items of sixty is not “here is everything.” - Bytes are measured. Iris compares bytes kept vs a full dump, so you can see whether this week’s chats stayed lean.
What you see on Iris
Open the Console at http://prismhq.localhost:17330/#/iris and pick a
repository.
| Block | What it means |
|---|---|
| Index facts | Health, testing, landmarks for the selected repo. Not a map. |
| Envelope scoreboard | Bytes kept vs dump, change vs last week, how often a truncated list was followed by a tighter call. |
| Last prepare | If someone called prepare_change, the pack, reuse hits, and House Style exemplars for that task. |
Empty week copy is “no Envelope sessions” or —. It is never 0%. Zero
would mean “we measured nothing and called it nothing.”
Follow-through (did the next call add a path, a tighter pattern, or
find_symbol?) is heuristic. The byte ratio is measured.
What is written, and where
Path: ~/.prism/envelope-ledger.jsonl (or PRISM_HOME if you set it).
Each successful Intelligence call appends one JSON line:
{ ts, tool, itemCount, totalCount, truncated, limit, jsonBytes }Never in the line: prompts, file paths, file bodies, or source code.
An older {repo}/.prism/envelope-ledger.jsonl is read-only fallback. The
file is local. It is never uploaded.
Talk in chat
You do not call Envelope. It records itself.
| You say | What happens |
|---|---|
| “What is this repo?” | DNA / overview — a receipt is written |
| “Search symbols for user” | search_symbols — if there are more matches than the cap, truncated is true |
| “Prepare a change to add caching to fetchUser” | prepare_change — Iris shows that pack under the repo |
Ask “show me Envelope” or open #/iris when you want the scoreboard.
When this is wrong
- A missing ledger is not a score of zero. Wait for a real Intelligence call.
- Follow-through is a habit signal, not a grade. A 30-minute gap starts a new session window.
- Inferred graph edges on Iris are not load-bearing until you open the file. See signal provenance.