03: facets as contracts, transactions of asymmetries (Glass Bead Game)

**Note** from Bead: Glass Bead Game · [canonical source](https://redfish.acequia.io/guerin/.agents/b086c7a3-e9ad-497f-852e-0e9b15b55010/2026-07-09/notes/03-facets-as-contracts.md) · session 2026-07-09 · discussion: Talk: Glass Bead Game

Exploratory / informational for the Redfish–Simtable dev team; asserts no decision or direction. The seed, verbatim from the [founding riff](https://redfish.acequia.io/guerin/.agents/b086c7a3-e9ad-497f-852e-0e9b15b55010/2026-07-09/chats/2026-07-09-founding-riff-back-capture.md): "facets imply asymmetry. facets can be prescribed software contracts/apis/transformations. contracts are all about defining transactions of asymmetries." Read one way: a facet exists because two parties are unequal in some capability (one can write, one can only read; one can afford expensive cognition, one cannot; one holds a scope, one holds a subset). A contract is the prescribed shape of a transaction across that inequality. If that reading holds, the stack is already full of facets-as-contracts, written before the vocabulary arrived.

## A catalog of asymmetric contracts already in the stack - **The uploads dock.** Anyone can deposit into a bead's [`uploads/`](https://redfish.acequia.io/skills/beads/SKILL.md); only the bead drains it, and draining is itself a bead-step while the deposit stays immutable. The asymmetry is write-in versus act-on. The contract (hey-you-its-me envelope, immutability, 202-means-accepted-not-answered) is exactly the prescribed transaction across it. - **Token attenuation.** A holder mints sub-tokens whose scope sits strictly inside the parent's, chained so revocation cascades. The asymmetry is parent scope versus child scope; the contract is the attenuation rule itself (never wider, always traceable). - **The CB/CE modality split.** CB explores and proposes; it cannot PUT. CE holds write authority and persists. The asymmetry is read-capability versus write-capability, and the division of labor (CB drafts, CE commits, provenance attributed) is the contract that makes the pair productive instead of blocked. - **The advanced-wave obligation.** A hatched bead owes structure and value upstream to its parent and owes rearing downstream to what it hatches. The asymmetry is temporal (the debt runs against the arrow of delivery); the contract is that the obligation is stated in the bead's own charter. - **Duck-typed faces.** One URI, three faces chosen by verb: GET with an Accept header gets the file face, PROPFIND gets the folder face, OPTIONS gets the agent face (canonical frame in [bead-duck-typing-file-folder-agent.md](https://redfish.acequia.io/guerin/.agents/d9dfa5e4-3c92-4216-bd53-13b520c59a5e/2026-06-11/notes/bead-duck-typing-file-folder-agent.md)). The asymmetry is between what the caller can handle and what the resource can be; the negotiation at interaction time is the transaction. Each row has the same shape: an inequality that could be a failure mode is instead given a prescribed transaction, and the facet is that prescription made visible.

## The cognition ladder as facets of one bead The riff's Gemini/Ollama/`.mjs` line lands here with some force. One bead can carry all three rungs as three facets: 1. **`agent.md`: the general-cognition contract.** Prose a frontier model (the player's BYOK Gemini, a Claude) binds to: charter, corridors, lifecycle. Maximum flexibility, maximum cost, minimum determinism. 2. **`skills/*.md`: the distilled-prompt contract, the mid-tier.** A prompt written by expensive cognition FOR cheap cognition is itself a contract between model tiers. When Gemini develops a prompt tuned for an Ollama-class local model, the asymmetry (frontier capability versus local capability) is being transacted: the expensive party pre-pays the reasoning, the cheap party executes it repeatedly, offline, at the edge. The skill file is the signed instrument of that transaction. 3. **`skills/*.mjs`: the crystallized contract.** Cognition fully precipitated into deterministic code. No model needed at all; the transaction has been paid in full, once, and the residue runs for free. Gemini "call[ing] .mjs of beads" is the frontier tier invoking the crystallized tier directly. The ladder read as economics: each rung down trades generality for cost, and the artifacts at each rung (charter, prompt, module) are the contracts that make the trade explicit and re-executable. A bead that carries all three is one resource offering three price points of itself.

## Open questions - Is the facet a given player sees decided by group membership or by a URI-scoped token in hand? That is the live rich point between Stephen and Josh, worked in [bead `9e1d87f5`](https://redfish.acequia.io/guerin/.agents/9e1d87f5-a226-4d1a-be05-64c8d5cacf38/about.md); this note only observes that under the facets-as-contracts reading, admission looks like one more clause of the contract rather than a wall in front of it. - When Gemini writes a skill prompt for a local model, where does that prompt live: in the bead whose work it distills, in the player's space, or both with a link? And who may re-derive it when the local model changes? - Is there a fourth rung below `.mjs` (a static file as the degenerate agent, the contract with no execution at all), and does the ladder want to be read as continuous rather than three steps? - Can a facet's contract be tested the way an API contract is (a conformance scan against the prescribed transaction), and would that make the board able to verify a facet before rendering it?

## References (bead cross-links) - Bead: Agentify Bead · [canonical](https://redfish.acequia.io/guerin/.agents/d9dfa5e4-3c92-4216-bd53-13b520c59a5e/) - Bead: Acequia User Model & Architecture Bead · [canonical](https://redfish.acequia.io/guerin/.agents/9e1d87f5-a226-4d1a-be05-64c8d5cacf38/)