Skip to content

Commit 82ee648

Browse files
author
gluck
committed
skilldocs: what a figaro sees when it sees a system reminder
A figaro reads its own context and had nowhere to learn what the tags in it mean. The index now opens with the four it will actually meet -- board key, study, study:@id, fork -- and says the thing that is easy to get wrong: they are STATE, not the user speaking. forms.md gains the agent-facing half of the same picture: the four species and which of them can reach a context uninvited (one), what a change looks like (folded per window, the value it ENDS at, exists:false for a death), and the two knobs -- the study verbs and system.study_incantation. Not documented, because it does not exist: on-demand recall of a value that was truncated away. Nothing truncates a studied value today; a delta carries it whole. Better to say 'keep them small' than to promise a recall verb that would have to be written first.
1 parent 0bfbb94 commit 82ee648

2 files changed

Lines changed: 50 additions & 0 deletions

File tree

‎skills/figaro/SKILL.md‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,23 @@ A local coding-agent daemon. One static Go binary, three roles: the `CLI` you
99
type at, the `Angelus` supervisor that outlives your shell, and one `Agent` per
1010
conversation. An **aria** is one conversation.
1111

12+
## If you are a figaro, reading your own context
13+
14+
Your context carries `<system-reminder name="…">` blocks. **They are state,
15+
not the user speaking**: the daemon injects them at each turn, and they are
16+
the only way you see anything outside your own conversation.
17+
18+
| tag | what it is |
19+
|---|---|
20+
| `name="<key>"` | one key of **your bound form** (your board): `cwd`, `mantra`, `aria_id`, whatever your outfit set. `figaro set <key> <value>` changes it. |
21+
| `name="study"` | you began or stopped observing a form: `{form, observing, state, version}`. `state` is the whole form as it stood when observation began. |
22+
| `name="study:@id"` | that form **changed**: `{form, changes, set, removed, version}` — and `"exists":false` when it was deleted (the copy survives, so history still renders). |
23+
| `name="fork"` | you are a branch, and where you came from. |
24+
25+
A form you do not study is invisible to you. See [forms.md](forms.md) for the
26+
four species — bound form, unbound form, studied form, role — what arrives on
27+
change, and what configures it.
28+
1229
## The gestures
1330

1431
Nine commands cover almost everything. Exact forms, not summaries.

‎skills/figaro/forms.md‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,39 @@ fig set --id @a1b2c3 target-aria <id> # now it's a ROLE: fig send @a1b2c3 reach
3535
verbs that need a figaro (`send`, `listen`) resolve it *at each
3636
invocation*: repoint the key and the next send reaches the successor.
3737

38+
## What a figaro SEES of all this
39+
40+
Four species, one id namespace, and only one of them reaches your context
41+
uninvited:
42+
43+
| species | what it is | how you see it |
44+
|---|---|---|
45+
| **bound form** | your own board | one `<system-reminder name="<key>">` per key, every turn |
46+
| **unbound form** `@x` | free-standing state, no figaro | not at all, unless you study it |
47+
| **studied form** | an unbound form you observe | a `study` block when you begin, a `study:@x` block on each change |
48+
| **role** | a form carrying `target-aria` | an ordinary form: visible only if you study it. `fig cast` studies it for you |
49+
50+
**On change** you get one `study:@x` block per user message, folded: several
51+
patches inside one window arrive as a single block (`"changes":2`), and it
52+
carries the value the key ENDS at, not the intermediate ones. A deleted source
53+
arrives as `"exists":false` — its copy outlives it, so the history you were
54+
shown still makes sense. Values are **not truncated**: a delta carries the
55+
whole changed value, so keep studied values small if context matters.
56+
57+
**What configures it**
58+
59+
- `fig study @x` / `fig drop @x` — the subscription itself. It lives on your
60+
board as `system.studies`, which is system-managed: only the verbs write it.
61+
- `system.study_incantation` on **your own board**: `{onstudy, onupdate,
62+
ondrop}`, a sentence added to each event so a figaro is told what the change
63+
MEANS to it, not just what changed.
64+
- Nothing else. There is no per-key filter today: a studied form is mirrored
65+
whole.
66+
67+
**Recommended**: put a short primer in your **base outfit** — every key an
68+
outfit sets becomes a reminder of that name, so every figaro you ever mint
69+
inherits it. One key, a few lines, and no figaro has to be told twice.
70+
3871
## What refuses, and why
3972

4073
- `fig send @x` on a plain (non-role) form: *"@x is a form, not a

0 commit comments

Comments
 (0)