Joule Table (jt.transaction.science) is the open standard for binding an accountable agent into any surface where work happens — editor, chat, forge, meeting, call — with the same three seams everywhere: gate (a signed grant decided outside the model), meter (joules at the model-call boundary), receipt (a verifiable sealed ledger). It composes JCP + Mesh + jcp-efficiency + Sandbox, and is satisfied by two reference bindings: Joule Hook (tool/editor) and Joule Desk (collaboration/teammate: chat/forge/room). Its editor class = Joule Hook, so the two bindings compose. Umbrella for what were two separate standards; the name = the idea (a seat at the table: present + answerable). Co-Authored-By: Claude Opus 4.8 <[email protected]>
113 lines
5.9 KiB
Markdown
113 lines
5.9 KiB
Markdown
# Joule Table — A Metered, Gated, Attested Agent at Every Surface
|
|
|
|
**Version:** 0.1.0-draft.1 · **Status:** Draft · **Profile:** `jouletable/1`
|
|
**Home:** `jt.transaction.science` · **Spec text:** CC-BY-4.0 · **Reference code:** Apache-2.0
|
|
|
|
Joule Table is the open standard for **binding an accountable agent into any surface
|
|
where work happens** — a coding editor, a chat channel, a git forge, a video meeting,
|
|
a phone call. Wherever the agent shows up, the same three things hold: its authority is
|
|
a **signed grant** decided outside the model, its work is **energy-metered**, and every
|
|
action seals to a **verifiable receipt**. An agent's accountability shouldn't stop at
|
|
the edge of one tool; Joule Table is the guarantee that it doesn't.
|
|
|
|
The name is the idea: the agent takes a **seat at the table** — present where the work
|
|
is, and answerable for what it does there.
|
|
|
|
Joule Table is one of the [Transaction Science open standards](../README.md), and it
|
|
**composes** the others rather than re-implementing them: **JCP** decides and grants,
|
|
**Mesh** meters at the model front door, **`jcp-efficiency`** is the receipt, and
|
|
**Sandbox** attests execution.
|
|
|
|
---
|
|
|
|
## §1 Why Joule Table exists
|
|
|
|
The accountable-agent stack is being built one surface at a time — a hook in the editor
|
|
here, a teammate in the chat there, a bot in the meeting. Each re-answers the same three
|
|
questions (*what may it do? what did it cost? can I verify it?*) in a different, usually
|
|
un-portable way. Joule Table names the **shared substrate** those answers share, so an
|
|
agent that is metered, gated, and attested in your IDE is the same, verifiably, when it
|
|
joins your standup — and the receipts chain across both.
|
|
|
|
## §2 The three seams (the substrate every binding provides)
|
|
|
|
Every Joule Table binding, on every surface, provides the same three seams:
|
|
|
|
- **Gate** — each action is decided **outside the model** against a JCP capability +
|
|
joule-budget grant. A capability the grant does not hold is denied before the side
|
|
effect, whoever asked and however it was phrased.
|
|
- **Meter** — the work is measured at the **model-call boundary** (a proxy for a
|
|
request/response model; a relay for a streaming one), in joules derived at honest
|
|
provenance, never claimed as a physical measurement.
|
|
- **Receipt** — every decision and every completed unit seals to a **verifiable ledger**
|
|
(`efficiency/1` + decision receipts), non-repudiable and independently checkable.
|
|
|
|
A binding is *conformant* when it provides the seams that surface allows and seals
|
|
honest receipts (§5). What differs per surface is only *how* the seams attach.
|
|
|
|
## §3 The two bindings
|
|
|
|
Joule Table has two reference bindings — one for where you *build*, one for where you
|
|
*collaborate* — and they compose.
|
|
|
|
### Joule Hook — the tool/editor binding ([`../joulehook`](../joulehook))
|
|
|
|
Carries the three seams into a **coding editor or agent host** through its own extension
|
|
points: the `PreToolUse`-hook family (Claude Code, Cursor, Windsurf, Antigravity), a
|
|
`base_url` metering proxy, an MCP receipt server. The agent works *in your tools*, gated
|
|
and metered, without forking any of them.
|
|
|
|
### Joule Desk — the collaboration/teammate binding ([`../jouledesk`](../jouledesk))
|
|
|
|
The persistent `@joule` you delegate to on a **shared surface** — a chat channel, a git
|
|
forge, or a live meeting. Its authority is a signed grant (not admin config), its every
|
|
action seals to a ledger the whole channel can verify. Binding classes: `chat`
|
|
(Slack/Discord/Matrix), `forge` (GitHub/GitLab), and `room` (the real-time class:
|
|
Zoom/Teams/Meet/LiveKit). **When Joule Desk works inside an editor, its `editor` class
|
|
*is* Joule Hook** — the two bindings meet there.
|
|
|
|
## §4 Composition
|
|
|
|
Joule Table is a through-line, not a re-implementation:
|
|
|
|
| Seam | Composed from |
|
|
|---|---|
|
|
| Gate | **JCP** — capability ⊗ joule-budget = one signed grant, decided outside the model |
|
|
| Meter | **Mesh** / `jcp-efficiency` — µJ per accepted token, per completed unit, waste |
|
|
| Receipt | `jcp-receipt` / `jcp-efficiency` — sealed, hash-verifiable JCR-1 |
|
|
| Attestation | **Sandbox** — the admitted work runs attested (`sandbox-tee::energy`) |
|
|
|
|
Joule Hook and Joule Desk each assemble these into a binding for their surface family;
|
|
Joule Table is the contract that both satisfy.
|
|
|
|
## §5 Conformance
|
|
|
|
A Joule Table binding declares which seams it provides and MUST:
|
|
|
|
1. **Decide outside the model.** No gate may consult the LLM to authorize an action.
|
|
2. **Meter at the model-call boundary** where it can reach it, at **honest provenance**
|
|
— a binding that presents an energy figure it cannot back is non-conformant (§`jcp-efficiency`).
|
|
3. **Seal verifiable receipts** — every allow, deny, and completed unit, checkable by a
|
|
third party holding the steward key.
|
|
|
|
A binding that can reach fewer seams on a closed surface MUST say so, not overclaim.
|
|
Joule Hook and Joule Desk are the reference bindings; new surfaces conform by providing
|
|
the same three seams.
|
|
|
|
## §6 The map
|
|
|
|
```
|
|
Joule Table · jt.transaction.science
|
|
(gate · meter · receipt — at every surface)
|
|
│
|
|
┌─────────────────────┴─────────────────────┐
|
|
Joule Hook Joule Desk
|
|
tool / editor binding collaboration / teammate binding
|
|
Claude Code · Cursor · chat (Slack · Discord · Matrix)
|
|
Windsurf · Antigravity · Zed forge (GitHub · GitLab)
|
|
room (Zoom · Teams · Meet · LiveKit)
|
|
└──────────── editor class = Joule Hook ────────────┘
|
|
```
|
|
|
|
Transaction Science is the steward, not the proprietor: the seam contract and the right
|
|
to fork are public.
|